ETH Price: $3,345.67 (-0.32%)
 

Overview

Max Total Supply

424,000,000 C.I.A.

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,575,895.616040487 C.I.A.

Value
$0.00
0x91dFd503d04AeDcdFcAB85a8e2C3F2B47AA26B0e
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:
CentralIntelligenceAgency

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-08
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    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);}
    event OwnershipTransferred(address owner);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

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

contract CentralIntelligenceAgency is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Central Intelligence Agency';
    string private constant _symbol = 'C.I.A.';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 424000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 1000;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2000;
    uint256 private sellFee = 2000;
    uint256 private transferFee = 2000;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x7671595F07866C63FA93469c9109850ae0306829; 
    address internal marketing_receiver = 0x7671595F07866C63FA93469c9109850ae0306829;
    address internal liquidity_receiver = 0x7671595F07866C63FA93469c9109850ae0306829;
    uint256 public maxTxAmount = ( _totalSupply * 80 ) / 10000;
    uint256 public maxSellAmoun_t = ( _totalSupply * 170 ) / 10000;
    uint256 public maxWalletToken = ( _totalSupply * 170 ) / 10000;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    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 enableTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    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 allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }
    function updatedcontracttthreshold(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }
    function updatedfee(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }
    function updatInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
    }

    function updatedswapLimit(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        maxTxAmount = newTx; maxSellAmoun_t = newTransfer; maxWalletToken = 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 manualSwap() external onlyOwner {
        swapAndLiquify(swapThreshold); 
    }
    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        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(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }

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

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

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        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 _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(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= maxWalletToken, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= maxSellAmoun_t || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

}

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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSellAmoun_t","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"updatInternalAddresses","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":"updatedcontracttthreshold","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":"updatedfee","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":"updatedswapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004bf565b6200002290631945ba00620004d6565b60018181556007805461ffff60a01b1916600160a81b179055600a55620186a09062000051906103e8620004d6565b6200005d9190620004f0565b600b55620186a0600154600a620000759190620004d6565b620000819190620004f0565b600c555f600d819055600e8190556103e8600f556010556107d060118190556012819055601355612710601481905560158054737671595f07866c63fa93469c9109850ae03068296001600160a01b031991821681179092556016805482168317905560178054909116909117905560015462000100906050620004d6565b6200010c9190620004f0565b60185561271060015460aa620001239190620004d6565b6200012f9190620004f0565b60195561271060015460aa620001469190620004d6565b620001529190620004f0565b601a5534801562000161575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000510565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000238573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025e919062000510565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cf919062000510565b600680546001600160a01b038581166001600160a01b031992831617909255600780548484169216919091179055305f908152600460209081526040808320805460ff19908116600190811790925560175486168552828520805482168317905560165486168552828520805482168317905560155490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000538565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200040457815f1904821115620003e857620003e8620003b0565b80851615620003f657918102915b93841c9390800290620003c9565b509250929050565b5f826200041c57506001620004b9565b816200042a57505f620004b9565b81600181146200044357600281146200044e576200046e565b6001915050620004b9565b60ff841115620004625762000462620003b0565b50506001821b620004b9565b5060208310610133831016604e8410600b841016171562000493575081810a620004b9565b6200049f8383620003c4565b805f1904821115620004b557620004b5620003b0565b0290505b92915050565b5f620004cf60ff8416836200040c565b9392505050565b8082028115828204841417620004b957620004b9620003b0565b5f826200050b57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000521575f80fd5b81516001600160a01b0381168114620004cf575f80fd5b611acc80620005465f395ff3fe60806040526004361061014a575f3560e01c806370a08231116100b3578063a9059cbb1161006d578063a9059cbb146103f4578063b4f177cb14610413578063d9ceb76f14610432578063dd62ed3e14610451578063e6c75f7114610495578063f2fde38b146104aa575f80fd5b806370a082311461031a578063893d20e81461034e5780638a8c523c1461037e5780638c0b5e221461039257806395d89b41146103a7578063a8aa1b31146103d5575f80fd5b80632f54bf6e116101045780632f54bf6e1461025c578063313ce567146102895780633f4218e0146102a457806348ff2b8b146102d257806351bc3c85146102f157806361f4a58d14610305575f80fd5b806306fdde0314610155578063095ea7b3146101ac5780630b4d2e8e146101db57806318160ddd146101fc57806323b872dd1461021e57806326f5f7d91461023d575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152601b81527f43656e7472616c20496e74656c6c6967656e6365204167656e6379000000000060208201525b6040516101a3919061170e565b60405180910390f35b3480156101b7575f80fd5b506101cb6101c6366004611771565b6104c9565b60405190151581526020016101a3565b3480156101e6575f80fd5b506101fa6101f536600461179b565b6104df565b005b348015610207575f80fd5b5061021061058c565b6040519081526020016101a3565b348015610229575f80fd5b506101cb6102383660046117e3565b6105fc565b348015610248575f80fd5b506101fa610257366004611821565b610664565b348015610267575f80fd5b506101cb61027636600461184a565b5f546001600160a01b0391821691161490565b348015610294575f80fd5b50604051600981526020016101a3565b3480156102af575f80fd5b506101cb6102be36600461184a565b60046020525f908152604090205460ff1681565b3480156102dd575f80fd5b506101fa6102ec366004611865565b6106cf565b3480156102fc575f80fd5b506101fa610722565b348015610310575f80fd5b5061021060195481565b348015610325575f80fd5b5061021061033436600461184a565b6001600160a01b03165f9081526002602052604090205490565b348015610359575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101a3565b348015610389575f80fd5b506101fa610758565b34801561039d575f80fd5b5061021060185481565b3480156103b2575f80fd5b5060408051808201909152600681526521972497209760d11b6020820152610196565b3480156103e0575f80fd5b50600754610366906001600160a01b031681565b3480156103ff575f80fd5b506101cb61040e366004611771565b610796565b34801561041e575f80fd5b506101fa61042d366004611821565b6107a2565b34801561043d575f80fd5b506101fa61044c3660046118a0565b6108d8565b34801561045c575f80fd5b5061021061046b3660046118e7565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104a0575f80fd5b50610210601a5481565b3480156104b5575f80fd5b506101fa6104c436600461184a565b6109ce565b5f6104d5338484610a4a565b5060015b92915050565b5f546001600160a01b031633146105115760405162461bcd60e51b815260040161050890611913565b60405180910390fd5b601680546001600160a01b039485166001600160a01b0319918216811790925560178054948616948216851790556015805493909516921682179093555f92835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105f79290916105f19190610b6d565b90610b6d565b905090565b5f610608848484610b78565b610659843361065485604051806060016040528060288152602001611a6f602891396001600160a01b038a165f90815260036020908152604080832033845290915290205491906110b4565b610a4a565b5060015b9392505050565b5f546001600160a01b0316331461068d5760405162461bcd60e51b815260040161050890611913565b600a8390556001546106ae90620186a0906106a890856110df565b906110ea565b600b556001546106c790620186a0906106a890846110df565b600c55505050565b5f546001600160a01b031633146106f85760405162461bcd60e51b815260040161050890611913565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461074b5760405162461bcd60e51b815260040161050890611913565b610756600b546110f5565b565b5f546001600160a01b031633146107815760405162461bcd60e51b815260040161050890611913565b6007805460ff60a01b1916600160a01b179055565b5f6104d5338484610b78565b5f546001600160a01b031633146107cb5760405162461bcd60e51b815260040161050890611913565b5f6107e76127106106a8866001546110df90919063ffffffff16565b90505f6108056127106106a8866001546110df90919063ffffffff16565b90505f6108236127106106a8866001546110df90919063ffffffff16565b60188490556019839055601a81905590505f61084e6103e86106a8600561084861058c565b906110df565b90508084101580156108605750808310155b801561086c5750808210155b6108cf5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610508565b50505050505050565b5f546001600160a01b031633146109015760405162461bcd60e51b815260040161050890611913565b600d879055600e8690556010859055600f8490556011839055601282905560138190556014546109329060016110ea565b60115411158015610952575060145461094c9060016110ea565b60125411155b801561096d57506014546109679060016110ea565b60135411155b6108cf5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610508565b5f546001600160a01b031633146109f75760405162461bcd60e51b815260040161050890611913565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610aac5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610508565b6001600160a01b038216610b0d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610508565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61065d8284611947565b6001600160a01b038316610bdc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610508565b6001600160a01b038216610c3e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610508565b6001600160a01b0383165f90815260026020526040902054811115610cbf5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610508565b6001600160a01b0383165f9081526004602052604090205460ff16158015610cff57506001600160a01b0382165f9081526004602052604090205460ff16155b15610d4e57600754600160a01b900460ff16610d4e5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610508565b6001600160a01b0383165f9081526004602052604090205460ff16158015610d8e57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610da857506007546001600160a01b03838116911614155b8015610dbf57506001600160a01b03821661dead14155b15610e3757601a546001600160a01b0383165f90815260026020526040902054610de99083611265565b1115610e375760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610508565b6007546001600160a01b03848116911614610ed65760195481111580610e7457506001600160a01b0383165f9081526004602052604090205460ff165b80610e9657506001600160a01b0382165f9081526004602052604090205460ff165b610ed65760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610508565b60185481111580610efe57506001600160a01b0383165f9081526004602052604090205460ff165b80610f2057506001600160a01b0382165f9081526004602052604090205460ff165b610f605760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610508565b6007546001600160a01b038381169116148015610f9557506001600160a01b0383165f9081526004602052604090205460ff16155b15610fb257600160085f828254610fac919061195a565b90915550505b610fbd838383611270565b15610fd257610fcd600b546110f5565b5f6008555b6001600160a01b0383165f90815260026020526040902054610ff49082610b6d565b6001600160a01b0384165f908152600260205260408120919091556110198484611328565b611023578161102e565b61102e84848461136c565b6001600160a01b0384165f908152600260205260409020549091506110539082611265565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a69085815260200190565b60405180910390a350505050565b5f81848411156110d75760405162461bcd60e51b8152600401610508919061170e565b505050900390565b5f61065d828461196d565b5f61065d8284611984565b6009805460ff19166001908117909155600f54600e54600d545f9361112e93600293610848939192611128928391611265565b90611265565b90505f61114a826106a8600d54866110df90919063ffffffff16565b90505f6111578483610b6d565b9050476111638261146e565b5f61116e4783610b6d565b90505f611190611189600d5488610b6d90919063ffffffff16565b83906110ea565b90505f6111a8600d54836110df90919063ffffffff16565b905080156111ba576111ba86826115be565b600e545f906111ce906108488560026110df565b9050801561120f576016546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561120d573d5f803e3d5ffd5b505b47801561124f576015546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561124d573d5f803e3d5ffd5b505b50506009805460ff191690555050505050505050565b5f61065d828461195a565b600c54600b54305f9081526002602052604081205460095491938510159211159060ff161580156112aa5750600754600160a81b900460ff165b80156112bf5750600754600160a01b900460ff165b80156112c85750815b80156112ec57506001600160a01b0386165f9081526004602052604090205460ff16155b801561130557506007546001600160a01b038681169116145b80156113155750600a5460085410155b801561131e5750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff1615801561065d5750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f80611378858561166f565b1115611467575f61139a61138c868661166f565b6014546108489086906110ea565b305f908152600260205260409020549091506113b69082611265565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114069085815260200190565b60405180910390a35f6010541180156114295750601054611427868661166f565b115b15611455576114553061dead611450601054610848601454896110ea90919063ffffffff16565b610b78565b61145f8382610b6d565b91505061065d565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114a1576114a16119a3565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151c91906119b7565b8160018151811061152f5761152f6119a3565b6001600160a01b0392831660209182029290920101526006546115559130911684610a4a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061158d9085905f908690309042906004016119d2565b5f604051808303815f87803b1580156115a4575f80fd5b505af11580156115b6573d5f803e3d5ffd5b505050505050565b6006546115d69030906001600160a01b031684610a4a565b60065460175460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611643573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116689190611a43565b5050505050565b6001600160a01b0382165f9081526005602052604081205460ff16806116ac57506001600160a01b0382165f9081526005602052604090205460ff165b156116c6576014546116bf906064610b6d565b90506104d9565b6007546001600160a01b03908116908316036116e557506012546104d9565b6007546001600160a01b039081169084160361170457506011546104d9565b5060135492915050565b5f602080835283518060208501525f5b8181101561173a5785810183015185820160400152820161171e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461176e575f80fd5b50565b5f8060408385031215611782575f80fd5b823561178d8161175a565b946020939093013593505050565b5f805f606084860312156117ad575f80fd5b83356117b88161175a565b925060208401356117c88161175a565b915060408401356117d88161175a565b809150509250925092565b5f805f606084860312156117f5575f80fd5b83356118008161175a565b925060208401356118108161175a565b929592945050506040919091013590565b5f805f60608486031215611833575f80fd5b505081359360208301359350604090920135919050565b5f6020828403121561185a575f80fd5b813561065d8161175a565b5f8060408385031215611876575f80fd5b82356118818161175a565b915060208301358015158114611895575f80fd5b809150509250929050565b5f805f805f805f60e0888a0312156118b6575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f80604083850312156118f8575f80fd5b82356119038161175a565b915060208301356118958161175a565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156104d9576104d9611933565b808201808211156104d9576104d9611933565b80820281158282048414176104d9576104d9611933565b5f8261199e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156119c7575f80fd5b815161065d8161175a565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a225784516001600160a01b0316835293830193918301916001016119fd565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611a55575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200f806f8004d86b70e0fe931a822568ea374d18b6fa5ebe96ad77825f985972d064736f6c63430008170033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c806370a08231116100b3578063a9059cbb1161006d578063a9059cbb146103f4578063b4f177cb14610413578063d9ceb76f14610432578063dd62ed3e14610451578063e6c75f7114610495578063f2fde38b146104aa575f80fd5b806370a082311461031a578063893d20e81461034e5780638a8c523c1461037e5780638c0b5e221461039257806395d89b41146103a7578063a8aa1b31146103d5575f80fd5b80632f54bf6e116101045780632f54bf6e1461025c578063313ce567146102895780633f4218e0146102a457806348ff2b8b146102d257806351bc3c85146102f157806361f4a58d14610305575f80fd5b806306fdde0314610155578063095ea7b3146101ac5780630b4d2e8e146101db57806318160ddd146101fc57806323b872dd1461021e57806326f5f7d91461023d575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5060408051808201909152601b81527f43656e7472616c20496e74656c6c6967656e6365204167656e6379000000000060208201525b6040516101a3919061170e565b60405180910390f35b3480156101b7575f80fd5b506101cb6101c6366004611771565b6104c9565b60405190151581526020016101a3565b3480156101e6575f80fd5b506101fa6101f536600461179b565b6104df565b005b348015610207575f80fd5b5061021061058c565b6040519081526020016101a3565b348015610229575f80fd5b506101cb6102383660046117e3565b6105fc565b348015610248575f80fd5b506101fa610257366004611821565b610664565b348015610267575f80fd5b506101cb61027636600461184a565b5f546001600160a01b0391821691161490565b348015610294575f80fd5b50604051600981526020016101a3565b3480156102af575f80fd5b506101cb6102be36600461184a565b60046020525f908152604090205460ff1681565b3480156102dd575f80fd5b506101fa6102ec366004611865565b6106cf565b3480156102fc575f80fd5b506101fa610722565b348015610310575f80fd5b5061021060195481565b348015610325575f80fd5b5061021061033436600461184a565b6001600160a01b03165f9081526002602052604090205490565b348015610359575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101a3565b348015610389575f80fd5b506101fa610758565b34801561039d575f80fd5b5061021060185481565b3480156103b2575f80fd5b5060408051808201909152600681526521972497209760d11b6020820152610196565b3480156103e0575f80fd5b50600754610366906001600160a01b031681565b3480156103ff575f80fd5b506101cb61040e366004611771565b610796565b34801561041e575f80fd5b506101fa61042d366004611821565b6107a2565b34801561043d575f80fd5b506101fa61044c3660046118a0565b6108d8565b34801561045c575f80fd5b5061021061046b3660046118e7565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156104a0575f80fd5b50610210601a5481565b3480156104b5575f80fd5b506101fa6104c436600461184a565b6109ce565b5f6104d5338484610a4a565b5060015b92915050565b5f546001600160a01b031633146105115760405162461bcd60e51b815260040161050890611913565b60405180910390fd5b601680546001600160a01b039485166001600160a01b0319918216811790925560178054948616948216851790556015805493909516921682179093555f92835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105f79290916105f19190610b6d565b90610b6d565b905090565b5f610608848484610b78565b610659843361065485604051806060016040528060288152602001611a6f602891396001600160a01b038a165f90815260036020908152604080832033845290915290205491906110b4565b610a4a565b5060015b9392505050565b5f546001600160a01b0316331461068d5760405162461bcd60e51b815260040161050890611913565b600a8390556001546106ae90620186a0906106a890856110df565b906110ea565b600b556001546106c790620186a0906106a890846110df565b600c55505050565b5f546001600160a01b031633146106f85760405162461bcd60e51b815260040161050890611913565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461074b5760405162461bcd60e51b815260040161050890611913565b610756600b546110f5565b565b5f546001600160a01b031633146107815760405162461bcd60e51b815260040161050890611913565b6007805460ff60a01b1916600160a01b179055565b5f6104d5338484610b78565b5f546001600160a01b031633146107cb5760405162461bcd60e51b815260040161050890611913565b5f6107e76127106106a8866001546110df90919063ffffffff16565b90505f6108056127106106a8866001546110df90919063ffffffff16565b90505f6108236127106106a8866001546110df90919063ffffffff16565b60188490556019839055601a81905590505f61084e6103e86106a8600561084861058c565b906110df565b90508084101580156108605750808310155b801561086c5750808210155b6108cf5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610508565b50505050505050565b5f546001600160a01b031633146109015760405162461bcd60e51b815260040161050890611913565b600d879055600e8690556010859055600f8490556011839055601282905560138190556014546109329060016110ea565b60115411158015610952575060145461094c9060016110ea565b60125411155b801561096d57506014546109679060016110ea565b60135411155b6108cf5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610508565b5f546001600160a01b031633146109f75760405162461bcd60e51b815260040161050890611913565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610aac5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610508565b6001600160a01b038216610b0d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610508565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61065d8284611947565b6001600160a01b038316610bdc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610508565b6001600160a01b038216610c3e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610508565b6001600160a01b0383165f90815260026020526040902054811115610cbf5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610508565b6001600160a01b0383165f9081526004602052604090205460ff16158015610cff57506001600160a01b0382165f9081526004602052604090205460ff16155b15610d4e57600754600160a01b900460ff16610d4e5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610508565b6001600160a01b0383165f9081526004602052604090205460ff16158015610d8e57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610da857506007546001600160a01b03838116911614155b8015610dbf57506001600160a01b03821661dead14155b15610e3757601a546001600160a01b0383165f90815260026020526040902054610de99083611265565b1115610e375760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610508565b6007546001600160a01b03848116911614610ed65760195481111580610e7457506001600160a01b0383165f9081526004602052604090205460ff165b80610e9657506001600160a01b0382165f9081526004602052604090205460ff165b610ed65760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610508565b60185481111580610efe57506001600160a01b0383165f9081526004602052604090205460ff165b80610f2057506001600160a01b0382165f9081526004602052604090205460ff165b610f605760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610508565b6007546001600160a01b038381169116148015610f9557506001600160a01b0383165f9081526004602052604090205460ff16155b15610fb257600160085f828254610fac919061195a565b90915550505b610fbd838383611270565b15610fd257610fcd600b546110f5565b5f6008555b6001600160a01b0383165f90815260026020526040902054610ff49082610b6d565b6001600160a01b0384165f908152600260205260408120919091556110198484611328565b611023578161102e565b61102e84848461136c565b6001600160a01b0384165f908152600260205260409020549091506110539082611265565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a69085815260200190565b60405180910390a350505050565b5f81848411156110d75760405162461bcd60e51b8152600401610508919061170e565b505050900390565b5f61065d828461196d565b5f61065d8284611984565b6009805460ff19166001908117909155600f54600e54600d545f9361112e93600293610848939192611128928391611265565b90611265565b90505f61114a826106a8600d54866110df90919063ffffffff16565b90505f6111578483610b6d565b9050476111638261146e565b5f61116e4783610b6d565b90505f611190611189600d5488610b6d90919063ffffffff16565b83906110ea565b90505f6111a8600d54836110df90919063ffffffff16565b905080156111ba576111ba86826115be565b600e545f906111ce906108488560026110df565b9050801561120f576016546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561120d573d5f803e3d5ffd5b505b47801561124f576015546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561124d573d5f803e3d5ffd5b505b50506009805460ff191690555050505050505050565b5f61065d828461195a565b600c54600b54305f9081526002602052604081205460095491938510159211159060ff161580156112aa5750600754600160a81b900460ff165b80156112bf5750600754600160a01b900460ff165b80156112c85750815b80156112ec57506001600160a01b0386165f9081526004602052604090205460ff16155b801561130557506007546001600160a01b038681169116145b80156113155750600a5460085410155b801561131e5750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff1615801561065d5750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f80611378858561166f565b1115611467575f61139a61138c868661166f565b6014546108489086906110ea565b305f908152600260205260409020549091506113b69082611265565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114069085815260200190565b60405180910390a35f6010541180156114295750601054611427868661166f565b115b15611455576114553061dead611450601054610848601454896110ea90919063ffffffff16565b610b78565b61145f8382610b6d565b91505061065d565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114a1576114a16119a3565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151c91906119b7565b8160018151811061152f5761152f6119a3565b6001600160a01b0392831660209182029290920101526006546115559130911684610a4a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061158d9085905f908690309042906004016119d2565b5f604051808303815f87803b1580156115a4575f80fd5b505af11580156115b6573d5f803e3d5ffd5b505050505050565b6006546115d69030906001600160a01b031684610a4a565b60065460175460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611643573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116689190611a43565b5050505050565b6001600160a01b0382165f9081526005602052604081205460ff16806116ac57506001600160a01b0382165f9081526005602052604090205460ff165b156116c6576014546116bf906064610b6d565b90506104d9565b6007546001600160a01b03908116908316036116e557506012546104d9565b6007546001600160a01b039081169084160361170457506011546104d9565b5060135492915050565b5f602080835283518060208501525f5b8181101561173a5785810183015185820160400152820161171e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461176e575f80fd5b50565b5f8060408385031215611782575f80fd5b823561178d8161175a565b946020939093013593505050565b5f805f606084860312156117ad575f80fd5b83356117b88161175a565b925060208401356117c88161175a565b915060408401356117d88161175a565b809150509250925092565b5f805f606084860312156117f5575f80fd5b83356118008161175a565b925060208401356118108161175a565b929592945050506040919091013590565b5f805f60608486031215611833575f80fd5b505081359360208301359350604090920135919050565b5f6020828403121561185a575f80fd5b813561065d8161175a565b5f8060408385031215611876575f80fd5b82356118818161175a565b915060208301358015158114611895575f80fd5b809150509250929050565b5f805f805f805f60e0888a0312156118b6575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f80604083850312156118f8575f80fd5b82356119038161175a565b915060208301356118958161175a565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156104d9576104d9611933565b808201808211156104d9576104d9611933565b80820281158282048414176104d9576104d9611933565b5f8261199e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156119c7575f80fd5b815161065d8161175a565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611a225784516001600160a01b0316835293830193918301916001016119fd565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611a55575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200f806f8004d86b70e0fe931a822568ea374d18b6fa5ebe96ad77825f985972d064736f6c63430008170033

Deployed Bytecode Sourcemap

4669:10922:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7141:67;;;;;;;;;;-1:-1:-1;7201:5:0;;;;;;;;;;;;;;;;;7141:67;;;;;;;:::i;:::-;;;;;;;;8023:133;;;;;;;;;;-1:-1:-1;8023:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8023:133:0;1023:187:1;9552:340:0;;;;;;;;;;-1:-1:-1;9552:340:0;;;;;:::i;:::-;;:::i;:::-;;8162:132;;;;;;;;;;;;;:::i;:::-;;;1895:25:1;;;1883:2;1868:18;8162:132:0;1749:177:1;14934:309:0;;;;;;;;;;-1:-1:-1;14934:309:0;;;;;:::i;:::-;;:::i;8711:321::-;;;;;;;;;;-1:-1:-1;8711:321:0;;;;;:::i;:::-;;:::i;3573:87::-;;;;;;;;;;-1:-1:-1;3573:87:0;;;;;:::i;:::-;3628:4;3653:5;-1:-1:-1;;;;;3642:16:0;;;3653:5;;3642:16;;3573:87;7291:67;;;;;;;;;;-1:-1:-1;7291:67:0;;4915:1;3107:36:1;;3095:2;3080:18;7291:67:0;2965:184:1;5111:44:0;;;;;;;;;;-1:-1:-1;5111:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7909:108;;;;;;;;;;-1:-1:-1;7909:108:0;;;;;:::i;:::-;;:::i;10456:90::-;;;;;;;;;;;;;:::i;6356:62::-;;;;;;;;;;;;;;;;7522:103;;;;;;;;;;-1:-1:-1;7522:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7605:18:0;7588:7;7605:18;;;:9;:18;;;;;;;7522:103;7438:78;;;;;;;;;;-1:-1:-1;7490:7:0;7508:5;-1:-1:-1;;;;;7508:5:0;7438:78;;;-1:-1:-1;;;;;3739:32:1;;;3721:51;;3709:2;3694:18;7438:78:0;3575:203:1;7364:68:0;;;;;;;;;;;;;:::i;6291:58::-;;;;;;;;;;;;;;;;7214:71;;;;;;;;;;-1:-1:-1;7276:7:0;;;;;;;;;;;;-1:-1:-1;;;7276:7:0;;;;7214:71;;5229:19;;;;;;;;;;-1:-1:-1;5229:19:0;;;;-1:-1:-1;;;;;5229:19:0;;;7631:139;;;;;;;;;;-1:-1:-1;7631:139:0;;;;;:::i;:::-;;:::i;9900:550::-;;;;;;;;;;-1:-1:-1;9900:550:0;;;;;:::i;:::-;;:::i;9038:508::-;;;;;;;;;;-1:-1:-1;9038:508:0;;;;;:::i;:::-;;:::i;7776:127::-;;;;;;;;;;-1:-1:-1;7776:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7874:18:0;;;7857:7;7874:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7776:127;6425:62;;;;;;;;;;;;;;;;3666:111;;;;;;;;;;-1:-1:-1;3666:111:0;;;;;:::i;:::-;;:::i;8023:133::-;8098:4;8105:37;8114:10;8126:7;8135:6;8105:8;:37::i;:::-;-1:-1:-1;8150:4:0;8023:133;;;;;:::o;9552:340::-;3628:4;3653:5;-1:-1:-1;;;;;3653:5:0;3540:10;3642:16;3524:38;;;;-1:-1:-1;;;3524:38:0;;;;;;;:::i;:::-;;;;;;;;;9676:18:::1;:31:::0;;-1:-1:-1;;;;;9676:31:0;;::::1;-1:-1:-1::0;;;;;;9676:31:0;;::::1;::::0;::::1;::::0;;;9709:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;9742:20:::1;:35:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;9676:18:::1;9788:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;9788:30:0;;::::1;9676:31:::0;9788:30;;::::1;::::0;;;9820:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;9852:25;;;;;;:32;;;;::::1;::::0;;::::1;::::0;;9552:340::o;8162:132::-;7605:9;:18;;;;5978:42;8215:7;7605:18;;;;;8232:12;;8215:7;;8232:60;;7605:18;;8232:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8225:67;;8162:132;:::o;14934:309::-;15032:4;15049:36;15059:6;15067:9;15078:6;15049:9;:36::i;:::-;15096:117;15105:6;15113:10;15125:87;15161:6;15125:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15125:19:0;;;;;;:11;:19;;;;;;;;15145:10;15125:31;;;;;;;;;:87;:35;:87::i;:::-;15096:8;:117::i;:::-;-1:-1:-1;15231:4:0;14934:309;;;;;;:::o;8711:321::-;3628:4;3653:5;-1:-1:-1;;;;;3653:5:0;3540:10;3642:16;3524:38;;;;-1:-1:-1;;;3524:38:0;;;;;;;:::i;:::-;8846:10:::1;:24:::0;;;8888:12:::1;::::0;:53:::1;::::0;8933:6:::1;::::0;8888:32:::1;::::0;8905:14;8888:16:::1;:32::i;:::-;:36:::0;::::1;:53::i;:::-;8872:13;:69:::0;8970:12:::1;::::0;:54:::1;::::0;9016:6:::1;::::0;8970:33:::1;::::0;8987:15;8970:16:::1;:33::i;:54::-;8953:14;:71:::0;-1:-1:-1;;;8711:321:0:o;7909:108::-;3628:4;3653:5;-1:-1:-1;;;;;3653:5:0;3540:10;3642:16;3524:38;;;;-1:-1:-1;;;3524:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7983:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;7983:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7909:108::o;10456:90::-;3628:4;3653:5;-1:-1:-1;;;;;3653:5:0;3540:10;3642:16;3524:38;;;;-1:-1:-1;;;3524:38:0;;;;;;;:::i;:::-;10508:29:::1;10523:13;;10508:14;:29::i;:::-;10456:90::o:0;7364:68::-;3628:4;3653:5;-1:-1:-1;;;;;3653:5:0;3540:10;3642:16;3524:38;;;;-1:-1:-1;;;3524:38:0;;;;;;;:::i;:::-;7409:14:::1;:21:::0;;-1:-1:-1;;;;7409:21:0::1;-1:-1:-1::0;;;7409:21:0::1;::::0;;7364:68::o;7631:139::-;7709:4;7716:40;7726:10;7738:9;7749:6;7716:9;:40::i;9900:550::-;3628:4;3653:5;-1:-1:-1;;;;;3653:5:0;3540:10;3642:16;3524:38;;;;-1:-1:-1;;;3524:38:0;;;;;;;:::i;:::-;10002:13:::1;10018:33;10045:5;10018:22;10035:4;10018:12;;:16;;:22;;;;:::i;:33::-;10002:49;;10053:19;10075:34;10103:5;10075:23;10092:5;10075:12;;:16;;:23;;;;:::i;:34::-;10053:56;;10111:17;10131:36;10161:5;10131:25;10148:7;10131:12;;:16;;:25;;;;:::i;:36::-;10178:11;:19:::0;;;10199:14:::1;:28:::0;;;10229:14:::1;:26:::0;;;10111:56;-1:-1:-1;;10282:30:0::1;10307:4;10282:20;10300:1;10282:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;10266:46;;10340:5;10331;:14;;:38;;;;;10364:5;10349:11;:20;;10331:38;:60;;;;;10386:5;10373:9;:18;;10331:60;10323:119;;;::::0;-1:-1:-1;;;10323:119:0;;5569:2:1;10323:119:0::1;::::0;::::1;5551:21:1::0;5608:2;5588:18;;;5581:30;5647:34;5627:18;;;5620:62;-1:-1:-1;;;5698:18:1;;;5691:44;5752:19;;10323:119:0::1;5367:410:1::0;10323:119:0::1;9991:459;;;;9900:550:::0;;;:::o;9038:508::-;3628:4;3653:5;-1:-1:-1;;;;;3653:5:0;3540:10;3642:16;3524:38;;;;-1:-1:-1;;;3524:38:0;;;;;;;:::i;:::-;9212:12:::1;:25:::0;;;9239:12:::1;:25:::0;;;9266:7:::1;:15:::0;;;9283:14:::1;:29:::0;;;9314:8:::1;:17:::0;;;9333:7:::1;:15:::0;;;9350:11:::1;:20:::0;;;9401:11:::1;::::0;:18:::1;::::0;-1:-1:-1;9401:15:0::1;:18::i;:::-;9389:8;;:30;;:63;;;;-1:-1:-1::0;9434:11:0::1;::::0;:18:::1;::::0;9450:1:::1;9434:15;:18::i;:::-;9423:7;;:29;;9389:63;:100;;;;-1:-1:-1::0;9471:11:0::1;::::0;:18:::1;::::0;9487:1:::1;9471:15;:18::i;:::-;9456:11;;:33;;9389:100;9381:157;;;::::0;-1:-1:-1;;;9381:157:0;;5984:2:1;9381:157:0::1;::::0;::::1;5966:21:1::0;6023:2;6003:18;;;5996:30;6062:34;6042:18;;;6035:62;-1:-1:-1;;;6113:18:1;;;6106:42;6165:19;;9381:157:0::1;5782:408:1::0;3666:111:0;3628:4;3653:5;-1:-1:-1;;;;;3653:5:0;3540:10;3642:16;3524:38;;;;-1:-1:-1;;;3524:38:0;;;;;;;:::i;:::-;3732:5:::1;:11:::0;;-1:-1:-1;;;;;;3732:11:0::1;-1:-1:-1::0;;;;;3732:11:0;::::1;::::0;;::::1;::::0;;;3750:25:::1;::::0;3721:51:1;;;3750:25:0::1;::::0;3709:2:1;3694:18;3750:25:0::1;;;;;;;3666:111:::0;:::o;15251:335::-;-1:-1:-1;;;;;15344:19:0;;15336:68;;;;-1:-1:-1;;;15336:68:0;;6613:2:1;15336:68:0;;;6595:21:1;6652:2;6632:18;;;6625:30;6691:34;6671:18;;;6664:62;-1:-1:-1;;;6742:18:1;;;6735:34;6786:19;;15336:68:0;6411:400:1;15336:68:0;-1:-1:-1;;;;;15423:21:0;;15415:68;;;;-1:-1:-1;;;15415:68:0;;7018:2:1;15415:68:0;;;7000:21:1;7057:2;7037:18;;;7030:30;7096:34;7076:18;;;7069:62;-1:-1:-1;;;7147:18:1;;;7140:32;7189:19;;15415:68:0;6816:398:1;15415:68:0;-1:-1:-1;;;;;15494:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15546:32;;1895:25:1;;;15546:32:0;;1868:18:1;15546:32:0;;;;;;;15251:335;;;:::o;1312:98::-;1370:7;1397:5;1401:1;1397;:5;:::i;13495:1431::-;-1:-1:-1;;;;;13592:20:0;;13584:70;;;;-1:-1:-1;;;13584:70:0;;7686:2:1;13584:70:0;;;7668:21:1;7725:2;7705:18;;;7698:30;7764:34;7744:18;;;7737:62;-1:-1:-1;;;7815:18:1;;;7808:35;7860:19;;13584:70:0;7484:401:1;13584:70:0;-1:-1:-1;;;;;13673:23:0;;13665:71;;;;-1:-1:-1;;;13665:71:0;;8092:2:1;13665:71:0;;;8074:21:1;8131:2;8111:18;;;8104:30;8170:34;8150:18;;;8143:62;-1:-1:-1;;;8221:18:1;;;8214:33;8264:19;;13665:71:0;7890:399:1;13665:71:0;-1:-1:-1;;;;;7605:18:0;;7588:7;7605:18;;;:9;:18;;;;;;13755:6;:27;;13747:88;;;;-1:-1:-1;;;13747:88:0;;8496:2:1;13747:88:0;;;8478:21:1;8535:2;8515:18;;;8508:30;8574:34;8554:18;;;8547:62;-1:-1:-1;;;8625:18:1;;;8618:47;8682:19;;13747:88:0;8294:413:1;13747:88:0;-1:-1:-1;;;;;13850:19:0;;;;;;:11;:19;;;;;;;;13849:20;:47;;;;-1:-1:-1;;;;;;13874:22:0;;;;;;:11;:22;;;;;;;;13873:23;13849:47;13846:95;;;13906:14;;-1:-1:-1;;;13906:14:0;;;;13898:41;;;;-1:-1:-1;;;13898:41:0;;8914:2:1;13898:41:0;;;8896:21:1;8953:2;8933:18;;;8926:30;-1:-1:-1;;;8972:18:1;;;8965:44;9026:18;;13898:41:0;8712:338:1;13898:41:0;-1:-1:-1;;;;;13955:19:0;;;;;;:11;:19;;;;;;;;13954:20;:47;;;;-1:-1:-1;;;;;;13979:22:0;;;;;;:11;:22;;;;;;;;13978:23;13954:47;:77;;;;-1:-1:-1;14026:4:0;;-1:-1:-1;;;;;14005:26:0;;;14026:4;;14005:26;;13954:77;:107;;;;-1:-1:-1;;;;;;14035:26:0;;5978:42;14035:26;;13954:107;13951:219;;;14119:14;;-1:-1:-1;;;;;14082:20:0;;;;;;:9;:20;;;;;;:32;;14107:6;14082:24;:32::i;:::-;14081:52;;14073:95;;;;-1:-1:-1;;;14073:95:0;;9257:2:1;14073:95:0;;;9239:21:1;9296:2;9276:18;;;9269:30;9335:32;9315:18;;;9308:60;9385:18;;14073:95:0;9055:354:1;14073:95:0;14193:4;;-1:-1:-1;;;;;14183:14:0;;;14193:4;;14183:14;14180:124;;14217:14;;14207:6;:24;;:47;;;-1:-1:-1;;;;;;14235:19:0;;;;;;:11;:19;;;;;;;;14207:47;:73;;;-1:-1:-1;;;;;;14258:22:0;;;;;;:11;:22;;;;;;;;14207:73;14199:103;;;;-1:-1:-1;;;14199:103:0;;9616:2:1;14199:103:0;;;9598:21:1;9655:2;9635:18;;;9628:30;-1:-1:-1;;;9674:18:1;;;9667:47;9731:18;;14199:103:0;9414:341:1;14199:103:0;14332:11;;14322:6;:21;;:44;;;-1:-1:-1;;;;;;14347:19:0;;;;;;:11;:19;;;;;;;;14322:44;:70;;;-1:-1:-1;;;;;;14370:22:0;;;;;;:11;:22;;;;;;;;14322:70;14314:100;;;;-1:-1:-1;;;14314:100:0;;9616:2:1;14314:100:0;;;9598:21:1;9655:2;9635:18;;;9628:30;-1:-1:-1;;;9674:18:1;;;9667:47;9731:18;;14314:100:0;9414:341:1;14314:100:0;14442:4;;-1:-1:-1;;;;;14429:17:0;;;14442:4;;14429:17;:41;;;;-1:-1:-1;;;;;;14451:19:0;;;;;;:11;:19;;;;;;;;14450:20;14429:41;14426:71;;;14493:1;14472:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;14426:71:0;14510:45;14529:6;14537:9;14548:6;14510:18;:45::i;:::-;14507:105;;;14557:29;14572:13;;14557:14;:29::i;:::-;14608:1;14588:9;:22;14507:105;-1:-1:-1;;;;;14642:17:0;;;;;;:9;:17;;;;;;:29;;14664:6;14642:21;:29::i;:::-;-1:-1:-1;;;;;14622:17:0;;;;;;:9;:17;;;;;:49;;;;14707:32;14632:6;14729:9;14707:13;:32::i;:::-;:78;;14779:6;14707:78;;;14742:34;14750:6;14758:9;14769:6;14742:7;:34::i;:::-;-1:-1:-1;;;;;14819:20:0;;;;;;:9;:20;;;;;;14682:103;;-1:-1:-1;14819:40:0;;14682:103;14819:24;:40::i;:::-;-1:-1:-1;;;;;14796:20:0;;;;;;;:9;:20;;;;;;;:63;;;;14875:43;;;;;;;;;;14903:14;1895:25:1;;1883:2;1868:18;;1749:177;14875:43:0;;;;;;;;13573:1353;13495:1431;;;:::o;1736:240::-;1856:7;1917:12;1909:6;;;;1901:29;;;;-1:-1:-1;;;1901:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1952:5:0;;;1736:240::o;1418:98::-;1476:7;1503:5;1507:1;1503;:5;:::i;1524:98::-;1582:7;1609:5;1613:1;1609;:5;:::i;10552:1063::-;5587:8;:15;;-1:-1:-1;;5587:15:0;5598:4;5587:15;;;;;;10689:14:::1;::::0;10671:12:::1;::::0;10647::::1;::::0;5587:8;;10646:66:::1;::::0;10710:1:::1;::::0;10647:57:::1;::::0;10689:14;;10647:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;10646:66::-;10623:89;;10723:32;10758:42;10787:12;10758:24;10769:12;;10758:6;:10;;:24;;;;:::i;:42::-;10723:77:::0;-1:-1:-1;10811:14:0::1;10828:36;:6:::0;10723:77;10828:10:::1;:36::i;:::-;10811:53:::0;-1:-1:-1;10900:21:0::1;10932:24;10811:53:::0;10932:16:::1;:24::i;:::-;10967:20;10990:41;:21;11016:14:::0;10990:25:::1;:41::i;:::-;10967:64;;11042:19;11063:48;11080:30;11097:12;;11080;:16;;:30;;;;:::i;:::-;11063:12:::0;;:16:::1;:48::i;:::-;11042:69;;11122:29;11154;11170:12;;11154:11;:15;;:29;;;;:::i;:::-;11122:61:::0;-1:-1:-1;11197:34:0;;11194:103:::1;;11233:61;11246:24;11272:21;11233:12;:61::i;:::-;11353:12;::::0;11307:20:::1;::::0;11330:36:::1;::::0;:18:::1;:11:::0;11346:1:::1;11330:15;:18::i;:36::-;11307:59:::0;-1:-1:-1;11380:16:0;;11377:73:::1;;11406:18;::::0;11398:50:::1;::::0;-1:-1:-1;;;;;11406:18:0;;::::1;::::0;11398:50;::::1;;;::::0;11435:12;;11406:18:::1;11398:50:::0;11406:18;11398:50;11435:12;11406:18;11398:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11377:73;11486:21;11521:28:::0;;11518:90:::1;;11559:20;::::0;11551:55:::1;::::0;-1:-1:-1;;;;;11559:20:0;;::::1;::::0;11551:55;::::1;;;::::0;11590:15;;11559:20:::1;11551:55:::0;11559:20;11551:55;11590:15;11559:20;11551:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11518:90;-1:-1:-1::0;;5607:8:0;:16;;-1:-1:-1;;5607:16:0;;;-1:-1:-1;;;;;;;;10552:1063:0:o;1206:98::-;1264:7;1291:5;1295:1;1291;:5;:::i;8302:403::-;8447:14;;8522:13;;8512:4;8404;7605:18;;;:9;:18;;;;;;8554:8;;8404:4;;8437:24;;;;-1:-1:-1;8494:41:0;;8554:8;;8553:9;:24;;;;-1:-1:-1;8566:11:0;;-1:-1:-1;;;8566:11:0;;;;8553:24;:42;;;;-1:-1:-1;8581:14:0;;-1:-1:-1;;;8581:14:0;;;;8553:42;:54;;;;;8599:8;8553:54;:78;;;;-1:-1:-1;;;;;;8612:19:0;;;;;;:11;:19;;;;;;;;8611:20;8553:78;:99;;;;-1:-1:-1;8648:4:0;;-1:-1:-1;;;;;8635:17:0;;;8648:4;;8635:17;8553:99;:126;;;;;8669:10;;8656:9;;:23;;8553:126;:144;;;;;8683:14;8553:144;8546:151;8302:403;-1:-1:-1;;;;;;8302:403:0:o;12416:160::-;-1:-1:-1;;;;;12522:19:0;;12497:4;12522:19;;;:11;:19;;;;;;;;12521:20;:47;;;;-1:-1:-1;;;;;;;12546:22:0;;;;;:11;:22;;;;;;;;12545:23;;12416:160;-1:-1:-1;12416:160:0:o;12897:590::-;12983:7;13039:1;13006:30;13018:6;13026:9;13006:11;:30::i;:::-;:34;13003:462;;;13052:17;13072:59;13100:30;13112:6;13120:9;13100:11;:30::i;:::-;13083:11;;13072:23;;:6;;:10;:23::i;:59::-;13187:4;13169:24;;;;:9;:24;;;;;;13052:79;;-1:-1:-1;13169:39:0;;13052:79;13169:28;:39::i;:::-;13160:4;13142:24;;;;:9;:24;;;;;;;:66;;;;13224:42;;-1:-1:-1;;;;;13224:42:0;;;;;;;13256:9;1895:25:1;;1883:2;1868:18;;1749:177;13224:42:0;;;;;;;;13298:1;13280:7;;:20;:64;;;;;13337:7;;13304:30;13316:6;13324:9;13304:11;:30::i;:::-;:40;13280:64;13277:148;;;13346:77;13364:4;5978:42;13386:36;13414:7;;13386:23;13397:11;;13386:6;:10;;:23;;;;:::i;:36::-;13346:9;:77::i;:::-;13442:21;:6;13453:9;13442:10;:21::i;:::-;13435:28;;;;;13003:462;-1:-1:-1;13473:6:0;12897:590;-1:-1:-1;;12897:590:0:o;11974:434::-;12064:16;;;12078:1;12064:16;;;;;;;;12040:21;;12064:16;;;;;;;;;;-1:-1:-1;12064:16:0;12040:40;;12109:4;12091;12096:1;12091:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12091:23:0;;;:7;;;;;;;;;;:23;;;;12135:6;;:13;;;-1:-1:-1;;;12135:13:0;;;;:6;;;;;:11;;:13;;;;;12091:7;;12135:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12125:4;12130:1;12125:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12125:23:0;;;:7;;;;;;;;;:23;12191:6;;12159:53;;12176:4;;12191:6;12200:11;12159:8;:53::i;:::-;12223:6;;:177;;-1:-1:-1;;;12223:177:0;;-1:-1:-1;;;;;12223:6:0;;;;:57;;:177;;12295:11;;12223:6;;12337:4;;12364;;12384:15;;12223:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12029:379;11974:434;:::o;11623:343::-;11736:6;;11704:53;;11721:4;;-1:-1:-1;;;;;11736:6:0;11745:11;11704:8;:53::i;:::-;11768:6;;11909:18;;11768:190;;-1:-1:-1;;;11768:190:0;;11831:4;11768:190;;;12131:34:1;12181:18;;;12174:34;;;11768:6:0;12224:18:1;;;12217:34;;;12267:18;;;12260:34;-1:-1:-1;;;;;11909:18:0;;;12310:19:1;;;12303:44;11942:15:0;12363:19:1;;;12356:35;11768:6:0;;;:22;;11798:9;;12065:19:1;;11768:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11623:343;;:::o;12584:305::-;-1:-1:-1;;;;;12686:13:0;;12663:7;12686:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;12703:16:0;;;;;;:5;:16;;;;;;;;12686:33;12683:76;;;12728:11;;:29;;12752:3;12728:15;:29::i;:::-;12721:36;;;;12683:76;12785:4;;-1:-1:-1;;;;;12785:4:0;;;12772:17;;;;12769:38;;-1:-1:-1;12798:7:0;;12791:14;;12769:38;12830:4;;-1:-1:-1;;;;;12830:4:0;;;12820:14;;;;12817:36;;-1:-1:-1;12843:8:0;;12836:15;;12817:36;-1:-1:-1;12870:11:0;;12584:305;;;;:::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;1215:529::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;1416:9;1403:23;1435:31;1460:5;1435:31;:::i;:::-;1485:5;-1:-1:-1;1542:2:1;1527:18;;1514:32;1555:33;1514:32;1555:33;:::i;:::-;1607:7;-1:-1:-1;1666:2:1;1651:18;;1638:32;1679:33;1638:32;1679:33;:::i;:::-;1731:7;1721:17;;;1215:529;;;;;:::o;1931:456::-;2008:6;2016;2024;2077:2;2065:9;2056:7;2052:23;2048:32;2045:52;;;2093:1;2090;2083:12;2045:52;2132:9;2119:23;2151:31;2176:5;2151:31;:::i;:::-;2201:5;-1:-1:-1;2258:2:1;2243:18;;2230:32;2271:33;2230:32;2271:33;:::i;:::-;1931:456;;2323:7;;-1:-1:-1;;;2377:2:1;2362:18;;;;2349:32;;1931:456::o;2392:316::-;2469:6;2477;2485;2538:2;2526:9;2517:7;2513:23;2509:32;2506:52;;;2554:1;2551;2544:12;2506:52;-1:-1:-1;;2577:23:1;;;2647:2;2632:18;;2619:32;;-1:-1:-1;2698:2:1;2683:18;;;2670:32;;2392:316;-1:-1:-1;2392:316:1:o;2713:247::-;2772:6;2825:2;2813:9;2804:7;2800:23;2796:32;2793:52;;;2841:1;2838;2831:12;2793:52;2880:9;2867:23;2899:31;2924:5;2899:31;:::i;3154:416::-;3219:6;3227;3280:2;3268:9;3259:7;3255:23;3251:32;3248:52;;;3296:1;3293;3286:12;3248:52;3335:9;3322:23;3354:31;3379:5;3354:31;:::i;:::-;3404:5;-1:-1:-1;3461:2:1;3446:18;;3433:32;3503:15;;3496:23;3484:36;;3474:64;;3534:1;3531;3524:12;3474:64;3557:7;3547:17;;;3154:416;;;;;:::o;3783:592::-;3896:6;3904;3912;3920;3928;3936;3944;3997:3;3985:9;3976:7;3972:23;3968:33;3965:53;;;4014:1;4011;4004:12;3965:53;-1:-1:-1;;4037:23:1;;;4107:2;4092:18;;4079:32;;-1:-1:-1;4158:2:1;4143:18;;4130:32;;4209:2;4194:18;;4181:32;;-1:-1:-1;4260:3:1;4245:19;;4232:33;;-1:-1:-1;4312:3:1;4297:19;;4284:33;;-1:-1:-1;4364:3:1;4349:19;4336:33;;-1:-1:-1;3783:592:1;-1:-1:-1;3783:592:1:o;4380:388::-;4448:6;4456;4509:2;4497:9;4488:7;4484:23;4480:32;4477:52;;;4525:1;4522;4515:12;4477:52;4564:9;4551:23;4583:31;4608:5;4583:31;:::i;:::-;4633:5;-1:-1:-1;4690:2:1;4675:18;;4662:32;4703:33;4662:32;4703:33;:::i;5033:329::-;5235:2;5217:21;;;5274:1;5254:18;;;5247:29;-1:-1:-1;;;5307:2:1;5292:18;;5285:36;5353:2;5338:18;;5033:329::o;7219:127::-;7280:10;7275:3;7271:20;7268:1;7261:31;7311:4;7308:1;7301:15;7335:4;7332:1;7325:15;7351:128;7418:9;;;7439:11;;;7436:37;;;7453:18;;:::i;9760:125::-;9825:9;;;9846:10;;;9843:36;;;9859:18;;:::i;9890:168::-;9963:9;;;9994;;10011:15;;;10005:22;;9991:37;9981:71;;10032:18;;:::i;10063:217::-;10103:1;10129;10119:132;;10173:10;10168:3;10164:20;10161:1;10154:31;10208:4;10205:1;10198:15;10236:4;10233:1;10226:15;10119:132;-1:-1:-1;10265:9:1;;10063:217::o;10417:127::-;10478:10;10473:3;10469:20;10466:1;10459:31;10509:4;10506:1;10499:15;10533:4;10530:1;10523:15;10549:251;10619:6;10672:2;10660:9;10651:7;10647:23;10643:32;10640:52;;;10688:1;10685;10678:12;10640:52;10720:9;10714:16;10739:31;10764:5;10739:31;:::i;10805:980::-;11067:4;11115:3;11104:9;11100:19;11146:6;11135:9;11128:25;11172:2;11210:6;11205:2;11194:9;11190:18;11183:34;11253:3;11248:2;11237:9;11233:18;11226:31;11277:6;11312;11306:13;11343:6;11335;11328:22;11381:3;11370:9;11366:19;11359:26;;11420:2;11412:6;11408:15;11394:29;;11441:1;11451:195;11465:6;11462:1;11459:13;11451:195;;;11530:13;;-1:-1:-1;;;;;11526:39:1;11514:52;;11621:15;;;;11586:12;;;;11562:1;11480:9;11451:195;;;-1:-1:-1;;;;;;;11702:32:1;;;;11697:2;11682:18;;11675:60;-1:-1:-1;;;11766:3:1;11751:19;11744:35;11663:3;10805:980;-1:-1:-1;;;10805:980:1:o;12402:306::-;12490:6;12498;12506;12559:2;12547:9;12538:7;12534:23;12530:32;12527:52;;;12575:1;12572;12565:12;12527:52;12604:9;12598:16;12588:26;;12654:2;12643:9;12639:18;12633:25;12623:35;;12698:2;12687:9;12683:18;12677:25;12667:35;;12402:306;;;;;:::o

Swarm Source

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