ETH Price: $2,464.63 (+0.81%)

Token

TAOBOX (TAOBOX)
 

Overview

Max Total Supply

100,000,000 TAOBOX

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,540,151.180845383 TAOBOX

Value
$0.00
0xf863e475ee428649f27005c68bc2d39f83ad79aa
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:
TAOBOX

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-06
*/

/*
TAOBOX - Revolutionizing AI Development
Our SDK Sandbox, enhanced by TAO (Bittensor), provides a dynamic and scalable environment for developers to innovate and refine AI models. 
Experience a suite of features designed to bring your AI applications closer to the decentralized reality of tomorrow.
WEB | https://taobox.tech
X   | https://twitter.com/TaoBox_ERC20
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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);
}


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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        return msg.data;
    }
}

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;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: the caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function WETH() external pure returns (address);
    function factory() external pure returns (address);

     function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );


    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: has insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

contract TAOBOX is IERC20, Ownable {
    using SafeMath for uint256;

    using Address for address payable;
    string private constant _name = "TAOBOX";
    string private constant _symbol = "TAOBOX";

    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 100_000_000 * 10**_decimals;

    uint256 private  _maxWallet = 2_000_000 * 10**_decimals;

    uint256 private _maxBuyAmount = 2_000_000 * 10**_decimals;

    uint256 private _maxSellAmount = 2_000_000 * 10**_decimals;

    uint256 private _swapTH = 1_000_000 * 10**_decimals;

    address public Dev = 0xAF873dBEfc8b692C2986940ADBa876D321FaFEA6;

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isWhiteList;
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address private _owner;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    bool public _AutoSwap = true;
    bool public _Launch = false;
    bool public _transfersEnabled = false;
    bool private _TokenSwap = true;
    bool private _autoLP = true;
    bool private _isSelling = false;
    
    uint256 private _swapPercent = 100;

    uint256 private _devTaxRate = 15;
    uint256 private AmountBuyRate = _devTaxRate;

    uint256 private _devTaxSellRate = 15;
    uint256 private AmountSellRate = _devTaxSellRate;

    constructor() {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        _owner = msg.sender;

        uint256 tsupply = _totalSupply;

        _balances[msg.sender] = tsupply;


        _isExcludedFromFee[_owner] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[Dev] = true;
        
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);
    }

    function getOwner() public view returns (address) {
        return owner();
    }
    
    function name() public pure returns (string memory) {
        return _name;
    }
    
    function symbol() public pure returns (string memory) {
        return _symbol;
    }

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

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


    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function isWhitelist(address account) public view returns (bool) {
        return _isWhiteList[account];
    }

    function ViewBuyRate() public view returns (
        uint256 devBuyRate,
        uint256 totalBuyRate,
        uint256 maxWallet,
        uint256 maxBuyAmount
    ) {
        devBuyRate = _devTaxRate;
        totalBuyRate = AmountBuyRate;
        maxWallet = _maxWallet;
        maxBuyAmount = _maxBuyAmount;
    }

    function ViewSellRate() public view returns (
        uint256 devSellRate,
        uint256 totalSellRate,
        uint256 maxSellAmount
    ) {
        devSellRate = _devTaxSellRate;
        totalSellRate = AmountSellRate;
        maxSellAmount = _maxSellAmount;
    }


    function transfer(address recipient, uint256 amount) public override returns (bool) {

        if(recipient != uniswapV2Pair && recipient != owner() && !_isExcludedFromFee[recipient]){

            require(_balances[recipient] + amount <= _maxWallet, "THUMB: recipient wallet balance exceeds the maximum limit");

        }

        _transfer(msg.sender, recipient, amount);
        
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, amount);
        return true;
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) private {

        require(sender != address(0), "THUMB: transfer from the zero address");
        require(recipient != address(0), "THUMB: transfer to the zero address");
        require(amount > 0, "THUMB: transfer amount must be greater than zero");
        if(!_Launch){require(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient] || _isWhiteList[sender] || _isWhiteList[recipient], "we not launch yet");}
        if(!_Launch && recipient != uniswapV2Pair && sender != uniswapV2Pair) {require(_transfersEnabled, "Transfers are currently disabled");}

        bool _AutoTaxes = true;


        if (recipient == uniswapV2Pair && sender == owner()) {

            _balances[sender] -= amount;
            _balances[recipient] += amount;
            emit Transfer(sender, recipient, amount);
            return;
        }

        //sell   
        if(recipient == uniswapV2Pair && !_isExcludedFromFee[sender] && sender != owner()){

                require(amount <= _maxSellAmount, "Sell amount exceeds max limit");

                _isSelling = true;
               
                if(_AutoSwap && balanceOf(address(this)) >= _swapTH){

                    CanSwap();
                }  
        }

        //buy
        if(sender == uniswapV2Pair && !_isExcludedFromFee[recipient] && recipient != owner()){
                    
            require(amount <= _maxBuyAmount, "Buy amount exceeds max limit");
            
        }

        if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) { _AutoTaxes = false; }
        if (recipient != uniswapV2Pair && sender != uniswapV2Pair) { _AutoTaxes = false; }

        if (_AutoTaxes) {

                if(!_isSelling){

                    uint256 totalTaxAmount = amount * AmountBuyRate / 100;
                    uint256 transferAmount = amount - totalTaxAmount;
                    
                   
                    _balances[address(this)] = _balances[address(this)].add(totalTaxAmount);
                    _balances[sender] = _balances[sender].sub(amount);
                    _balances[recipient] = _balances[recipient].add(transferAmount);

                    emit Transfer(sender, recipient, transferAmount);
                    emit Transfer(sender, address(this), totalTaxAmount);

                }else{

                    uint256 totalTaxAmount = amount * AmountSellRate / 100;
                    uint256 transferAmount = amount - totalTaxAmount;
                    

                    _balances[address(this)] = _balances[address(this)].add(totalTaxAmount);
                    _balances[sender] = _balances[sender].sub(amount);
                    _balances[recipient] = _balances[recipient].add(transferAmount);

                    emit Transfer(sender, recipient, transferAmount);
                    emit Transfer(sender, address(this), totalTaxAmount);

                    _isSelling = false;
                }
            
        }else{

                _balances[sender] = _balances[sender].sub(amount);
                _balances[recipient] = _balances[recipient].add(amount);

                emit Transfer(sender, recipient, amount);

        }
    }


    function swapTokensForEth(uint256 tokenAmount) private {

        // Set up contract address and the token to swap
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        // Approve the transfer of tokens to the contract address
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // Make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // Accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }


    function CanSwap() private {

        uint256 contractTokenBalance = balanceOf(address(this));

        if(contractTokenBalance > 0) {

            if(_TokenSwap){

                if(contractTokenBalance > 0){
                    
                    uint256 caBalance = balanceOf(address(this)) * _swapPercent / 100;

                    uint256 toSwap = caBalance;

                    swapTokensForEth(toSwap);

                    uint256 receivedBalance = address(this).balance;

                    if (receivedBalance > 0) {payable(Dev).transfer(receivedBalance);}

                }else{

                    revert("No THUMB tokens available to swap");
                }

            }

        }else{

           revert("No balance available to swap");     
           
        }
            
    }

   receive() external payable {}

    function setDevAddress(address newAddress) public onlyOwner {
        require(newAddress != address(0), "Invalid address");
        Dev = newAddress;
        _isExcludedFromFee[newAddress] = true;
    }


   function enableLaunch() external {
        _Launch = true;
        _transfersEnabled = true;
    }

    function setExcludedFromFee(address account, bool status) external onlyOwner {
        _isExcludedFromFee[account] = status;
    }

    function setWhitelist(address account, bool status) external onlyOwner {
        _isWhiteList[account] = status;
    }

    function SwapEnable(bool status) external onlyOwner {
        _AutoSwap = status;
    }

    function SetSwapPercentage(uint256 SwapPercent) external onlyOwner {
        _swapPercent = SwapPercent;
    }

    function setAutoSwap(uint256 newAutoSwap) external onlyOwner {
        require(newAutoSwap <= (totalSupply() * 1) / 100, "Invalid value: exceeds 1% of the total supply");
        _swapTH = newAutoSwap * 10**_decimals;
    }

    function updateLimits(uint256 maxWallet, uint256 maxBuyAmount, uint256 maxSellAmount) external onlyOwner {
        _maxWallet = maxWallet * 10**_decimals;
        _maxBuyAmount = maxBuyAmount * 10**_decimals;
        _maxSellAmount = maxSellAmount * 10**_decimals;
    }

    function setBuyTaxRates(uint256 devTaxRate) external onlyOwner {
        _devTaxRate = devTaxRate;
        AmountBuyRate = _devTaxRate;
    }


    function setSellTaxRates(uint256 devTaxRate) external onlyOwner {
        _devTaxSellRate = devTaxRate;
        AmountSellRate = _devTaxSellRate;
    }

}

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":[],"name":"Dev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"SwapPercent","type":"uint256"}],"name":"SetSwapPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"SwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ViewBuyRate","outputs":[{"internalType":"uint256","name":"devBuyRate","type":"uint256"},{"internalType":"uint256","name":"totalBuyRate","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ViewSellRate","outputs":[{"internalType":"uint256","name":"devSellRate","type":"uint256"},{"internalType":"uint256","name":"totalSellRate","type":"uint256"},{"internalType":"uint256","name":"maxSellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_AutoSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_Launch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transfersEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":"pure","type":"function"},{"inputs":[],"name":"enableLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAutoSwap","type":"uint256"}],"name":"setAutoSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devTaxRate","type":"uint256"}],"name":"setBuyTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devTaxRate","type":"uint256"}],"name":"setSellTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"},{"internalType":"uint256","name":"maxSellAmount","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200049c565b62000022906305f5e100620004b3565b600155620000336009600a6200049c565b6200004290621e8480620004b3565b600255620000536009600a6200049c565b6200006290621e8480620004b3565b600355620000736009600a6200049c565b6200008290621e8480620004b3565b600455620000936009600a6200049c565b620000a290620f4240620004b3565b600555600680546001600160a01b03191673af873dbefc8b692c2986940adba876d321fafea6179055600e805465ffffffffffff19166401010000011790556064600f90815560108190556011819055601281905560135534801562000106575f80fd5b5062000112336200033e565b600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801562000176573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200019c9190620004cd565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200020e9190620004cd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000259573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027f9190620004cd565b600a80546001600160a01b03199081166001600160a01b0393841617909155600b805433921682178155600180545f848152600c6020818152604080842085815596548916845260078252808420805460ff199081168817909155308552818520805482168817905560065490991684528084208054909916909517909755858252865292549151918252937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004f5565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003e157815f1904821115620003c557620003c56200038d565b80851615620003d357918102915b93841c9390800290620003a6565b509250929050565b5f82620003f95750600162000496565b816200040757505f62000496565b81600181146200042057600281146200042b576200044b565b600191505062000496565b60ff8411156200043f576200043f6200038d565b50506001821b62000496565b5060208310610133831016604e8410600b841016171562000470575081810a62000496565b6200047c8383620003a1565b805f19048211156200049257620004926200038d565b0290505b92915050565b5f620004ac60ff841683620003e9565b9392505050565b80820281158282048414176200049657620004966200038d565b5f60208284031215620004de575f80fd5b81516001600160a01b0381168114620004ac575f80fd5b611d9c80620005035f395ff3fe6080604052600436106101e9575f3560e01c8063893d20e811610108578063d0d41fe11161009d578063f515a55c1161006d578063f515a55c146105c0578063f7de4dfd146105df578063fcd2e049146105fd578063feae65e71461061c578063ff5211bb14610654575f80fd5b8063d0d41fe11461051f578063d8a0663c1461053e578063dd62ed3e1461055d578063f2fde38b146105a1575f80fd5b8063a14aee61116100d8578063a14aee611461047a578063a9059cbb14610499578063c683630d146104b8578063c6da3051146104ef575f80fd5b8063893d20e8146104455780638da5cb5b14610445578063925542871461046157806395d89b4114610230575f80fd5b806336a0f8a51161017e5780636612e66f1161014e5780636612e66f146103bf57806370a08231146103de578063715018a61461041257806385438bc014610426575f80fd5b806336a0f8a51461032b57806349bd5a5e1461034a5780635342acb41461036957806353d6fd59146103a0575f80fd5b80631694505e116101b95780631694505e146102b457806318160ddd146102d357806323b872dd146102f1578063313ce56714610310575f80fd5b806301e51ae8146101f457806306fdde0314610230578063095ea7b3146102645780630a80c0cc14610293575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b50600654610213906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b575f80fd5b5060408051808201825260068152650a8829e849eb60d31b60208201529051610227919061194d565b34801561026f575f80fd5b5061028361027e3660046119ac565b610673565b6040519015158152602001610227565b34801561029e575f80fd5b506102b26102ad3660046119d6565b610689565b005b3480156102bf575f80fd5b50600954610213906001600160a01b031681565b3480156102de575f80fd5b506001545b604051908152602001610227565b3480156102fc575f80fd5b5061028361030b3660046119ed565b6106c5565b34801561031b575f80fd5b5060405160098152602001610227565b348015610336575f80fd5b506102b2610345366004611a2b565b610713565b348015610355575f80fd5b50600a54610213906001600160a01b031681565b348015610374575f80fd5b50610283610383366004611a54565b6001600160a01b03165f9081526007602052604090205460ff1690565b3480156103ab575f80fd5b506102b26103ba366004611a83565b61078c565b3480156103ca575f80fd5b506102b26103d9366004611a83565b6107df565b3480156103e9575f80fd5b506102e36103f8366004611a54565b6001600160a01b03165f908152600c602052604090205490565b34801561041d575f80fd5b506102b2610832565b348015610431575f80fd5b50600e546102839062010000900460ff1681565b348015610450575f80fd5b505f546001600160a01b0316610213565b34801561046c575f80fd5b50600e546102839060ff1681565b348015610485575f80fd5b506102b2610494366004611ab6565b610866565b3480156104a4575f80fd5b506102836104b33660046119ac565b6108a2565b3480156104c3575f80fd5b506102836104d2366004611a54565b6001600160a01b03165f9081526008602052604090205460ff1690565b3480156104fa575f80fd5b5060125460135460045460408051938452602084019290925290820152606001610227565b34801561052a575f80fd5b506102b2610539366004611a54565b61099d565b348015610549575f80fd5b506102b26105583660046119d6565b610a47565b348015610568575f80fd5b506102e3610577366004611acf565b6001600160a01b039182165f908152600d6020908152604080832093909416825291909152205490565b3480156105ac575f80fd5b506102b26105bb366004611a54565b610b11565b3480156105cb575f80fd5b506102b26105da3660046119d6565b610bab565b3480156105ea575f80fd5b50600e5461028390610100900460ff1681565b348015610608575f80fd5b506102b26106173660046119d6565b610bd9565b348015610627575f80fd5b50601054601154600254600354604080519485526020850193909352918301526060820152608001610227565b34801561065f575f80fd5b50600e805462ffff00191662010100179055005b5f61067f338484610c0c565b5060015b92915050565b5f546001600160a01b031633146106bb5760405162461bcd60e51b81526004016106b290611b06565b60405180910390fd5b6012819055601355565b6001600160a01b0383165f908152600d602090815260408083203380855292528220546106fe9186916106f9908690611b5e565b610c0c565b610709848484610d2f565b5060019392505050565b5f546001600160a01b0316331461073c5760405162461bcd60e51b81526004016106b290611b06565b6107486009600a611c51565b6107529084611c5f565b6002556107616009600a611c51565b61076b9083611c5f565b60035561077a6009600a611c51565b6107849082611c5f565b600455505050565b5f546001600160a01b031633146107b55760405162461bcd60e51b81526004016106b290611b06565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146108085760405162461bcd60e51b81526004016106b290611b06565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461085b5760405162461bcd60e51b81526004016106b290611b06565b6108645f61158d565b565b5f546001600160a01b0316331461088f5760405162461bcd60e51b81526004016106b290611b06565b600e805460ff1916911515919091179055565b600a545f906001600160a01b038481169116148015906108cf57505f546001600160a01b03848116911614155b80156108f357506001600160a01b0383165f9081526007602052604090205460ff16155b15610992576002546001600160a01b0384165f908152600c602052604090205461091e908490611c76565b11156109925760405162461bcd60e51b815260206004820152603960248201527f5448554d423a20726563697069656e742077616c6c65742062616c616e63652060448201527f6578636565647320746865206d6178696d756d206c696d69740000000000000060648201526084016106b2565b61067f338484610d2f565b5f546001600160a01b031633146109c65760405162461bcd60e51b81526004016106b290611b06565b6001600160a01b038116610a0e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016106b2565b600680546001600160a01b039092166001600160a01b0319909216821790555f908152600760205260409020805460ff19166001179055565b5f546001600160a01b03163314610a705760405162461bcd60e51b81526004016106b290611b06565b6064610a7b60015490565b610a86906001611c5f565b610a909190611c89565b811115610af55760405162461bcd60e51b815260206004820152602d60248201527f496e76616c69642076616c75653a2065786365656473203125206f662074686560448201526c20746f74616c20737570706c7960981b60648201526084016106b2565b610b016009600a611c51565b610b0b9082611c5f565b60055550565b5f546001600160a01b03163314610b3a5760405162461bcd60e51b81526004016106b290611b06565b6001600160a01b038116610b9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b2565b610ba88161158d565b50565b5f546001600160a01b03163314610bd45760405162461bcd60e51b81526004016106b290611b06565b600f55565b5f546001600160a01b03163314610c025760405162461bcd60e51b81526004016106b290611b06565b6010819055601155565b6001600160a01b038316610c6e5760405162461bcd60e51b8152602060048201526024808201527f5448554d423a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106b2565b6001600160a01b038216610ccf5760405162461bcd60e51b815260206004820152602260248201527f5448554d423a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106b2565b6001600160a01b038381165f818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d935760405162461bcd60e51b815260206004820152602560248201527f5448554d423a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106b2565b6001600160a01b038216610df55760405162461bcd60e51b815260206004820152602360248201527f5448554d423a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106b2565b5f8111610e5d5760405162461bcd60e51b815260206004820152603060248201527f5448554d423a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016106b2565b600e54610100900460ff16610f2d576001600160a01b0383165f9081526007602052604090205460ff1680610ea957506001600160a01b0382165f9081526007602052604090205460ff165b80610ecb57506001600160a01b0383165f9081526008602052604090205460ff165b80610eed57506001600160a01b0382165f9081526008602052604090205460ff165b610f2d5760405162461bcd60e51b81526020600482015260116024820152701dd9481b9bdd081b185d5b98da081e595d607a1b60448201526064016106b2565b600e54610100900460ff16158015610f535750600a546001600160a01b03838116911614155b8015610f6d5750600a546001600160a01b03848116911614155b15610fca57600e5462010000900460ff16610fca5760405162461bcd60e51b815260206004820181905260248201527f5472616e7366657273206172652063757272656e746c792064697361626c656460448201526064016106b2565b600a546001906001600160a01b038481169116148015610ff657505f546001600160a01b038581169116145b15611095576001600160a01b0384165f908152600c602052604081208054849290611022908490611b5e565b90915550506001600160a01b0383165f908152600c60205260408120805484929061104e908490611c76565b92505081905550826001600160a01b0316846001600160a01b03165f80516020611d478339815191528460405161108791815260200190565b60405180910390a350505050565b600a546001600160a01b0384811691161480156110ca57506001600160a01b0384165f9081526007602052604090205460ff16155b80156110e357505f546001600160a01b03858116911614155b1561117f5760045482111561113a5760405162461bcd60e51b815260206004820152601d60248201527f53656c6c20616d6f756e742065786365656473206d6178206c696d697400000060448201526064016106b2565b600e805465ff0000000000198116650100000000001790915560ff1680156111725750600554305f908152600c602052604090205410155b1561117f5761117f6115dc565b600a546001600160a01b0385811691161480156111b457506001600160a01b0383165f9081526007602052604090205460ff16155b80156111cd57505f546001600160a01b03848116911614155b15611224576003548211156112245760405162461bcd60e51b815260206004820152601c60248201527f42757920616d6f756e742065786365656473206d6178206c696d69740000000060448201526064016106b2565b6001600160a01b0384165f9081526007602052604090205460ff168061126157506001600160a01b0383165f9081526007602052604090205460ff165b1561126957505f5b600a546001600160a01b038481169116148015906112955750600a546001600160a01b03858116911614155b1561129d57505f5b80156114f757600e5465010000000000900460ff166113cf575f6064601154846112c79190611c5f565b6112d19190611c89565b90505f6112de8285611b5e565b305f908152600c60205260409020549091506112fa908361171f565b305f908152600c6020526040808220929092556001600160a01b038816815220546113259085611784565b6001600160a01b038088165f908152600c60205260408082209390935590871681522054611353908261171f565b6001600160a01b038087165f818152600c602052604090819020939093559151908816905f80516020611d47833981519152906113939085815260200190565b60405180910390a360405182815230906001600160a01b038816905f80516020611d478339815191529060200160405180910390a35050611587565b5f6064601354846113e09190611c5f565b6113ea9190611c89565b90505f6113f78285611b5e565b305f908152600c6020526040902054909150611413908361171f565b305f908152600c6020526040808220929092556001600160a01b0388168152205461143e9085611784565b6001600160a01b038088165f908152600c6020526040808220939093559087168152205461146c908261171f565b6001600160a01b038087165f818152600c602052604090819020939093559151908816905f80516020611d47833981519152906114ac9085815260200190565b60405180910390a360405182815230906001600160a01b038816905f80516020611d478339815191529060200160405180910390a35050600e805465ff000000000019169055611587565b6001600160a01b0384165f908152600c60205260409020546115199083611784565b6001600160a01b038086165f908152600c60205260408082209390935590851681522054611547908361171f565b6001600160a01b038085165f818152600c602052604090819020939093559151908616905f80516020611d47833981519152906110879086815260200190565b50505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b305f908152600c602052604090205480156116d757600e546301000000900460ff1615610ba857801561168557600f54305f908152600c6020526040812054909160649161162a9190611c5f565b6116349190611c89565b905080611640816117c5565b478015611587576006546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561167e573d5f803e3d5ffd5b5050505050565b60405162461bcd60e51b815260206004820152602160248201527f4e6f205448554d4220746f6b656e7320617661696c61626c6520746f207377616044820152600760fc1b60648201526084016106b2565b60405162461bcd60e51b815260206004820152601c60248201527f4e6f2062616c616e636520617661696c61626c6520746f20737761700000000060448201526064016106b2565b5f8061172b8385611c76565b90508381101561177d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106b2565b9392505050565b5f61177d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611915565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106117f8576117f8611ca8565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561184f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118739190611cbc565b8160018151811061188657611886611ca8565b6001600160a01b0392831660209182029290920101526009546118ac9130911684610c0c565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906118e49085905f90869030904290600401611cd7565b5f604051808303815f87803b1580156118fb575f80fd5b505af115801561190d573d5f803e3d5ffd5b505050505050565b5f81848411156119385760405162461bcd60e51b81526004016106b2919061194d565b505f6119448486611b5e565b95945050505050565b5f6020808352835180828501525f5b818110156119785785810183015185820160400152820161195c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ba8575f80fd5b5f80604083850312156119bd575f80fd5b82356119c881611998565b946020939093013593505050565b5f602082840312156119e6575f80fd5b5035919050565b5f805f606084860312156119ff575f80fd5b8335611a0a81611998565b92506020840135611a1a81611998565b929592945050506040919091013590565b5f805f60608486031215611a3d575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611a64575f80fd5b813561177d81611998565b80358015158114611a7e575f80fd5b919050565b5f8060408385031215611a94575f80fd5b8235611a9f81611998565b9150611aad60208401611a6f565b90509250929050565b5f60208284031215611ac6575f80fd5b61177d82611a6f565b5f8060408385031215611ae0575f80fd5b8235611aeb81611998565b91506020830135611afb81611998565b809150509250929050565b60208082526024908201527f4f776e61626c653a207468652063616c6c6572206973206e6f7420746865206f6040820152633bb732b960e11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561068357610683611b4a565b600181815b80851115611bab57815f1904821115611b9157611b91611b4a565b80851615611b9e57918102915b93841c9390800290611b76565b509250929050565b5f82611bc157506001610683565b81611bcd57505f610683565b8160018114611be35760028114611bed57611c09565b6001915050610683565b60ff841115611bfe57611bfe611b4a565b50506001821b610683565b5060208310610133831016604e8410600b8410161715611c2c575081810a610683565b611c368383611b71565b805f1904821115611c4957611c49611b4a565b029392505050565b5f61177d60ff841683611bb3565b808202811582820484141761068357610683611b4a565b8082018082111561068357610683611b4a565b5f82611ca357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611ccc575f80fd5b815161177d81611998565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d255784516001600160a01b031683529383019391830191600101611d00565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ec5d6d8a2941eaaad9b5311d70de0680be8bdeacfa2de6f03c44d1f00d2120b864736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101e9575f3560e01c8063893d20e811610108578063d0d41fe11161009d578063f515a55c1161006d578063f515a55c146105c0578063f7de4dfd146105df578063fcd2e049146105fd578063feae65e71461061c578063ff5211bb14610654575f80fd5b8063d0d41fe11461051f578063d8a0663c1461053e578063dd62ed3e1461055d578063f2fde38b146105a1575f80fd5b8063a14aee61116100d8578063a14aee611461047a578063a9059cbb14610499578063c683630d146104b8578063c6da3051146104ef575f80fd5b8063893d20e8146104455780638da5cb5b14610445578063925542871461046157806395d89b4114610230575f80fd5b806336a0f8a51161017e5780636612e66f1161014e5780636612e66f146103bf57806370a08231146103de578063715018a61461041257806385438bc014610426575f80fd5b806336a0f8a51461032b57806349bd5a5e1461034a5780635342acb41461036957806353d6fd59146103a0575f80fd5b80631694505e116101b95780631694505e146102b457806318160ddd146102d357806323b872dd146102f1578063313ce56714610310575f80fd5b806301e51ae8146101f457806306fdde0314610230578063095ea7b3146102645780630a80c0cc14610293575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b50600654610213906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b575f80fd5b5060408051808201825260068152650a8829e849eb60d31b60208201529051610227919061194d565b34801561026f575f80fd5b5061028361027e3660046119ac565b610673565b6040519015158152602001610227565b34801561029e575f80fd5b506102b26102ad3660046119d6565b610689565b005b3480156102bf575f80fd5b50600954610213906001600160a01b031681565b3480156102de575f80fd5b506001545b604051908152602001610227565b3480156102fc575f80fd5b5061028361030b3660046119ed565b6106c5565b34801561031b575f80fd5b5060405160098152602001610227565b348015610336575f80fd5b506102b2610345366004611a2b565b610713565b348015610355575f80fd5b50600a54610213906001600160a01b031681565b348015610374575f80fd5b50610283610383366004611a54565b6001600160a01b03165f9081526007602052604090205460ff1690565b3480156103ab575f80fd5b506102b26103ba366004611a83565b61078c565b3480156103ca575f80fd5b506102b26103d9366004611a83565b6107df565b3480156103e9575f80fd5b506102e36103f8366004611a54565b6001600160a01b03165f908152600c602052604090205490565b34801561041d575f80fd5b506102b2610832565b348015610431575f80fd5b50600e546102839062010000900460ff1681565b348015610450575f80fd5b505f546001600160a01b0316610213565b34801561046c575f80fd5b50600e546102839060ff1681565b348015610485575f80fd5b506102b2610494366004611ab6565b610866565b3480156104a4575f80fd5b506102836104b33660046119ac565b6108a2565b3480156104c3575f80fd5b506102836104d2366004611a54565b6001600160a01b03165f9081526008602052604090205460ff1690565b3480156104fa575f80fd5b5060125460135460045460408051938452602084019290925290820152606001610227565b34801561052a575f80fd5b506102b2610539366004611a54565b61099d565b348015610549575f80fd5b506102b26105583660046119d6565b610a47565b348015610568575f80fd5b506102e3610577366004611acf565b6001600160a01b039182165f908152600d6020908152604080832093909416825291909152205490565b3480156105ac575f80fd5b506102b26105bb366004611a54565b610b11565b3480156105cb575f80fd5b506102b26105da3660046119d6565b610bab565b3480156105ea575f80fd5b50600e5461028390610100900460ff1681565b348015610608575f80fd5b506102b26106173660046119d6565b610bd9565b348015610627575f80fd5b50601054601154600254600354604080519485526020850193909352918301526060820152608001610227565b34801561065f575f80fd5b50600e805462ffff00191662010100179055005b5f61067f338484610c0c565b5060015b92915050565b5f546001600160a01b031633146106bb5760405162461bcd60e51b81526004016106b290611b06565b60405180910390fd5b6012819055601355565b6001600160a01b0383165f908152600d602090815260408083203380855292528220546106fe9186916106f9908690611b5e565b610c0c565b610709848484610d2f565b5060019392505050565b5f546001600160a01b0316331461073c5760405162461bcd60e51b81526004016106b290611b06565b6107486009600a611c51565b6107529084611c5f565b6002556107616009600a611c51565b61076b9083611c5f565b60035561077a6009600a611c51565b6107849082611c5f565b600455505050565b5f546001600160a01b031633146107b55760405162461bcd60e51b81526004016106b290611b06565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146108085760405162461bcd60e51b81526004016106b290611b06565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461085b5760405162461bcd60e51b81526004016106b290611b06565b6108645f61158d565b565b5f546001600160a01b0316331461088f5760405162461bcd60e51b81526004016106b290611b06565b600e805460ff1916911515919091179055565b600a545f906001600160a01b038481169116148015906108cf57505f546001600160a01b03848116911614155b80156108f357506001600160a01b0383165f9081526007602052604090205460ff16155b15610992576002546001600160a01b0384165f908152600c602052604090205461091e908490611c76565b11156109925760405162461bcd60e51b815260206004820152603960248201527f5448554d423a20726563697069656e742077616c6c65742062616c616e63652060448201527f6578636565647320746865206d6178696d756d206c696d69740000000000000060648201526084016106b2565b61067f338484610d2f565b5f546001600160a01b031633146109c65760405162461bcd60e51b81526004016106b290611b06565b6001600160a01b038116610a0e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016106b2565b600680546001600160a01b039092166001600160a01b0319909216821790555f908152600760205260409020805460ff19166001179055565b5f546001600160a01b03163314610a705760405162461bcd60e51b81526004016106b290611b06565b6064610a7b60015490565b610a86906001611c5f565b610a909190611c89565b811115610af55760405162461bcd60e51b815260206004820152602d60248201527f496e76616c69642076616c75653a2065786365656473203125206f662074686560448201526c20746f74616c20737570706c7960981b60648201526084016106b2565b610b016009600a611c51565b610b0b9082611c5f565b60055550565b5f546001600160a01b03163314610b3a5760405162461bcd60e51b81526004016106b290611b06565b6001600160a01b038116610b9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b2565b610ba88161158d565b50565b5f546001600160a01b03163314610bd45760405162461bcd60e51b81526004016106b290611b06565b600f55565b5f546001600160a01b03163314610c025760405162461bcd60e51b81526004016106b290611b06565b6010819055601155565b6001600160a01b038316610c6e5760405162461bcd60e51b8152602060048201526024808201527f5448554d423a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106b2565b6001600160a01b038216610ccf5760405162461bcd60e51b815260206004820152602260248201527f5448554d423a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106b2565b6001600160a01b038381165f818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d935760405162461bcd60e51b815260206004820152602560248201527f5448554d423a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106b2565b6001600160a01b038216610df55760405162461bcd60e51b815260206004820152602360248201527f5448554d423a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106b2565b5f8111610e5d5760405162461bcd60e51b815260206004820152603060248201527f5448554d423a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016106b2565b600e54610100900460ff16610f2d576001600160a01b0383165f9081526007602052604090205460ff1680610ea957506001600160a01b0382165f9081526007602052604090205460ff165b80610ecb57506001600160a01b0383165f9081526008602052604090205460ff165b80610eed57506001600160a01b0382165f9081526008602052604090205460ff165b610f2d5760405162461bcd60e51b81526020600482015260116024820152701dd9481b9bdd081b185d5b98da081e595d607a1b60448201526064016106b2565b600e54610100900460ff16158015610f535750600a546001600160a01b03838116911614155b8015610f6d5750600a546001600160a01b03848116911614155b15610fca57600e5462010000900460ff16610fca5760405162461bcd60e51b815260206004820181905260248201527f5472616e7366657273206172652063757272656e746c792064697361626c656460448201526064016106b2565b600a546001906001600160a01b038481169116148015610ff657505f546001600160a01b038581169116145b15611095576001600160a01b0384165f908152600c602052604081208054849290611022908490611b5e565b90915550506001600160a01b0383165f908152600c60205260408120805484929061104e908490611c76565b92505081905550826001600160a01b0316846001600160a01b03165f80516020611d478339815191528460405161108791815260200190565b60405180910390a350505050565b600a546001600160a01b0384811691161480156110ca57506001600160a01b0384165f9081526007602052604090205460ff16155b80156110e357505f546001600160a01b03858116911614155b1561117f5760045482111561113a5760405162461bcd60e51b815260206004820152601d60248201527f53656c6c20616d6f756e742065786365656473206d6178206c696d697400000060448201526064016106b2565b600e805465ff0000000000198116650100000000001790915560ff1680156111725750600554305f908152600c602052604090205410155b1561117f5761117f6115dc565b600a546001600160a01b0385811691161480156111b457506001600160a01b0383165f9081526007602052604090205460ff16155b80156111cd57505f546001600160a01b03848116911614155b15611224576003548211156112245760405162461bcd60e51b815260206004820152601c60248201527f42757920616d6f756e742065786365656473206d6178206c696d69740000000060448201526064016106b2565b6001600160a01b0384165f9081526007602052604090205460ff168061126157506001600160a01b0383165f9081526007602052604090205460ff165b1561126957505f5b600a546001600160a01b038481169116148015906112955750600a546001600160a01b03858116911614155b1561129d57505f5b80156114f757600e5465010000000000900460ff166113cf575f6064601154846112c79190611c5f565b6112d19190611c89565b90505f6112de8285611b5e565b305f908152600c60205260409020549091506112fa908361171f565b305f908152600c6020526040808220929092556001600160a01b038816815220546113259085611784565b6001600160a01b038088165f908152600c60205260408082209390935590871681522054611353908261171f565b6001600160a01b038087165f818152600c602052604090819020939093559151908816905f80516020611d47833981519152906113939085815260200190565b60405180910390a360405182815230906001600160a01b038816905f80516020611d478339815191529060200160405180910390a35050611587565b5f6064601354846113e09190611c5f565b6113ea9190611c89565b90505f6113f78285611b5e565b305f908152600c6020526040902054909150611413908361171f565b305f908152600c6020526040808220929092556001600160a01b0388168152205461143e9085611784565b6001600160a01b038088165f908152600c6020526040808220939093559087168152205461146c908261171f565b6001600160a01b038087165f818152600c602052604090819020939093559151908816905f80516020611d47833981519152906114ac9085815260200190565b60405180910390a360405182815230906001600160a01b038816905f80516020611d478339815191529060200160405180910390a35050600e805465ff000000000019169055611587565b6001600160a01b0384165f908152600c60205260409020546115199083611784565b6001600160a01b038086165f908152600c60205260408082209390935590851681522054611547908361171f565b6001600160a01b038085165f818152600c602052604090819020939093559151908616905f80516020611d47833981519152906110879086815260200190565b50505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b305f908152600c602052604090205480156116d757600e546301000000900460ff1615610ba857801561168557600f54305f908152600c6020526040812054909160649161162a9190611c5f565b6116349190611c89565b905080611640816117c5565b478015611587576006546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561167e573d5f803e3d5ffd5b5050505050565b60405162461bcd60e51b815260206004820152602160248201527f4e6f205448554d4220746f6b656e7320617661696c61626c6520746f207377616044820152600760fc1b60648201526084016106b2565b60405162461bcd60e51b815260206004820152601c60248201527f4e6f2062616c616e636520617661696c61626c6520746f20737761700000000060448201526064016106b2565b5f8061172b8385611c76565b90508381101561177d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106b2565b9392505050565b5f61177d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611915565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106117f8576117f8611ca8565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561184f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118739190611cbc565b8160018151811061188657611886611ca8565b6001600160a01b0392831660209182029290920101526009546118ac9130911684610c0c565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906118e49085905f90869030904290600401611cd7565b5f604051808303815f87803b1580156118fb575f80fd5b505af115801561190d573d5f803e3d5ffd5b505050505050565b5f81848411156119385760405162461bcd60e51b81526004016106b2919061194d565b505f6119448486611b5e565b95945050505050565b5f6020808352835180828501525f5b818110156119785785810183015185820160400152820161195c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ba8575f80fd5b5f80604083850312156119bd575f80fd5b82356119c881611998565b946020939093013593505050565b5f602082840312156119e6575f80fd5b5035919050565b5f805f606084860312156119ff575f80fd5b8335611a0a81611998565b92506020840135611a1a81611998565b929592945050506040919091013590565b5f805f60608486031215611a3d575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611a64575f80fd5b813561177d81611998565b80358015158114611a7e575f80fd5b919050565b5f8060408385031215611a94575f80fd5b8235611a9f81611998565b9150611aad60208401611a6f565b90509250929050565b5f60208284031215611ac6575f80fd5b61177d82611a6f565b5f8060408385031215611ae0575f80fd5b8235611aeb81611998565b91506020830135611afb81611998565b809150509250929050565b60208082526024908201527f4f776e61626c653a207468652063616c6c6572206973206e6f7420746865206f6040820152633bb732b960e11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561068357610683611b4a565b600181815b80851115611bab57815f1904821115611b9157611b91611b4a565b80851615611b9e57918102915b93841c9390800290611b76565b509250929050565b5f82611bc157506001610683565b81611bcd57505f610683565b8160018114611be35760028114611bed57611c09565b6001915050610683565b60ff841115611bfe57611bfe611b4a565b50506001821b610683565b5060208310610133831016604e8410600b8410161715611c2c575081810a610683565b611c368383611b71565b805f1904821115611c4957611c49611b4a565b029392505050565b5f61177d60ff841683611bb3565b808202811582820484141761068357610683611b4a565b8082018082111561068357610683611b4a565b5f82611ca357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611ccc575f80fd5b815161177d81611998565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d255784516001600160a01b031683529383019391830191600101611d00565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ec5d6d8a2941eaaad9b5311d70de0680be8bdeacfa2de6f03c44d1f00d2120b864736f6c63430008140033

Deployed Bytecode Sourcemap

4871:11488:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5453:63;;;;;;;;;;-1:-1:-1;5453:63:0;;;;-1:-1:-1;;;;;5453:63:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5453:63:0;;;;;;;;7096:83;;;;;;;;;;-1:-1:-1;7166:5:0;;;;;;;;;;;-1:-1:-1;;;7166:5:0;;;;7096:83;;;;7166:5;7096:83;:::i;9064:159::-;;;;;;;;;;-1:-1:-1;9064:159:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;9064:159:0;1231:187:1;16200:154:0;;;;;;;;;;-1:-1:-1;16200:154:0;;;;;:::i;:::-;;:::i;:::-;;5635:41;;;;;;;;;;-1:-1:-1;5635:41:0;;;;-1:-1:-1;;;;;5635:41:0;;;7377:100;;;;;;;;;;-1:-1:-1;7457:12:0;;7377:100;;;1988:25:1;;;1976:2;1961:18;7377:100:0;1842:177:1;9231:262:0;;;;;;;;;;-1:-1:-1;9231:262:0;;;;;:::i;:::-;;:::i;7286:83::-;;;;;;;;;;-1:-1:-1;7286:83:0;;5121:1;2627:36:1;;2615:2;2600:18;7286:83:0;2485:184:1;15764:274:0;;;;;;;;;;-1:-1:-1;15764:274:0;;;;;:::i;:::-;;:::i;5683:28::-;;;;;;;;;;-1:-1:-1;5683:28:0;;;;-1:-1:-1;;;;;5683:28:0;;;7614:124;;;;;;;;;;-1:-1:-1;7614:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;7703:27:0;7679:4;7703:27;;;:18;:27;;;;;;;;;7614:124;15185:120;;;;;;;;;;-1:-1:-1;15185:120:0;;;;;:::i;:::-;;:::i;15045:132::-;;;;;;;;;;-1:-1:-1;15045:132:0;;;;;:::i;:::-;;:::i;7487:119::-;;;;;;;;;;-1:-1:-1;7487:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7580:18:0;7553:7;7580:18;;;:9;:18;;;;;;;7487:119;3055:94;;;;;;;;;;;;;:::i;5947:37::-;;;;;;;;;;-1:-1:-1;5947:37:0;;;;;;;;;;;7001:83;;;;;;;;;;-1:-1:-1;7042:7:0;2901:6;-1:-1:-1;;;;;2901:6:0;7001:83;;5878:28;;;;;;;;;;-1:-1:-1;5878:28:0;;;;;;;;15313:89;;;;;;;;;;-1:-1:-1;15313:89:0;;;;;:::i;:::-;;:::i;8484:421::-;;;;;;;;;;-1:-1:-1;8484:421:0;;;;;:::i;:::-;;:::i;7746:112::-;;;;;;;;;;-1:-1:-1;7746:112:0;;;;;:::i;:::-;-1:-1:-1;;;;;7829:21:0;7805:4;7829:21;;;:12;:21;;;;;;;;;7746:112;8198:276;;;;;;;;;;-1:-1:-1;8369:15:0;;8411:14;;8452;;8198:276;;;4119:25:1;;;4175:2;4160:18;;4153:34;;;;4203:18;;;4196:34;4107:2;4092:18;8198:276:0;3917:319:1;14721:206:0;;;;;;;;;;-1:-1:-1;14721:206:0;;;;;:::i;:::-;;:::i;15530:226::-;;;;;;;;;;-1:-1:-1;15530:226:0;;;;;:::i;:::-;;:::i;8913:143::-;;;;;;;;;;-1:-1:-1;8913:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;9021:18:0;;;8994:7;9021:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8913:143;3157:192;;;;;;;;;;-1:-1:-1;3157:192:0;;;;;:::i;:::-;;:::i;15410:112::-;;;;;;;;;;-1:-1:-1;15410:112:0;;;;;:::i;:::-;;:::i;5913:27::-;;;;;;;;;;-1:-1:-1;5913:27:0;;;;;;;;;;;16046:144;;;;;;;;;;-1:-1:-1;16046:144:0;;;;;:::i;:::-;;:::i;7866:324::-;;;;;;;;;;-1:-1:-1;8060:11:0;;8097:13;;8133:10;;8169:13;;7866:324;;;4865:25:1;;;4921:2;4906:18;;4899:34;;;;4949:18;;;4942:34;5007:2;4992:18;;4985:34;4852:3;4837:19;7866:324:0;4634:391:1;14936:101:0;;;;;;;;;;-1:-1:-1;14980:7:0;:14;;-1:-1:-1;;15005:24:0;;;;;16200:154;9064:159;9139:4;9156:37;9165:10;9177:7;9186:6;9156:8;:37::i;:::-;-1:-1:-1;9211:4:0;9064:159;;;;;:::o;16200:154::-;2874:7;2901:6;-1:-1:-1;;;;;2901:6:0;1231:10;2963:23;2955:72;;;;-1:-1:-1;;;2955:72:0;;;;;;;:::i;:::-;;;;;;;;;16275:15:::1;:28:::0;;;16314:14:::1;:32:::0;16200:154::o;9231:262::-;-1:-1:-1;;;;;9375:19:0;;9329:4;9375:19;;;:11;:19;;;;;;;;9363:10;9375:31;;;;;;;;9346:70;;9355:6;;9375:40;;9409:6;;9375:40;:::i;:::-;9346:8;:70::i;:::-;9427:36;9437:6;9445:9;9456:6;9427:9;:36::i;:::-;-1:-1:-1;9481:4:0;9231:262;;;;;:::o;15764:274::-;2874:7;2901:6;-1:-1:-1;;;;;2901:6:0;1231:10;2963:23;2955:72;;;;-1:-1:-1;;;2955:72:0;;;;;;;:::i;:::-;15905:13:::1;5121:1;15905:2;:13;:::i;:::-;15893:25;::::0;:9;:25:::1;:::i;:::-;15880:10;:38:::0;15960:13:::1;5121:1;15960:2;:13;:::i;:::-;15945:28;::::0;:12;:28:::1;:::i;:::-;15929:13;:44:::0;16017:13:::1;5121:1;16017:2;:13;:::i;:::-;16001:29;::::0;:13;:29:::1;:::i;:::-;15984:14;:46:::0;-1:-1:-1;;;15764:274:0:o;15185:120::-;2874:7;2901:6;-1:-1:-1;;;;;2901:6:0;1231:10;2963:23;2955:72;;;;-1:-1:-1;;;2955:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15267:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:30;;-1:-1:-1;;15267:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15185:120::o;15045:132::-;2874:7;2901:6;-1:-1:-1;;;;;2901:6:0;1231:10;2963:23;2955:72;;;;-1:-1:-1;;;2955:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15133:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:36;;-1:-1:-1;;15133:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15045:132::o;3055:94::-;2874:7;2901:6;-1:-1:-1;;;;;2901:6:0;1231:10;2963:23;2955:72;;;;-1:-1:-1;;;2955:72:0;;;;;;;:::i;:::-;3120:21:::1;3138:1;3120:9;:21::i;:::-;3055:94::o:0;15313:89::-;2874:7;2901:6;-1:-1:-1;;;;;2901:6:0;1231:10;2963:23;2955:72;;;;-1:-1:-1;;;2955:72:0;;;;;;;:::i;:::-;15376:9:::1;:18:::0;;-1:-1:-1;;15376:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15313:89::o;8484:421::-;8597:13;;8562:4;;-1:-1:-1;;;;;8584:26:0;;;8597:13;;8584:26;;;;:50;;-1:-1:-1;2874:7:0;2901:6;-1:-1:-1;;;;;8614:20:0;;;2901:6;;8614:20;;8584:50;:84;;;;-1:-1:-1;;;;;;8639:29:0;;;;;;:18;:29;;;;;;;;8638:30;8584:84;8581:232;;;8727:10;;-1:-1:-1;;;;;8694:20:0;;;;;;:9;:20;;;;;;:29;;8717:6;;8694:29;:::i;:::-;:43;;8686:113;;;;-1:-1:-1;;;8686:113:0;;7588:2:1;8686:113:0;;;7570:21:1;7627:2;7607:18;;;7600:30;7666:34;7646:18;;;7639:62;7737:27;7717:18;;;7710:55;7782:19;;8686:113:0;7386:421:1;8686:113:0;8825:40;8835:10;8847:9;8858:6;8825:9;:40::i;14721:206::-;2874:7;2901:6;-1:-1:-1;;;;;2901:6:0;1231:10;2963:23;2955:72;;;;-1:-1:-1;;;2955:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14800:24:0;::::1;14792:52;;;::::0;-1:-1:-1;;;14792:52:0;;8014:2:1;14792:52:0::1;::::0;::::1;7996:21:1::0;8053:2;8033:18;;;8026:30;-1:-1:-1;;;8072:18:1;;;8065:45;8127:18;;14792:52:0::1;7812:339:1::0;14792:52:0::1;14855:3;:16:::0;;-1:-1:-1;;;;;14855:16:0;;::::1;-1:-1:-1::0;;;;;;14855:16:0;;::::1;::::0;::::1;::::0;;:3:::1;14882:30:::0;;;:18:::1;:30;::::0;;;;:37;;-1:-1:-1;;14882:37:0::1;14855:16:::0;14882:37:::1;::::0;;14721:206::o;15530:226::-;2874:7;2901:6;-1:-1:-1;;;;;2901:6:0;1231:10;2963:23;2955:72;;;;-1:-1:-1;;;2955:72:0;;;;;;;:::i;:::-;15647:3:::1;15626:13;7457:12:::0;;;7377:100;15626:13:::1;:17;::::0;15642:1:::1;15626:17;:::i;:::-;15625:25;;;;:::i;:::-;15610:11;:40;;15602:98;;;::::0;-1:-1:-1;;;15602:98:0;;8580:2:1;15602:98:0::1;::::0;::::1;8562:21:1::0;8619:2;8599:18;;;8592:30;8658:34;8638:18;;;8631:62;-1:-1:-1;;;8709:18:1;;;8702:43;8762:19;;15602:98:0::1;8378:409:1::0;15602:98:0::1;15735:13;5121:1;15735:2;:13;:::i;:::-;15721:27;::::0;:11;:27:::1;:::i;:::-;15711:7;:37:::0;-1:-1:-1;15530:226:0:o;3157:192::-;2874:7;2901:6;-1:-1:-1;;;;;2901:6:0;1231:10;2963:23;2955:72;;;;-1:-1:-1;;;2955:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3246:22:0;::::1;3238:73;;;::::0;-1:-1:-1;;;3238:73:0;;8994:2:1;3238:73:0::1;::::0;::::1;8976:21:1::0;9033:2;9013:18;;;9006:30;9072:34;9052:18;;;9045:62;-1:-1:-1;;;9123:18:1;;;9116:36;9169:19;;3238:73:0::1;8792:402:1::0;3238:73:0::1;3322:19;3332:8;3322:9;:19::i;:::-;3157:192:::0;:::o;15410:112::-;2874:7;2901:6;-1:-1:-1;;;;;2901:6:0;1231:10;2963:23;2955:72;;;;-1:-1:-1;;;2955:72:0;;;;;;;:::i;:::-;15488:12:::1;:26:::0;15410:112::o;16046:144::-;2874:7;2901:6;-1:-1:-1;;;;;2901:6:0;1231:10;2963:23;2955:72;;;;-1:-1:-1;;;2955:72:0;;;;;;;:::i;:::-;16120:11:::1;:24:::0;;;16155:13:::1;:27:::0;16046:144::o;9501:337::-;-1:-1:-1;;;;;9594:19:0;;9586:68;;;;-1:-1:-1;;;9586:68:0;;9401:2:1;9586:68:0;;;9383:21:1;9440:2;9420:18;;;9413:30;9479:34;9459:18;;;9452:62;-1:-1:-1;;;9530:18:1;;;9523:34;9574:19;;9586:68:0;9199:400:1;9586:68:0;-1:-1:-1;;;;;9673:21:0;;9665:68;;;;-1:-1:-1;;;9665:68:0;;9806:2:1;9665:68:0;;;9788:21:1;9845:2;9825:18;;;9818:30;9884:34;9864:18;;;9857:62;-1:-1:-1;;;9935:18:1;;;9928:32;9977:19;;9665:68:0;9604:398:1;9665:68:0;-1:-1:-1;;;;;9746:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9798:32;;1988:25:1;;;9798:32:0;;1961:18:1;9798:32:0;;;;;;;9501:337;;;:::o;9846:3313::-;-1:-1:-1;;;;;9945:20:0;;9937:70;;;;-1:-1:-1;;;9937:70:0;;10209:2:1;9937:70:0;;;10191:21:1;10248:2;10228:18;;;10221:30;10287:34;10267:18;;;10260:62;-1:-1:-1;;;10338:18:1;;;10331:35;10383:19;;9937:70:0;10007:401:1;9937:70:0;-1:-1:-1;;;;;10026:23:0;;10018:71;;;;-1:-1:-1;;;10018:71:0;;10615:2:1;10018:71:0;;;10597:21:1;10654:2;10634:18;;;10627:30;10693:34;10673:18;;;10666:62;-1:-1:-1;;;10744:18:1;;;10737:33;10787:19;;10018:71:0;10413:399:1;10018:71:0;10117:1;10108:6;:10;10100:71;;;;-1:-1:-1;;;10100:71:0;;11019:2:1;10100:71:0;;;11001:21:1;11058:2;11038:18;;;11031:30;11097:34;11077:18;;;11070:62;-1:-1:-1;;;11148:18:1;;;11141:46;11204:19;;10100:71:0;10817:412:1;10100:71:0;10186:7;;;;;;;10182:155;;-1:-1:-1;;;;;10203:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;10233:29:0;;;;;;:18;:29;;;;;;;;10203:59;:83;;;-1:-1:-1;;;;;;10266:20:0;;;;;;:12;:20;;;;;;;;10203:83;:110;;;-1:-1:-1;;;;;;10290:23:0;;;;;;:12;:23;;;;;;;;10203:110;10195:140;;;;-1:-1:-1;;;10195:140:0;;11436:2:1;10195:140:0;;;11418:21:1;11475:2;11455:18;;;11448:30;-1:-1:-1;;;11494:18:1;;;11487:47;11551:18;;10195:140:0;11234:341:1;10195:140:0;10351:7;;;;;;;10350:8;:38;;;;-1:-1:-1;10375:13:0;;-1:-1:-1;;;;;10362:26:0;;;10375:13;;10362:26;;10350:38;:65;;;;-1:-1:-1;10402:13:0;;-1:-1:-1;;;;;10392:23:0;;;10402:13;;10392:23;;10350:65;10347:135;;;10426:17;;;;;;;10418:62;;;;-1:-1:-1;;;10418:62:0;;11782:2:1;10418:62:0;;;11764:21:1;;;11801:18;;;11794:30;11860:34;11840:18;;;11833:62;11912:18;;10418:62:0;11580:356:1;10418:62:0;10548:13;;10512:4;;-1:-1:-1;;;;;10535:26:0;;;10548:13;;10535:26;:47;;;;-1:-1:-1;2874:7:0;2901:6;-1:-1:-1;;;;;10565:17:0;;;2901:6;;10565:17;10535:47;10531:230;;;-1:-1:-1;;;;;10601:17:0;;;;;;:9;:17;;;;;:27;;10622:6;;10601:17;:27;;10622:6;;10601:27;:::i;:::-;;;;-1:-1:-1;;;;;;;10643:20:0;;;;;;:9;:20;;;;;:30;;10667:6;;10643:20;:30;;10667:6;;10643:30;:::i;:::-;;;;;;;;10710:9;-1:-1:-1;;;;;10693:35:0;10702:6;-1:-1:-1;;;;;10693:35:0;-1:-1:-1;;;;;;;;;;;10721:6:0;10693:35;;;;1988:25:1;;1976:2;1961:18;;1842:177;10693:35:0;;;;;;;;10743:7;9846:3313;;;:::o;10531:230::-;10808:13;;-1:-1:-1;;;;;10795:26:0;;;10808:13;;10795:26;:57;;;;-1:-1:-1;;;;;;10826:26:0;;;;;;:18;:26;;;;;;;;10825:27;10795:57;:78;;;;-1:-1:-1;2874:7:0;2901:6;-1:-1:-1;;;;;10856:17:0;;;2901:6;;10856:17;;10795:78;10792:362;;;10913:14;;10903:6;:24;;10895:66;;;;-1:-1:-1;;;10895:66:0;;12143:2:1;10895:66:0;;;12125:21:1;12182:2;12162:18;;;12155:30;12221:31;12201:18;;;12194:59;12270:18;;10895:66:0;11941:353:1;10895:66:0;10982:10;:17;;-1:-1:-1;;10982:17:0;;;;;;;;11038:9;:48;;;;-1:-1:-1;11079:7:0;;11069:4;7553:7;7580:18;;;:9;:18;;;;;;11051:35;;11038:48;11035:106;;;11112:9;:7;:9::i;:::-;11194:13;;-1:-1:-1;;;;;11184:23:0;;;11194:13;;11184:23;:57;;;;-1:-1:-1;;;;;;11212:29:0;;;;;;:18;:29;;;;;;;;11211:30;11184:57;:81;;;;-1:-1:-1;2874:7:0;2901:6;-1:-1:-1;;;;;11245:20:0;;;2901:6;;11245:20;;11184:81;11181:212;;;11321:13;;11311:6;:23;;11303:64;;;;-1:-1:-1;;;11303:64:0;;12501:2:1;11303:64:0;;;12483:21:1;12540:2;12520:18;;;12513:30;12579;12559:18;;;12552:58;12627:18;;11303:64:0;12299:352:1;11303:64:0;-1:-1:-1;;;;;11409:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;11439:29:0;;;;;;:18;:29;;;;;;;;11409:59;11405:88;;;-1:-1:-1;11485:5:0;11405:88;11520:13;;-1:-1:-1;;;;;11507:26:0;;;11520:13;;11507:26;;;;:53;;-1:-1:-1;11547:13:0;;-1:-1:-1;;;;;11537:23:0;;;11547:13;;11537:23;;11507:53;11503:82;;;-1:-1:-1;11577:5:0;11503:82;11601:10;11597:1555;;;11638:10;;;;;;;11634:1270;;11674:22;11724:3;11708:13;;11699:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11674:53;-1:-1:-1;11750:22:0;11775:23;11674:53;11775:6;:23;:::i;:::-;11909:4;11891:24;;;;:9;:24;;;;;;11750:48;;-1:-1:-1;11891:44:0;;11920:14;11891:28;:44::i;:::-;11882:4;11864:24;;;;:9;:24;;;;;;:71;;;;-1:-1:-1;;;;;11978:17:0;;;;;;:29;;12000:6;11978:21;:29::i;:::-;-1:-1:-1;;;;;11958:17:0;;;;;;;:9;:17;;;;;;:49;;;;12053:20;;;;;;;:40;;12078:14;12053:24;:40::i;:::-;-1:-1:-1;;;;;12030:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12123:43;;;;;;-1:-1:-1;;;;;;;;;;;12123:43:0;;;12151:14;1988:25:1;;1976:2;1961:18;;1842:177;12123:43:0;;;;;;;;12194:47;;1988:25:1;;;12219:4:0;;-1:-1:-1;;;;;12194:47:0;;;-1:-1:-1;;;;;;;;;;;12194:47:0;1976:2:1;1961:18;12194:47:0;;;;;;;11649:614;;11597:1555;;11634:1270;12292:22;12343:3;12326:14;;12317:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;12292:54;-1:-1:-1;12369:22:0;12394:23;12292:54;12394:6;:23;:::i;:::-;12509:4;12491:24;;;;:9;:24;;;;;;12369:48;;-1:-1:-1;12491:44:0;;12520:14;12491:28;:44::i;:::-;12482:4;12464:24;;;;:9;:24;;;;;;:71;;;;-1:-1:-1;;;;;12578:17:0;;;;;;:29;;12600:6;12578:21;:29::i;:::-;-1:-1:-1;;;;;12558:17:0;;;;;;;:9;:17;;;;;;:49;;;;12653:20;;;;;;;:40;;12678:14;12653:24;:40::i;:::-;-1:-1:-1;;;;;12630:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12723:43;;;;;;-1:-1:-1;;;;;;;;;;;12723:43:0;;;12751:14;1988:25:1;;1976:2;1961:18;;1842:177;12723:43:0;;;;;;;;12794:47;;1988:25:1;;;12819:4:0;;-1:-1:-1;;;;;12794:47:0;;;-1:-1:-1;;;;;;;;;;;12794:47:0;1976:2:1;1961:18;12794:47:0;;;;;;;-1:-1:-1;;12866:10:0;:18;;-1:-1:-1;;12866:18:0;;;11597:1555;;;-1:-1:-1;;;;;12974:17:0;;;;;;:9;:17;;;;;;:29;;12996:6;12974:21;:29::i;:::-;-1:-1:-1;;;;;12954:17:0;;;;;;;:9;:17;;;;;;:49;;;;13045:20;;;;;;;:32;;13070:6;13045:24;:32::i;:::-;-1:-1:-1;;;;;13022:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13103:35;;;;;;-1:-1:-1;;;;;;;;;;;13103:35:0;;;13131:6;1988:25:1;;1976:2;1961:18;;1842:177;11597:1555:0;9924:3235;9846:3313;;;:::o;3357:173::-;3413:16;3432:6;;-1:-1:-1;;;;;3449:17:0;;;-1:-1:-1;;;;;;3449:17:0;;;;;;3482:40;;3432:6;;;;;;;3482:40;;3413:16;3482:40;3402:128;3357:173;:::o;13835:842::-;13924:4;13875:28;7580:18;;;:9;:18;;;;;;13946:24;;13943:713;;13992:10;;;;;;;13989:566;;;14027:24;;14024:514;;14144:12;;14135:4;14097:17;7580:18;;;:9;:18;;;;;;14097:17;;14159:3;;14117:39;;;;:::i;:::-;:45;;;;:::i;:::-;14097:65;-1:-1:-1;14097:65:0;14238:24;14097:65;14238:16;:24::i;:::-;14313:21;14363:19;;14359:66;;14393:3;;14385:38;;-1:-1:-1;;;;;14393:3:0;;;;14385:38;;;;;14407:15;;14393:3;14385:38;14393:3;14385:38;14407:15;14393:3;14385:38;;;;;;;;;;;;;;;;;;;;;14052:394;;;3157:192;:::o;14024:514::-;14475:43;;-1:-1:-1;;;14475:43:0;;12858:2:1;14475:43:0;;;12840:21:1;12897:2;12877:18;;;12870:30;12936:34;12916:18;;;12909:62;-1:-1:-1;;;12987:18:1;;;12980:31;13028:19;;14475:43:0;12656:397:1;13943:713:0;14588:38;;-1:-1:-1;;;14588:38:0;;13260:2:1;14588:38:0;;;13242:21:1;13299:2;13279:18;;;13272:30;13338;13318:18;;;13311:58;13386:18;;14588:38:0;13058:352:1;1405:179:0;1463:7;;1495:5;1499:1;1495;:5;:::i;:::-;1483:17;;1524:1;1519;:6;;1511:46;;;;-1:-1:-1;;;1511:46:0;;13617:2:1;1511:46:0;;;13599:21:1;13656:2;13636:18;;;13629:30;13695:29;13675:18;;;13668:57;13742:18;;1511:46:0;13415:351:1;1511:46:0;1575:1;1405:179;-1:-1:-1;;;1405:179:0:o;1593:136::-;1651:7;1678:43;1682:1;1685;1678:43;;;;;;;;;;;;;;;;;:3;:43::i;13169:656::-;13319:16;;;13333:1;13319:16;;;;;;;;13295:21;;13319:16;;;;;;;;;;-1:-1:-1;13319:16:0;13295:40;;13364:4;13346;13351:1;13346:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13346:23:0;;;:7;;;;;;;;;;:23;;;;13390:15;;:22;;;-1:-1:-1;;;13390:22:0;;;;:15;;;;;:20;;:22;;;;;13346:7;;13390:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13380:4;13385:1;13380:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13380:32:0;;;:7;;;;;;;;;:32;13524:15;;13492:62;;13509:4;;13524:15;13542:11;13492:8;:62::i;:::-;13593:15;;:224;;-1:-1:-1;;;13593:224:0;;-1:-1:-1;;;;;13593:15:0;;;;:66;;:224;;13674:11;;13593:15;;13744:4;;13771;;13791:15;;13593:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13224:601;13169:656;:::o;1738:224::-;1858:7;1894:12;1886:6;;;;1878:29;;;;-1:-1:-1;;;1878:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1918:9:0;1930:5;1934:1;1930;:5;:::i;:::-;1918:17;1738:224;-1:-1:-1;;;;;1738:224:0:o;222:548:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;761:2;754;750:7;745:2;737:6;733:15;729:29;718:9;714:45;710:54;702:62;;;;222:548;;;;:::o;775:131::-;-1:-1:-1;;;;;850:31:1;;840:42;;830:70;;896:1;893;886:12;911:315;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1423:180::-;1482:6;1535:2;1523:9;1514:7;1510:23;1506:32;1503:52;;;1551:1;1548;1541:12;1503:52;-1:-1:-1;1574:23:1;;1423:180;-1:-1:-1;1423:180:1:o;2024:456::-;2101:6;2109;2117;2170:2;2158:9;2149:7;2145:23;2141:32;2138:52;;;2186:1;2183;2176:12;2138:52;2225:9;2212:23;2244:31;2269:5;2244:31;:::i;:::-;2294:5;-1:-1:-1;2351:2:1;2336:18;;2323:32;2364:33;2323:32;2364:33;:::i;:::-;2024:456;;2416:7;;-1:-1:-1;;;2470:2:1;2455:18;;;;2442:32;;2024:456::o;2674:316::-;2751:6;2759;2767;2820:2;2808:9;2799:7;2795:23;2791:32;2788:52;;;2836:1;2833;2826:12;2788:52;-1:-1:-1;;2859:23:1;;;2929:2;2914:18;;2901:32;;-1:-1:-1;2980:2:1;2965:18;;;2952:32;;2674:316;-1:-1:-1;2674:316:1:o;2995:247::-;3054:6;3107:2;3095:9;3086:7;3082:23;3078:32;3075:52;;;3123:1;3120;3113:12;3075:52;3162:9;3149:23;3181:31;3206:5;3181:31;:::i;3247:160::-;3312:20;;3368:13;;3361:21;3351:32;;3341:60;;3397:1;3394;3387:12;3341:60;3247:160;;;:::o;3412:315::-;3477:6;3485;3538:2;3526:9;3517:7;3513:23;3509:32;3506:52;;;3554:1;3551;3544:12;3506:52;3593:9;3580:23;3612:31;3637:5;3612:31;:::i;:::-;3662:5;-1:-1:-1;3686:35:1;3717:2;3702:18;;3686:35;:::i;:::-;3676:45;;3412:315;;;;;:::o;3732:180::-;3788:6;3841:2;3829:9;3820:7;3816:23;3812:32;3809:52;;;3857:1;3854;3847:12;3809:52;3880:26;3896:9;3880:26;:::i;4241:388::-;4309:6;4317;4370:2;4358:9;4349:7;4345:23;4341:32;4338:52;;;4386:1;4383;4376:12;4338:52;4425:9;4412:23;4444:31;4469:5;4444:31;:::i;:::-;4494:5;-1:-1:-1;4551:2:1;4536:18;;4523:32;4564:33;4523:32;4564:33;:::i;:::-;4616:7;4606:17;;;4241:388;;;;;:::o;5030:400::-;5232:2;5214:21;;;5271:2;5251:18;;;5244:30;5310:34;5305:2;5290:18;;5283:62;-1:-1:-1;;;5376:2:1;5361:18;;5354:34;5420:3;5405:19;;5030:400::o;5435:127::-;5496:10;5491:3;5487:20;5484:1;5477:31;5527:4;5524:1;5517:15;5551:4;5548:1;5541:15;5567:128;5634:9;;;5655:11;;;5652:37;;;5669:18;;:::i;5700:422::-;5789:1;5832:5;5789:1;5846:270;5867:7;5857:8;5854:21;5846:270;;;5926:4;5922:1;5918:6;5914:17;5908:4;5905:27;5902:53;;;5935:18;;:::i;:::-;5985:7;5975:8;5971:22;5968:55;;;6005:16;;;;5968:55;6084:22;;;;6044:15;;;;5846:270;;;5850:3;5700:422;;;;;:::o;6127:806::-;6176:5;6206:8;6196:80;;-1:-1:-1;6247:1:1;6261:5;;6196:80;6295:4;6285:76;;-1:-1:-1;6332:1:1;6346:5;;6285:76;6377:4;6395:1;6390:59;;;;6463:1;6458:130;;;;6370:218;;6390:59;6420:1;6411:10;;6434:5;;;6458:130;6495:3;6485:8;6482:17;6479:43;;;6502:18;;:::i;:::-;-1:-1:-1;;6558:1:1;6544:16;;6573:5;;6370:218;;6672:2;6662:8;6659:16;6653:3;6647:4;6644:13;6640:36;6634:2;6624:8;6621:16;6616:2;6610:4;6607:12;6603:35;6600:77;6597:159;;;-1:-1:-1;6709:19:1;;;6741:5;;6597:159;6788:34;6813:8;6807:4;6788:34;:::i;:::-;6858:6;6854:1;6850:6;6846:19;6837:7;6834:32;6831:58;;;6869:18;;:::i;:::-;6907:20;;6127:806;-1:-1:-1;;;6127:806:1:o;6938:140::-;6996:5;7025:47;7066:4;7056:8;7052:19;7046:4;7025:47;:::i;7083:168::-;7156:9;;;7187;;7204:15;;;7198:22;;7184:37;7174:71;;7225:18;;:::i;7256:125::-;7321:9;;;7342:10;;;7339:36;;;7355:18;;:::i;8156:217::-;8196:1;8222;8212:132;;8266:10;8261:3;8257:20;8254:1;8247:31;8301:4;8298:1;8291:15;8329:4;8326:1;8319:15;8212:132;-1:-1:-1;8358:9:1;;8156:217::o;13903:127::-;13964:10;13959:3;13955:20;13952:1;13945:31;13995:4;13992:1;13985:15;14019:4;14016:1;14009:15;14035:251;14105:6;14158:2;14146:9;14137:7;14133:23;14129:32;14126:52;;;14174:1;14171;14164:12;14126:52;14206:9;14200:16;14225:31;14250:5;14225:31;:::i;14291:980::-;14553:4;14601:3;14590:9;14586:19;14632:6;14621:9;14614:25;14658:2;14696:6;14691:2;14680:9;14676:18;14669:34;14739:3;14734:2;14723:9;14719:18;14712:31;14763:6;14798;14792:13;14829:6;14821;14814:22;14867:3;14856:9;14852:19;14845:26;;14906:2;14898:6;14894:15;14880:29;;14927:1;14937:195;14951:6;14948:1;14945:13;14937:195;;;15016:13;;-1:-1:-1;;;;;15012:39:1;15000:52;;15107:15;;;;15072:12;;;;15048:1;14966:9;14937:195;;;-1:-1:-1;;;;;;;15188:32:1;;;;15183:2;15168:18;;15161:60;-1:-1:-1;;;15252:3:1;15237:19;15230:35;15149:3;14291:980;-1:-1:-1;;;14291:980:1:o

Swarm Source

ipfs://ec5d6d8a2941eaaad9b5311d70de0680be8bdeacfa2de6f03c44d1f00d2120b8
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.