ETH Price: $3,526.80 (-8.07%)

Token

ERC-20: BitStable (BSSB)
 

Overview

Max Total Supply

1,000,000,000 BSSB

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,901,214.396584746 BSSB

Value
$0.00
0x72Ac36A3A4Fa5Bfd939f44a55583116Fe10d6faC
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BSSB

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-09
*/

/**
BitStable is a pioneering decentralized asset protocol on the Bitcoin blockchain, offering a unique framework for the creation, trade, and management of synthetic assets. It enhances asset liquidity on the Bitcoin chain through a dual-token system and a cross-chain compatible structure.

Website: https://www.bitstablefinance.org
Telegram: https://t.me/bitstable_erc
Twitter: https://twitter.com/bitstable_erc
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.21;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function set(address) external;
    function setSetter(address) external;
}

interface IRouterV2 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract BSSB is Context, IERC20, Ownable {
    using SafeMath for uint256;
        
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 10 ** 9 * 10 ** 9;

    uint256 public maxTx = 25 * 10 ** 6 * 10 ** 9;
    uint256 public maxWalletAmount = 25 * 10 ** 6 * 10 ** 9;
    uint256 public feeSwapThreshold = 10 ** 4 * 10 ** 9; 
    
    string private _name = "BitStable";
    string private _symbol = "BSSB";

    uint256 public feeWeightLp = 0;
    uint256 public feeWeightMkt = 10;
    uint256 public feeWeightDev = 0;
    uint256 public feeWeightTotal = 10;

    uint256 public lpFeeForSells = 0;
    uint256 public mktFeeForSell = 25;
    uint256 public devFeeForSell = 0;
    uint256 public totalFeeForSells = 25;

    uint256 public lpFeeForBuys = 0;
    uint256 public mktFeeForBuys = 25;
    uint256 public devFeeForBuys = 0;
    uint256 public totalFeeForBuys = 25;

    address payable private feeReceiver1;
    address payable private feeReceiver2;

    IRouterV2 public uniswapRouter;
    address public uniswapPair;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExcludedLimit;
    mapping (address => bool) public isExcludedMaxWallet;
    mapping (address => bool) public isExcludedMaxTx;
    mapping (address => bool) public lpPairs;
    
    bool swapping;
    bool public swapFeeActivated = true;
    bool public maxTxInEffect = false;
    bool public maxWalletInEffect = true;

    modifier lockSwap {
        swapping = true;
        _;
        swapping = false;
    }
    
    constructor () {
        _balances[_msgSender()] = _totalSupply;
        IRouterV2 _uniswapV2Router = IRouterV2(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapPair = IFactoryV2(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapRouter = _uniswapV2Router;
        _allowances[address(this)][address(uniswapRouter)] = _totalSupply;
        feeReceiver1 = payable(0x0E34F3953E78eA9F436303d53B44834e1Cd66232);
        feeReceiver2 = payable(0x0E34F3953E78eA9F436303d53B44834e1Cd66232);
        totalFeeForBuys = lpFeeForBuys.add(mktFeeForBuys).add(devFeeForBuys);
        totalFeeForSells = lpFeeForSells.add(mktFeeForSell).add(devFeeForSell);
        feeWeightTotal = feeWeightLp.add(feeWeightMkt).add(feeWeightDev);
        
        isExcludedLimit[owner()] = true;
        isExcludedLimit[feeReceiver1] = true;
        isExcludedMaxWallet[owner()] = true;
        isExcludedMaxWallet[address(uniswapPair)] = true;
        isExcludedMaxWallet[address(this)] = true;
        isExcludedMaxTx[owner()] = true;
        isExcludedMaxTx[feeReceiver1] = true;
        isExcludedMaxTx[address(this)] = true;
        lpPairs[address(uniswapPair)] = true;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
        
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
                
    function _transferStandard(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();

        _approve(address(this), address(uniswapRouter), tokenAmount);

        // make the swapBackFeeToken
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }
    
    function getFinalAmountWithoutFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 fee = 0;
        if(lpPairs[sender]) {fee = amount.mul(totalFeeForBuys).div(100);}
        else if(lpPairs[recipient]) {fee = amount.mul(totalFeeForSells).div(100);}
        if(fee > 0) {
            _balances[address(this)] = _balances[address(this)].add(fee);
            emit Transfer(sender, address(this), fee);
        }
        return amount.sub(fee);
    }
    
    receive() external payable {}
    
    function sendETHToFee(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function removeLimits() external onlyOwner {
        maxTx = _totalSupply;
        maxWalletInEffect = false;
        mktFeeForBuys = 3;
        mktFeeForSell = 3;
        totalFeeForBuys = 3;
        totalFeeForSells = 3;
    }
    
    function swapBackFeeToken(uint256 tAmount) private lockSwap {
        uint256 lpFeetokens = tAmount.mul(feeWeightLp).div(feeWeightTotal).div(2);
        uint256 tokensToSwap = tAmount.sub(lpFeetokens);

        swapTokensForETH(tokensToSwap);
        uint256 ethCA = address(this).balance;

        uint256 totalETHFee = feeWeightTotal.sub(feeWeightLp.div(2));
        
        uint256 amountETHLiquidity = ethCA.mul(feeWeightLp).div(totalETHFee).div(2);
        uint256 amountETHDevelopment = ethCA.mul(feeWeightDev).div(totalETHFee);
        uint256 amountETHMarketing = ethCA.sub(amountETHLiquidity).sub(amountETHDevelopment);

        if(amountETHMarketing > 0)
            sendETHToFee(feeReceiver1, amountETHMarketing);

        if(amountETHDevelopment > 0)
            sendETHToFee(feeReceiver2, amountETHDevelopment);
    }
    
    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(swapping)
        { 
            return _transferStandard(sender, recipient, amount); 
        }
        else
        {
            if(!isExcludedMaxTx[sender] && !isExcludedMaxTx[recipient]) {
                require(amount <= maxTx, "Transfer amount exceeds the maxTx.");
            }            

            uint256 swapAmount = balanceOf(address(this));
            bool minimumSwap = swapAmount >= feeSwapThreshold;
            
            if (minimumSwap && !swapping && lpPairs[recipient] && swapFeeActivated && !isExcludedLimit[sender] && amount > feeSwapThreshold) 
            {
                if(maxTxInEffect)
                    swapAmount = feeSwapThreshold;
                swapBackFeeToken(swapAmount);    
            }

            uint256 finalAmount;                                         
            if (isExcludedLimit[sender] || isExcludedLimit[recipient]) {
                finalAmount = amount;
            } else {
                finalAmount = getFinalAmountWithoutFee(sender, recipient, amount);
            }
            if(maxWalletInEffect && !isExcludedMaxWallet[recipient])
                require(balanceOf(recipient).add(finalAmount) <= maxWalletAmount);

            uint256 amountToReduce = (!maxWalletInEffect && isExcludedLimit[sender]) ? amount.sub(finalAmount) : amount;
            _balances[sender] = _balances[sender].sub(amountToReduce, "Insufficient Balance");
            _balances[recipient] = _balances[recipient].add(finalAmount);
            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeForBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeForSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWeightDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWeightLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWeightMkt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWeightTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeForBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeForSells","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktFeeForBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktFeeForSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFeeActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeForBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeForSells","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IRouterV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6001805460ff60a01b1916600960a01b179055670de0b6b3a76400006002556658d15e1762800060038190556004556509184e72a00060055560c06040526009608090815268426974537461626c6560b81b60a0526006906200006390826200062e565b506040805180820190915260048152632129a9a160e11b60208201526007906200008e90826200062e565b505f6008819055600a6009819055818155600b55600c8190556019600d819055600e829055600f81905560108290556011819055601291909155601355601e805463ffffff0019166301000100179055348015620000ea575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600254335f9081526018602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa1580156200018f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b59190620006f6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000201573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002279190620006f6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000272573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002989190620006f6565b601780546001600160a01b039283166001600160a01b0319918216179091556016805492841692821683179055600254305f9081526019602090815260408083209583529490529290922091909155601480548216730e34f3953e78ea9f436303d53b44834e1cd66232908117909155601580549092161790556012546011546010546200033492916200032d919062000520565b9062000520565b601355600e54600d54600c546200035292916200032d919062000520565b600f55600a546009546008546200037092916200032d919062000520565b600b556001601a5f6200038a5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790556014549091168152601a909252812080549092166001908117909255601b90620003e85f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790556017549091168152601b90925280822080548416600190811790915530835290822080549093168117909255601c90620004565f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560145482168152601c845282812080548616600190811790915530825283822080548716821790556017549092168152601d90935291208054909216179055620004ca3390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6002546040516200051191815260200190565b60405180910390a3506200073e565b5f806200052e83856200071e565b905083811015620005855760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005b757607f821691505b602082108103620005d657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000629575f81815260208120601f850160051c81016020861015620006045750805b601f850160051c820191505b81811015620006255782815560010162000610565b5050505b505050565b81516001600160401b038111156200064a576200064a6200058e565b62000662816200065b8454620005a2565b84620005dc565b602080601f83116001811462000698575f8415620006805750858301515b5f19600386901b1c1916600185901b17855562000625565b5f85815260208120601f198616915b82811015620006c857888601518255948401946001909101908401620006a7565b5085821015620006e657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000707575f80fd5b81516001600160a01b038116811462000585575f80fd5b808201808211156200058857634e487b7160e01b5f52601160045260245ffd5b611800806200074c5f395ff3fe608060405260043610610215575f3560e01c80637b0337961161011e578063d338d672116100a8578063e3f9e21a1161006d578063e3f9e21a1461061b578063e76ee23c14610630578063e770b79f1461064e578063eda376c614610663578063f2fde38b14610678575f80fd5b8063d338d6721461056a578063dd62ed3e1461057f578063de287071146105c3578063e09f6b0b146105d8578063e1ab04c9146105ed575f80fd5b80639e16d6bb116100ee5780639e16d6bb146104ed578063a62b9b9514610502578063a9059cbb14610517578063aa4bde2814610536578063c816841b1461054b575f80fd5b80637b033796146104895780638da5cb5b1461049e57806395d89b41146104ba5780639953e177146104ce575f80fd5b806332fb0cde1161019f57806370a082311161016f57806370a08231146103df578063715018a614610413578063735de9f7146104295780637437681e14610460578063751039fc14610475575f80fd5b806332fb0cde1461035957806343cc8c2a1461036e5780635f5f18cd1461039c578063673c6dc2146103b1575f80fd5b80631b968fad116101e55780631b968fad146102ac57806320f0d2ef146102cc57806323b872dd146102fa578063295dff1814610319578063313ce5671461032e575f80fd5b806306fdde0314610220578063095ea7b31461024a57806318160ddd146102795780631828d5b914610297575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b50610234610697565b604051610241919061150b565b60405180910390f35b348015610255575f80fd5b5061026961026436600461156d565b610727565b6040519015158152602001610241565b348015610284575f80fd5b506002545b604051908152602001610241565b3480156102a2575f80fd5b5061028960095481565b3480156102b7575f80fd5b50601e54610269906301000000900460ff1681565b3480156102d7575f80fd5b506102696102e6366004611597565b601c6020525f908152604090205460ff1681565b348015610305575f80fd5b506102696103143660046115b2565b61073d565b348015610324575f80fd5b5061028960115481565b348015610339575f80fd5b50600154600160a01b900460ff1660405160ff9091168152602001610241565b348015610364575f80fd5b5061028960105481565b348015610379575f80fd5b50610269610388366004611597565b601d6020525f908152604090205460ff1681565b3480156103a7575f80fd5b50610289600a5481565b3480156103bc575f80fd5b506102696103cb366004611597565b601a6020525f908152604090205460ff1681565b3480156103ea575f80fd5b506102896103f9366004611597565b6001600160a01b03165f9081526018602052604090205490565b34801561041e575f80fd5b506104276107a6565b005b348015610434575f80fd5b50601654610448906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b34801561046b575f80fd5b5061028960035481565b348015610480575f80fd5b50610427610820565b348015610494575f80fd5b50610289600d5481565b3480156104a9575f80fd5b505f546001600160a01b0316610448565b3480156104c5575f80fd5b50610234610872565b3480156104d9575f80fd5b50601e546102699062010000900460ff1681565b3480156104f8575f80fd5b5061028960085481565b34801561050d575f80fd5b50610289600b5481565b348015610522575f80fd5b5061026961053136600461156d565b610881565b348015610541575f80fd5b5061028960045481565b348015610556575f80fd5b50601754610448906001600160a01b031681565b348015610575575f80fd5b50610289600c5481565b34801561058a575f80fd5b506102896105993660046115f0565b6001600160a01b039182165f90815260196020908152604080832093909416825291909152205490565b3480156105ce575f80fd5b5061028960055481565b3480156105e3575f80fd5b50610289600f5481565b3480156105f8575f80fd5b50610269610607366004611597565b601b6020525f908152604090205460ff1681565b348015610626575f80fd5b5061028960125481565b34801561063b575f80fd5b50601e5461026990610100900460ff1681565b348015610659575f80fd5b50610289600e5481565b34801561066e575f80fd5b5061028960135481565b348015610683575f80fd5b50610427610692366004611597565b61088d565b6060600680546106a690611627565b80601f01602080910402602001604051908101604052809291908181526020018280546106d290611627565b801561071d5780601f106106f45761010080835404028352916020019161071d565b820191905f5260205f20905b81548152906001019060200180831161070057829003601f168201915b5050505050905090565b5f610733338484610974565b5060015b92915050565b5f610749848484610a97565b5061079b8433610796856040518060600160405280602881526020016117a3602891396001600160a01b038a165f9081526019602090815260408083203384529091529020549190610ed4565b610974565b5060015b9392505050565b5f546001600160a01b031633146107d85760405162461bcd60e51b81526004016107cf9061165f565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108495760405162461bcd60e51b81526004016107cf9061165f565b6002546003908155601e805463ff000000191690556011819055600d8190556013819055600f55565b6060600780546106a690611627565b5f61079b338484610a97565b5f546001600160a01b031633146108b65760405162461bcd60e51b81526004016107cf9061165f565b6001600160a01b03811661091b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107cf565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109d65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107cf565b6001600160a01b038216610a375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107cf565b6001600160a01b038381165f8181526019602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610afc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107cf565b6001600160a01b038316610b5e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107cf565b601e5460ff1615610b7b57610b74848484610f0c565b905061079f565b6001600160a01b0384165f908152601c602052604090205460ff16158015610bbb57506001600160a01b0383165f908152601c602052604090205460ff16155b15610c1d57600354821115610c1d5760405162461bcd60e51b815260206004820152602260248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152613c1760f11b60648201526084016107cf565b305f9081526018602052604090205460055481108015908190610c435750601e5460ff16155b8015610c6657506001600160a01b0385165f908152601d602052604090205460ff165b8015610c795750601e54610100900460ff165b8015610c9d57506001600160a01b0386165f908152601a602052604090205460ff16155b8015610caa575060055484115b15610ccf57601e5462010000900460ff1615610cc65760055491505b610ccf82610fef565b6001600160a01b0386165f908152601a602052604081205460ff1680610d0c57506001600160a01b0386165f908152601a602052604090205460ff165b15610d18575083610d26565b610d238787876110f7565b90505b601e546301000000900460ff168015610d5757506001600160a01b0386165f908152601b602052604090205460ff16155b15610d9157600454610d8782610d81896001600160a01b03165f9081526018602052604090205490565b906111f9565b1115610d91575f80fd5b601e545f906301000000900460ff16158015610dc457506001600160a01b0388165f908152601a602052604090205460ff165b610dce5785610dd8565b610dd88683611257565b9050610e3e8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060185f8c6001600160a01b03166001600160a01b031681526020019081526020015f2054610ed49092919063ffffffff16565b6001600160a01b03808a165f908152601860205260408082209390935590891681522054610e6c90836111f9565b6001600160a01b038089165f8181526018602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ebf9086815260200190565b60405180910390a3600194505050505061079f565b5f8184841115610ef75760405162461bcd60e51b81526004016107cf919061150b565b505f610f0384866116a8565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601890915291822054610f5c918490610ed4565b6001600160a01b038086165f908152601860205260408082209390935590851681522054610f8a90836111f9565b6001600160a01b038085165f8181526018602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fdd9086815260200190565b60405180910390a35060019392505050565b601e805460ff19166001179055600b546008545f9161101e916002916110189182908790611298565b90611316565b90505f61102b8383611257565b905061103681611357565b60085447905f906110559061104c906002611316565b600b5490611257565b90505f6110766002611018846110186008548861129890919063ffffffff16565b90505f61109283611018600a548761129890919063ffffffff16565b90505f6110a9826110a38786611257565b90611257565b905080156110c7576014546110c7906001600160a01b0316826114a7565b81156110e3576015546110e3906001600160a01b0316836114a7565b5050601e805460ff19169055505050505050565b6001600160a01b0383165f908152601d6020526040812054819060ff161561113a5761113360646110186013548661129890919063ffffffff16565b9050611177565b6001600160a01b0384165f908152601d602052604090205460ff1615611177576111746064611018600f548661129890919063ffffffff16565b90505b80156111ef57305f9081526018602052604090205461119690826111f9565b305f81815260186020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111e69085815260200190565b60405180910390a35b610f038382611257565b5f8061120583856116bb565b90508381101561079f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107cf565b5f61079f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ed4565b5f825f036112a757505f610737565b5f6112b283856116ce565b9050826112bf85836116e5565b1461079f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107cf565b5f61079f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114df565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138a5761138a611704565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114059190611718565b8160018151811061141857611418611704565b6001600160a01b03928316602091820292909201015260165461143e9130911684610974565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906114769085905f90869030904290600401611733565b5f604051808303815f87803b15801561148d575f80fd5b505af115801561149f573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f193505050501580156114da573d5f803e3d5ffd5b505050565b5f81836114ff5760405162461bcd60e51b81526004016107cf919061150b565b505f610f0384866116e5565b5f6020808352835180828501525f5b818110156115365785810183015185820160400152820161151a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461156a575f80fd5b50565b5f806040838503121561157e575f80fd5b823561158981611556565b946020939093013593505050565b5f602082840312156115a7575f80fd5b813561079f81611556565b5f805f606084860312156115c4575f80fd5b83356115cf81611556565b925060208401356115df81611556565b929592945050506040919091013590565b5f8060408385031215611601575f80fd5b823561160c81611556565b9150602083013561161c81611556565b809150509250929050565b600181811c9082168061163b57607f821691505b60208210810361165957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561073757610737611694565b8082018082111561073757610737611694565b808202811582820484141761073757610737611694565b5f826116ff57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611728575f80fd5b815161079f81611556565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117815784516001600160a01b03168352938301939183019160010161175c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122056b8f39f5039b3c1defcf078d5cb4b55c1faac3a4854651739bb700799b6ed7364736f6c63430008150033

Deployed Bytecode

0x608060405260043610610215575f3560e01c80637b0337961161011e578063d338d672116100a8578063e3f9e21a1161006d578063e3f9e21a1461061b578063e76ee23c14610630578063e770b79f1461064e578063eda376c614610663578063f2fde38b14610678575f80fd5b8063d338d6721461056a578063dd62ed3e1461057f578063de287071146105c3578063e09f6b0b146105d8578063e1ab04c9146105ed575f80fd5b80639e16d6bb116100ee5780639e16d6bb146104ed578063a62b9b9514610502578063a9059cbb14610517578063aa4bde2814610536578063c816841b1461054b575f80fd5b80637b033796146104895780638da5cb5b1461049e57806395d89b41146104ba5780639953e177146104ce575f80fd5b806332fb0cde1161019f57806370a082311161016f57806370a08231146103df578063715018a614610413578063735de9f7146104295780637437681e14610460578063751039fc14610475575f80fd5b806332fb0cde1461035957806343cc8c2a1461036e5780635f5f18cd1461039c578063673c6dc2146103b1575f80fd5b80631b968fad116101e55780631b968fad146102ac57806320f0d2ef146102cc57806323b872dd146102fa578063295dff1814610319578063313ce5671461032e575f80fd5b806306fdde0314610220578063095ea7b31461024a57806318160ddd146102795780631828d5b914610297575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b50610234610697565b604051610241919061150b565b60405180910390f35b348015610255575f80fd5b5061026961026436600461156d565b610727565b6040519015158152602001610241565b348015610284575f80fd5b506002545b604051908152602001610241565b3480156102a2575f80fd5b5061028960095481565b3480156102b7575f80fd5b50601e54610269906301000000900460ff1681565b3480156102d7575f80fd5b506102696102e6366004611597565b601c6020525f908152604090205460ff1681565b348015610305575f80fd5b506102696103143660046115b2565b61073d565b348015610324575f80fd5b5061028960115481565b348015610339575f80fd5b50600154600160a01b900460ff1660405160ff9091168152602001610241565b348015610364575f80fd5b5061028960105481565b348015610379575f80fd5b50610269610388366004611597565b601d6020525f908152604090205460ff1681565b3480156103a7575f80fd5b50610289600a5481565b3480156103bc575f80fd5b506102696103cb366004611597565b601a6020525f908152604090205460ff1681565b3480156103ea575f80fd5b506102896103f9366004611597565b6001600160a01b03165f9081526018602052604090205490565b34801561041e575f80fd5b506104276107a6565b005b348015610434575f80fd5b50601654610448906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b34801561046b575f80fd5b5061028960035481565b348015610480575f80fd5b50610427610820565b348015610494575f80fd5b50610289600d5481565b3480156104a9575f80fd5b505f546001600160a01b0316610448565b3480156104c5575f80fd5b50610234610872565b3480156104d9575f80fd5b50601e546102699062010000900460ff1681565b3480156104f8575f80fd5b5061028960085481565b34801561050d575f80fd5b50610289600b5481565b348015610522575f80fd5b5061026961053136600461156d565b610881565b348015610541575f80fd5b5061028960045481565b348015610556575f80fd5b50601754610448906001600160a01b031681565b348015610575575f80fd5b50610289600c5481565b34801561058a575f80fd5b506102896105993660046115f0565b6001600160a01b039182165f90815260196020908152604080832093909416825291909152205490565b3480156105ce575f80fd5b5061028960055481565b3480156105e3575f80fd5b50610289600f5481565b3480156105f8575f80fd5b50610269610607366004611597565b601b6020525f908152604090205460ff1681565b348015610626575f80fd5b5061028960125481565b34801561063b575f80fd5b50601e5461026990610100900460ff1681565b348015610659575f80fd5b50610289600e5481565b34801561066e575f80fd5b5061028960135481565b348015610683575f80fd5b50610427610692366004611597565b61088d565b6060600680546106a690611627565b80601f01602080910402602001604051908101604052809291908181526020018280546106d290611627565b801561071d5780601f106106f45761010080835404028352916020019161071d565b820191905f5260205f20905b81548152906001019060200180831161070057829003601f168201915b5050505050905090565b5f610733338484610974565b5060015b92915050565b5f610749848484610a97565b5061079b8433610796856040518060600160405280602881526020016117a3602891396001600160a01b038a165f9081526019602090815260408083203384529091529020549190610ed4565b610974565b5060015b9392505050565b5f546001600160a01b031633146107d85760405162461bcd60e51b81526004016107cf9061165f565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108495760405162461bcd60e51b81526004016107cf9061165f565b6002546003908155601e805463ff000000191690556011819055600d8190556013819055600f55565b6060600780546106a690611627565b5f61079b338484610a97565b5f546001600160a01b031633146108b65760405162461bcd60e51b81526004016107cf9061165f565b6001600160a01b03811661091b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107cf565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109d65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107cf565b6001600160a01b038216610a375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107cf565b6001600160a01b038381165f8181526019602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610afc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107cf565b6001600160a01b038316610b5e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107cf565b601e5460ff1615610b7b57610b74848484610f0c565b905061079f565b6001600160a01b0384165f908152601c602052604090205460ff16158015610bbb57506001600160a01b0383165f908152601c602052604090205460ff16155b15610c1d57600354821115610c1d5760405162461bcd60e51b815260206004820152602260248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152613c1760f11b60648201526084016107cf565b305f9081526018602052604090205460055481108015908190610c435750601e5460ff16155b8015610c6657506001600160a01b0385165f908152601d602052604090205460ff165b8015610c795750601e54610100900460ff165b8015610c9d57506001600160a01b0386165f908152601a602052604090205460ff16155b8015610caa575060055484115b15610ccf57601e5462010000900460ff1615610cc65760055491505b610ccf82610fef565b6001600160a01b0386165f908152601a602052604081205460ff1680610d0c57506001600160a01b0386165f908152601a602052604090205460ff165b15610d18575083610d26565b610d238787876110f7565b90505b601e546301000000900460ff168015610d5757506001600160a01b0386165f908152601b602052604090205460ff16155b15610d9157600454610d8782610d81896001600160a01b03165f9081526018602052604090205490565b906111f9565b1115610d91575f80fd5b601e545f906301000000900460ff16158015610dc457506001600160a01b0388165f908152601a602052604090205460ff165b610dce5785610dd8565b610dd88683611257565b9050610e3e8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060185f8c6001600160a01b03166001600160a01b031681526020019081526020015f2054610ed49092919063ffffffff16565b6001600160a01b03808a165f908152601860205260408082209390935590891681522054610e6c90836111f9565b6001600160a01b038089165f8181526018602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ebf9086815260200190565b60405180910390a3600194505050505061079f565b5f8184841115610ef75760405162461bcd60e51b81526004016107cf919061150b565b505f610f0384866116a8565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601890915291822054610f5c918490610ed4565b6001600160a01b038086165f908152601860205260408082209390935590851681522054610f8a90836111f9565b6001600160a01b038085165f8181526018602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fdd9086815260200190565b60405180910390a35060019392505050565b601e805460ff19166001179055600b546008545f9161101e916002916110189182908790611298565b90611316565b90505f61102b8383611257565b905061103681611357565b60085447905f906110559061104c906002611316565b600b5490611257565b90505f6110766002611018846110186008548861129890919063ffffffff16565b90505f61109283611018600a548761129890919063ffffffff16565b90505f6110a9826110a38786611257565b90611257565b905080156110c7576014546110c7906001600160a01b0316826114a7565b81156110e3576015546110e3906001600160a01b0316836114a7565b5050601e805460ff19169055505050505050565b6001600160a01b0383165f908152601d6020526040812054819060ff161561113a5761113360646110186013548661129890919063ffffffff16565b9050611177565b6001600160a01b0384165f908152601d602052604090205460ff1615611177576111746064611018600f548661129890919063ffffffff16565b90505b80156111ef57305f9081526018602052604090205461119690826111f9565b305f81815260186020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111e69085815260200190565b60405180910390a35b610f038382611257565b5f8061120583856116bb565b90508381101561079f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107cf565b5f61079f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ed4565b5f825f036112a757505f610737565b5f6112b283856116ce565b9050826112bf85836116e5565b1461079f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107cf565b5f61079f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114df565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138a5761138a611704565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114059190611718565b8160018151811061141857611418611704565b6001600160a01b03928316602091820292909201015260165461143e9130911684610974565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906114769085905f90869030904290600401611733565b5f604051808303815f87803b15801561148d575f80fd5b505af115801561149f573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f193505050501580156114da573d5f803e3d5ffd5b505050565b5f81836114ff5760405162461bcd60e51b81526004016107cf919061150b565b505f610f0384866116e5565b5f6020808352835180828501525f5b818110156115365785810183015185820160400152820161151a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461156a575f80fd5b50565b5f806040838503121561157e575f80fd5b823561158981611556565b946020939093013593505050565b5f602082840312156115a7575f80fd5b813561079f81611556565b5f805f606084860312156115c4575f80fd5b83356115cf81611556565b925060208401356115df81611556565b929592945050506040919091013590565b5f8060408385031215611601575f80fd5b823561160c81611556565b9150602083013561161c81611556565b809150509250929050565b600181811c9082168061163b57607f821691505b60208210810361165957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561073757610737611694565b8082018082111561073757610737611694565b808202811582820484141761073757610737611694565b5f826116ff57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611728575f80fd5b815161079f81611556565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156117815784516001600160a01b03168352938301939183019160010161175c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122056b8f39f5039b3c1defcf078d5cb4b55c1faac3a4854651739bb700799b6ed7364736f6c63430008150033

Deployed Bytecode Sourcemap

5291:9289:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8282:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8667:161;;;;;;;;;;-1:-1:-1;8667:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8667:161:0;1023:187:1;8559:100:0;;;;;;;;;;-1:-1:-1;8639:12:0;;8559:100;;;1361:25:1;;;1349:2;1334:18;8559:100:0;1215:177:1;5771:32:0;;;;;;;;;;;;;;;;6820:36;;;;;;;;;;-1:-1:-1;6820:36:0;;;;;;;;;;;6610:48;;;;;;;;;;-1:-1:-1;6610:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9344:313;;;;;;;;;;-1:-1:-1;9344:313:0;;;;;:::i;:::-;;:::i;6092:33::-;;;;;;;;;;;;;;;;8468:83;;;;;;;;;;-1:-1:-1;8534:9:0;;-1:-1:-1;;;8534:9:0;;;;8468:83;;2282:4:1;2270:17;;;2252:36;;2240:2;2225:18;8468:83:0;2110:184:1;6054:31:0;;;;;;;;;;;;;;;;6665:40;;;;;;;;;;-1:-1:-1;6665:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5810:31;;;;;;;;;;;;;;;;6496:48;;;;;;;;;;-1:-1:-1;6496:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9840:119;;;;;;;;;;-1:-1:-1;9840:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;9933:18:0;9906:7;9933:18;;;:9;:18;;;;;;;9840:119;3614:148;;;;;;;;;;;;;:::i;:::-;;6303:30;;;;;;;;;;-1:-1:-1;6303:30:0;;;;-1:-1:-1;;;;;6303:30:0;;;;;;-1:-1:-1;;;;;2480:32:1;;;2462:51;;2450:2;2435:18;6303:30:0;2299:220:1;5474:45:0;;;;;;;;;;;;;;;;11577:235;;;;;;;;;;;;;:::i;5930:33::-;;;;;;;;;;;;;;;;3389:79;;;;;;;;;;-1:-1:-1;3427:7:0;3454:6;-1:-1:-1;;;;;3454:6:0;3389:79;;8373:87;;;;;;;;;;;;;:::i;6780:33::-;;;;;;;;;;-1:-1:-1;6780:33:0;;;;;;;;;;;5734:30;;;;;;;;;;;;;;;;5848:34;;;;;;;;;;;;;;;;9665:167;;;;;;;;;;-1:-1:-1;9665:167:0;;;;;:::i;:::-;;:::i;5526:55::-;;;;;;;;;;;;;;;;6340:26;;;;;;;;;;-1:-1:-1;6340:26:0;;;;-1:-1:-1;;;;;6340:26:0;;;5891:32;;;;;;;;;;;;;;;;9189:143;;;;;;;;;;-1:-1:-1;9189:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;9297:18:0;;;9270:7;9297:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9189:143;5588:51;;;;;;;;;;;;;;;;6009:36;;;;;;;;;;;;;;;;6551:52;;;;;;;;;;-1:-1:-1;6551:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6132:32;;;;;;;;;;;;;;;;6738:35;;;;;;;;;;-1:-1:-1;6738:35:0;;;;;;;;;;;5970:32;;;;;;;;;;;;;;;;6171:35;;;;;;;;;;;;;;;;3770:244;;;;;;;;;;-1:-1:-1;3770:244:0;;;;;:::i;:::-;;:::i;8282:83::-;8319:13;8352:5;8345:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8282:83;:::o;8667:161::-;8742:4;8759:39;2765:10;8782:7;8791:6;8759:8;:39::i;:::-;-1:-1:-1;8816:4:0;8667:161;;;;;:::o;9344:313::-;9442:4;9459:36;9469:6;9477:9;9488:6;9459:9;:36::i;:::-;-1:-1:-1;9506:121:0;9515:6;2765:10;9537:89;9575:6;9537:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9537:19:0;;;;;;:11;:19;;;;;;;;2765:10;9537:33;;;;;;;;;;:37;:89::i;:::-;9506:8;:121::i;:::-;-1:-1:-1;9645:4:0;9344:313;;;;;;:::o;3614:148::-;3523:6;;-1:-1:-1;;;;;3523:6:0;2765:10;3523:22;3515:67;;;;-1:-1:-1;;;3515:67:0;;;;;;;:::i;:::-;;;;;;;;;3721:1:::1;3705:6:::0;;3684:40:::1;::::0;-1:-1:-1;;;;;3705:6:0;;::::1;::::0;3684:40:::1;::::0;3721:1;;3684:40:::1;3752:1;3735:19:::0;;-1:-1:-1;;;;;;3735:19:0::1;::::0;;3614:148::o;11577:235::-;3523:6;;-1:-1:-1;;;;;3523:6:0;2765:10;3523:22;3515:67;;;;-1:-1:-1;;;3515:67:0;;;;;;;:::i;:::-;11639:12:::1;::::0;11631:5:::1;:20:::0;;;11662:17:::1;:25:::0;;-1:-1:-1;;11662:25:0::1;::::0;;11698:13:::1;:17:::0;;;-1:-1:-1;11726:17:0;;;11754:15:::1;:19:::0;;;11784:16:::1;:20:::0;11577:235::o;8373:87::-;8412:13;8445:7;8438:14;;;;;:::i;9665:167::-;9743:4;9760:42;2765:10;9784:9;9795:6;9760:9;:42::i;3770:244::-;3523:6;;-1:-1:-1;;;;;3523:6:0;2765:10;3523:22;3515:67;;;;-1:-1:-1;;;3515:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3859:22:0;::::1;3851:73;;;::::0;-1:-1:-1;;;3851:73:0;;4073:2:1;3851:73:0::1;::::0;::::1;4055:21:1::0;4112:2;4092:18;;;4085:30;4151:34;4131:18;;;4124:62;-1:-1:-1;;;4202:18:1;;;4195:36;4248:19;;3851:73:0::1;3871:402:1::0;3851:73:0::1;3961:6;::::0;;3940:38:::1;::::0;-1:-1:-1;;;;;3940:38:0;;::::1;::::0;3961:6;::::1;::::0;3940:38:::1;::::0;::::1;3989:6;:17:::0;;-1:-1:-1;;;;;;3989:17:0::1;-1:-1:-1::0;;;;;3989:17:0;;;::::1;::::0;;;::::1;::::0;;3770:244::o;8836:337::-;-1:-1:-1;;;;;8929:19:0;;8921:68;;;;-1:-1:-1;;;8921:68:0;;4480:2:1;8921:68:0;;;4462:21:1;4519:2;4499:18;;;4492:30;4558:34;4538:18;;;4531:62;-1:-1:-1;;;4609:18:1;;;4602:34;4653:19;;8921:68:0;4278:400:1;8921:68:0;-1:-1:-1;;;;;9008:21:0;;9000:68;;;;-1:-1:-1;;;9000:68:0;;4885:2:1;9000:68:0;;;4867:21:1;4924:2;4904:18;;;4897:30;4963:34;4943:18;;;4936:62;-1:-1:-1;;;5014:18:1;;;5007:32;5056:19;;9000:68:0;4683:398:1;9000:68:0;-1:-1:-1;;;;;9081:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9133:32;;1361:25:1;;;9133:32:0;;1334:18:1;9133:32:0;;;;;;;8836:337;;;:::o;12685:1892::-;12772:4;-1:-1:-1;;;;;12797:20:0;;12789:70;;;;-1:-1:-1;;;12789:70:0;;5288:2:1;12789:70:0;;;5270:21:1;5327:2;5307:18;;;5300:30;5366:34;5346:18;;;5339:62;-1:-1:-1;;;5417:18:1;;;5410:35;5462:19;;12789:70:0;5086:401:1;12789:70:0;-1:-1:-1;;;;;12878:23:0;;12870:71;;;;-1:-1:-1;;;12870:71:0;;5694:2:1;12870:71:0;;;5676:21:1;5733:2;5713:18;;;5706:30;5772:34;5752:18;;;5745:62;-1:-1:-1;;;5823:18:1;;;5816:33;5866:19;;12870:71:0;5492:399:1;12870:71:0;12955:8;;;;12952:1618;;;12997:44;13015:6;13023:9;13034:6;12997:17;:44::i;:::-;12990:51;;;;12952:1618;-1:-1:-1;;;;;13097:23:0;;;;;;:15;:23;;;;;;;;13096:24;:55;;;;-1:-1:-1;;;;;;13125:26:0;;;;;;:15;:26;;;;;;;;13124:27;13096:55;13093:157;;;13190:5;;13180:6;:15;;13172:62;;;;-1:-1:-1;;;13172:62:0;;6098:2:1;13172:62:0;;;6080:21:1;6137:2;6117:18;;;6110:30;6176:34;6156:18;;;6149:62;-1:-1:-1;;;6227:18:1;;;6220:32;6269:19;;13172:62:0;5896:398:1;13172:62:0;13317:4;13278:18;9933;;;:9;:18;;;;;;13371:16;;13357:30;;;;;;;13420:24;;-1:-1:-1;13436:8:0;;;;13435:9;13420:24;:46;;;;-1:-1:-1;;;;;;13448:18:0;;;;;;:7;:18;;;;;;;;13420:46;:66;;;;-1:-1:-1;13470:16:0;;;;;;;13420:66;:94;;;;-1:-1:-1;;;;;;13491:23:0;;;;;;:15;:23;;;;;;;;13490:24;13420:94;:123;;;;;13527:16;;13518:6;:25;13420:123;13416:297;;;13581:13;;;;;;;13578:68;;;13630:16;;13617:29;;13578:68;13665:28;13682:10;13665:16;:28::i;:::-;-1:-1:-1;;;;;13808:23:0;;13729:19;13808:23;;;:15;:23;;;;;;;;;:53;;-1:-1:-1;;;;;;13835:26:0;;;;;;:15;:26;;;;;;;;13808:53;13804:220;;;-1:-1:-1;13896:6:0;13804:220;;;13957:51;13982:6;13990:9;14001:6;13957:24;:51::i;:::-;13943:65;;13804:220;14041:17;;;;;;;:52;;;;-1:-1:-1;;;;;;14063:30:0;;;;;;:19;:30;;;;;;;;14062:31;14041:52;14038:139;;;14161:15;;14120:37;14145:11;14120:20;14130:9;-1:-1:-1;;;;;9933:18:0;9906:7;9933:18;;;:9;:18;;;;;;;9840:119;14120:20;:24;;:37::i;:::-;:56;;14112:65;;;;;;14221:17;;14194:22;;14221:17;;;;;14220:18;:45;;;;-1:-1:-1;;;;;;14242:23:0;;;;;;:15;:23;;;;;;;;14220:45;14219:82;;14295:6;14219:82;;;14269:23;:6;14280:11;14269:10;:23::i;:::-;14194:107;;14336:61;14358:14;14336:61;;;;;;;;;;;;;-1:-1:-1;;;14336:61:0;;;:9;:17;14346:6;-1:-1:-1;;;;;14336:17:0;-1:-1:-1;;;;;14336:17:0;;;;;;;;;;;;;:21;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;14316:17:0;;;;;;;:9;:17;;;;;;:81;;;;14435:20;;;;;;;:37;;14460:11;14435:24;:37::i;:::-;-1:-1:-1;;;;;14412:20:0;;;;;;;:9;:20;;;;;;;:60;;;;14492:40;;;;;;;;;;14520:11;1361:25:1;;1349:2;1334:18;;1215:177;14492:40:0;;;;;;;;14554:4;14547:11;;;;;;;;1530:192;1616:7;1652:12;1644:6;;;;1636:29;;;;-1:-1:-1;;;1636:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1676:9:0;1688:5;1692:1;1688;:5;:::i;:::-;1676:17;1530:192;-1:-1:-1;;;;;1530:192:0:o;9983:333::-;10116:53;;;;;;;;;;;-1:-1:-1;;;10116:53:0;;;;;;;;-1:-1:-1;;;;;10116:17:0;;10079:4;10116:17;;;:9;:17;;;;;;;:53;;10138:6;;10116:21;:53::i;:::-;-1:-1:-1;;;;;10096:17:0;;;;;;;:9;:17;;;;;;:73;;;;10203:20;;;;;;;:32;;10228:6;10203:24;:32::i;:::-;-1:-1:-1;;;;;10180:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10251:35;;;;;;;;;;10279:6;1361:25:1;;1349:2;1334:18;;1215:177;10251:35:0;;;;;;;;-1:-1:-1;10304:4:0;9983:333;;;;;:::o;11824:849::-;6894:8;:15;;-1:-1:-1;;6894:15:0;6905:4;6894:15;;;11946:14:::1;::::0;11929:11:::1;::::0;6894:8;;11917:51:::1;::::0;11966:1:::1;::::0;11917:44:::1;::::0;;;:7;;:11:::1;:24::i;:::-;:28:::0;::::1;:44::i;:51::-;11895:73:::0;-1:-1:-1;11979:20:0::1;12002:24;:7:::0;11895:73;12002:11:::1;:24::i;:::-;11979:47;;12039:30;12056:12;12039:16;:30::i;:::-;12171:11;::::0;12096:21:::1;::::0;12080:13:::1;::::0;12152:38:::1;::::0;12171:18:::1;::::0;12187:1:::1;12171:15;:18::i;:::-;12152:14;::::0;;:18:::1;:38::i;:::-;12130:60;;12211:26;12240:46;12284:1;12240:39;12267:11;12240:22;12250:11;;12240:5;:9;;:22;;;;:::i;:46::-;12211:75;;12297:28;12328:40;12356:11;12328:23;12338:12;;12328:5;:9;;:23;;;;:::i;:40::-;12297:71:::0;-1:-1:-1;12379:26:0::1;12408:55;12297:71:::0;12408:29:::1;:5:::0;12418:18;12408:9:::1;:29::i;:::-;:33:::0;::::1;:55::i;:::-;12379:84:::0;-1:-1:-1;12479:22:0;;12476:86:::1;;12529:12;::::0;12516:46:::1;::::0;-1:-1:-1;;;;;12529:12:0::1;12543:18:::0;12516:12:::1;:46::i;:::-;12578:24:::0;;12575:90:::1;;12630:12;::::0;12617:48:::1;::::0;-1:-1:-1;;;;;12630:12:0::1;12644:20:::0;12617:12:::1;:48::i;:::-;-1:-1:-1::0;;6932:8:0;:16;;-1:-1:-1;;6932:16:0;;;-1:-1:-1;;;;;;11824:849:0:o;10891:503::-;-1:-1:-1;;;;;11043:15:0;;10994:7;11043:15;;;:7;:15;;;;;;10994:7;;11043:15;;11040:149;;;11067:36;11099:3;11067:27;11078:15;;11067:6;:10;;:27;;;;:::i;:36::-;11061:42;;11040:149;;;-1:-1:-1;;;;;11123:18:0;;;;;;:7;:18;;;;;;;;11120:69;;;11150:37;11183:3;11150:28;11161:16;;11150:6;:10;;:28;;;;:::i;:37::-;11144:43;;11120:69;11202:7;;11199:155;;11271:4;11253:24;;;;:9;:24;;;;;;:33;;11282:3;11253:28;:33::i;:::-;11244:4;11226:24;;;;:9;:24;;;;;;;:60;;;;11306:36;;-1:-1:-1;;;;;11306:36:0;;;;;;;11338:3;1361:25:1;;1349:2;1334:18;;1215:177;11306:36:0;;;;;;;;11199:155;11371:15;:6;11382:3;11371:10;:15::i;1197:181::-;1255:7;;1287:5;1291:1;1287;:5;:::i;:::-;1275:17;;1316:1;1311;:6;;1303:46;;;;-1:-1:-1;;;1303:46:0;;6896:2:1;1303:46:0;;;6878:21:1;6935:2;6915:18;;;6908:30;6974:29;6954:18;;;6947:57;7021:18;;1303:46:0;6694:351:1;1386:136:0;1444:7;1471:43;1475:1;1478;1471:43;;;;;;;;;;;;;;;;;:3;:43::i;1730:250::-;1788:7;1812:1;1817;1812:6;1808:47;;-1:-1:-1;1842:1:0;1835:8;;1808:47;1867:9;1879:5;1883:1;1879;:5;:::i;:::-;1867:17;-1:-1:-1;1912:1:0;1903:5;1907:1;1867:17;1903:5;:::i;:::-;:10;1895:56;;;;-1:-1:-1;;;1895:56:0;;7647:2:1;1895:56:0;;;7629:21:1;7686:2;7666:18;;;7659:30;7725:34;7705:18;;;7698:62;-1:-1:-1;;;7776:18:1;;;7769:31;7817:19;;1895:56:0;7445:397:1;1988:132:0;2046:7;2073:39;2077:1;2080;2073:39;;;;;;;;;;;;;;;;;:3;:39::i;10328:551::-;10418:16;;;10432:1;10418:16;;;;;;;;10394:21;;10418:16;;;;;;;;;;-1:-1:-1;10418:16:0;10394:40;;10463:4;10445;10450:1;10445:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10445:23:0;;;:7;;;;;;;;;;:23;;;;10489:13;;:20;;;-1:-1:-1;;;10489:20:0;;;;:13;;;;;:18;;:20;;;;;10445:7;;10489:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10479:4;10484:1;10479:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10479:30:0;;;:7;;;;;;;;;:30;10554:13;;10522:60;;10539:4;;10554:13;10570:11;10522:8;:60::i;:::-;10633:13;;:238;;-1:-1:-1;;;10633:238:0;;-1:-1:-1;;;;;10633:13:0;;;;:64;;:238;;10712:11;;10633:13;;10782:4;;10809;;10845:15;;10633:238;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10383:496;10328:551;:::o;11447:118::-;11531:26;;-1:-1:-1;;;;;11531:18:0;;;:26;;;;;11550:6;;11531:26;;;;11550:6;11531:18;:26;;;;;;;;;;;;;;;;;;;;;11447:118;;:::o;2128:189::-;2214:7;2249:12;2242:5;2234:28;;;;-1:-1:-1;;;2234:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2273:9:0;2285:5;2289:1;2285;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2732:388::-;2800:6;2808;2861:2;2849:9;2840:7;2836:23;2832:32;2829:52;;;2877:1;2874;2867:12;2829:52;2916:9;2903:23;2935:31;2960:5;2935:31;:::i;:::-;2985:5;-1:-1:-1;3042:2:1;3027:18;;3014:32;3055:33;3014:32;3055:33;:::i;:::-;3107:7;3097:17;;;2732:388;;;;;:::o;3125:380::-;3204:1;3200:12;;;;3247;;;3268:61;;3322:4;3314:6;3310:17;3300:27;;3268:61;3375:2;3367:6;3364:14;3344:18;3341:38;3338:161;;3421:10;3416:3;3412:20;3409:1;3402:31;3456:4;3453:1;3446:15;3484:4;3481:1;3474:15;3338:161;;3125:380;;;:::o;3510:356::-;3712:2;3694:21;;;3731:18;;;3724:30;3790:34;3785:2;3770:18;;3763:62;3857:2;3842:18;;3510:356::o;6299:127::-;6360:10;6355:3;6351:20;6348:1;6341:31;6391:4;6388:1;6381:15;6415:4;6412:1;6405:15;6431:128;6498:9;;;6519:11;;;6516:37;;;6533:18;;:::i;6564:125::-;6629:9;;;6650:10;;;6647:36;;;6663:18;;:::i;7050:168::-;7123:9;;;7154;;7171:15;;;7165:22;;7151:37;7141:71;;7192:18;;:::i;7223:217::-;7263:1;7289;7279:132;;7333:10;7328:3;7324:20;7321:1;7314:31;7368:4;7365:1;7358:15;7396:4;7393:1;7386:15;7279:132;-1:-1:-1;7425:9:1;;7223:217::o;7979:127::-;8040:10;8035:3;8031:20;8028:1;8021:31;8071:4;8068:1;8061:15;8095:4;8092:1;8085:15;8111:251;8181:6;8234:2;8222:9;8213:7;8209:23;8205:32;8202:52;;;8250:1;8247;8240:12;8202:52;8282:9;8276:16;8301:31;8326:5;8301:31;:::i;8367:980::-;8629:4;8677:3;8666:9;8662:19;8708:6;8697:9;8690:25;8734:2;8772:6;8767:2;8756:9;8752:18;8745:34;8815:3;8810:2;8799:9;8795:18;8788:31;8839:6;8874;8868:13;8905:6;8897;8890:22;8943:3;8932:9;8928:19;8921:26;;8982:2;8974:6;8970:15;8956:29;;9003:1;9013:195;9027:6;9024:1;9021:13;9013:195;;;9092:13;;-1:-1:-1;;;;;9088:39:1;9076:52;;9183:15;;;;9148:12;;;;9124:1;9042:9;9013:195;;;-1:-1:-1;;;;;;;9264:32:1;;;;9259:2;9244:18;;9237:60;-1:-1:-1;;;9328:3:1;9313:19;9306:35;9225:3;8367:980;-1:-1:-1;;;8367:980:1:o

Swarm Source

ipfs://56b8f39f5039b3c1defcf078d5cb4b55c1faac3a4854651739bb700799b6ed73
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.