ETH Price: $3,292.18 (-0.23%)

Token

Choki Finance (CHOKI)
 

Overview

Max Total Supply

1,000,000,000 CHOKI

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
roadtomillionaire.eth
Balance
1,427.891590525203658218 CHOKI

Value
$0.00
0x6f9f04243f8e0b09e8b5a7ea0df21777fec8464e
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:
ERC20

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-16
*/

//Choki.Finance - @ChokiFinance

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.6;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;

        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

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

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

contract ERC20 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) public _rOwned;
    mapping (address => uint256) public _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 public constant MAX = ~uint256(0);
    uint256 public _tTotal = 1000000000 * (10 ** 18);
    uint256 public _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Choki Finance";
    string private _symbol = "CHOKI";
    uint8 private _decimals = 18;
    
    uint256 private _taxFee = 5;
    uint256 private _burnFee = 5;
    uint256 private _devFee = 5;
    
    address private _devAccount = 0x99a8993dF9939BcC0fb3AdEA6C8E1C5b27D09447;
    
    uint256 private deployment;

    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        
        deployment = block.timestamp;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }
    
    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }
    
    function setBurnFeePercent(uint256 burnFee) external onlyOwner() {
        _burnFee = burnFee;
    }
    
    function setDevFeePercent(uint256 devFee) external onlyOwner() {
        _devFee = devFee;
    }
    
    function setDevAccount(address _account) external onlyOwner() {
        _devAccount = _account;
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tDev) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tBurn, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tDev);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tBurn = calculateBurnFee(tAmount);
        uint256 tDev = calculateDevFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tBurn).sub(tDev);
        return (tTransferAmount, tFee, tBurn, tDev);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }
    
    function calculateBurnFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_burnFee).div(
            10**2
        );
    }
    
    function calculateDevFee(uint256 _amount) private view returns (uint256) {
        uint256 _fee;
        
        if(block.timestamp < deployment + 600) _fee = 50;
        else if(block.timestamp < deployment + 1200) _fee = 40;
        else if(block.timestamp < deployment + 1800) _fee = 30;
        else if(block.timestamp < deployment + 2400) _fee = 20;
        else if(block.timestamp < deployment + 3000) _fee = 10;
        else _fee = _devFee;
        
        return _amount.mul(_fee).div(
            10**2
        );
    }

    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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        _transferStandard(from, to, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, , uint256 tDev) = _getValues(tAmount);
        
        uint256 currentRate =  _getRate();
        uint256 rDev = tDev.mul(currentRate);
        rTransferAmount = rTransferAmount.sub(rDev);
        
        _rOwned[_devAccount] = _rOwned[_devAccount].add(rDev);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            
        
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
        emit Transfer(sender, _devAccount, tDev);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_tOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tTotal","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":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"setDevAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"setDevFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526b033b2e3c9fd0803ce80000006004556004546000196200002691906200044e565b600019620000359190620003d3565b6005556040518060400160405280600d81526020017f43686f6b692046696e616e6365000000000000000000000000000000000000008152506007908051906020019062000085929190620002f5565b506040518060400160405280600581526020017f43484f4b4900000000000000000000000000000000000000000000000000000081525060089080519060200190620000d3929190620002f5565b506012600960006101000a81548160ff021916908360ff1602179055506005600a556005600b556005600c557399a8993df9939bcc0fb3adea6c8e1c5b27d09447600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200016157600080fd5b50600062000174620002ed60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506005546001600062000229620002ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600e819055506200027e620002ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620002df9190620003b6565b60405180910390a362000513565b600033905090565b828054620003039062000418565b90600052602060002090601f01602090048101928262000327576000855562000373565b82601f106200034257805160ff191683800117855562000373565b8280016001018555821562000373579182015b828111156200037257825182559160200191906001019062000355565b5b50905062000382919062000386565b5090565b5b80821115620003a157600081600090555060010162000387565b5090565b620003b0816200040e565b82525050565b6000602082019050620003cd6000830184620003a5565b92915050565b6000620003e0826200040e565b9150620003ed836200040e565b92508282101562000403576200040262000486565b5b828203905092915050565b6000819050919050565b600060028204905060018216806200043157607f821691505b60208210811415620004485762000447620004e4565b5b50919050565b60006200045b826200040e565b915062000468836200040e565b9250826200047b576200047a620004b5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61238c80620005236000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806345e0b9d4116100b8578063a9059cbb1161007c578063a9059cbb14610364578063aecb9ca714610394578063af465a27146103b0578063cea26958146103ce578063d49d5181146103ea578063dd62ed3e1461040857610137565b806345e0b9d4146102be5780634fb2e45d146102dc57806370a08231146102f85780638da5cb5b1461032857806395d89b411461034657610137565b806323b872dd116100ff57806323b872dd146101f45780632d83811914610224578063313ce56714610254578063379e2919146102725780633b7e6d4a1461028e57610137565b8063061c82d01461013c57806306fdde0314610158578063095ea7b3146101765780630cfc15f9146101a657806318160ddd146101d6575b600080fd5b610156600480360381019061015191906119da565b610438565b005b6101606104d7565b60405161016d9190611c10565b60405180910390f35b610190600480360381019061018b919061199a565b610569565b60405161019d9190611bf5565b60405180910390f35b6101c060048036038101906101bb91906118da565b610587565b6040516101cd9190611d72565b60405180910390f35b6101de61059f565b6040516101eb9190611d72565b60405180910390f35b61020e60048036038101906102099190611947565b6105a9565b60405161021b9190611bf5565b60405180910390f35b61023e600480360381019061023991906119da565b610682565b60405161024b9190611d72565b60405180910390f35b61025c6106f0565b6040516102699190611d8d565b60405180910390f35b61028c600480360381019061028791906119da565b610707565b005b6102a860048036038101906102a391906118da565b6107a6565b6040516102b59190611d72565b60405180910390f35b6102c66107be565b6040516102d39190611d72565b60405180910390f35b6102f660048036038101906102f191906118da565b6107c4565b005b610312600480360381019061030d91906118da565b610986565b60405161031f9190611d72565b60405180910390f35b6103306109d7565b60405161033d9190611bda565b60405180910390f35b61034e610a00565b60405161035b9190611c10565b60405180910390f35b61037e6004803603810190610379919061199a565b610a92565b60405161038b9190611bf5565b60405180910390f35b6103ae60048036038101906103a991906118da565b610ab0565b005b6103b8610b89565b6040516103c59190611d72565b60405180910390f35b6103e860048036038101906103e391906119da565b610b8f565b005b6103f2610c2e565b6040516103ff9190611d72565b60405180910390f35b610422600480360381019061041d9190611907565b610c34565b60405161042f9190611d72565b60405180910390f35b610440610cbb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c490611cf2565b60405180910390fd5b80600a8190555050565b6060600780546104e690611f61565b80601f016020809104026020016040519081016040528092919081815260200182805461051290611f61565b801561055f5780601f106105345761010080835404028352916020019161055f565b820191906000526020600020905b81548152906001019060200180831161054257829003601f168201915b5050505050905090565b600061057d610576610cbb565b8484610cc3565b6001905092915050565b60016020528060005260406000206000915090505481565b6000600454905090565b60006105b6848484610e8e565b610677846105c2610cbb565b6106728560405180606001604052806028815260200161232f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610628610cbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fc19092919063ffffffff16565b610cc3565b600190509392505050565b60006005548211156106c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c090611c52565b60405180910390fd5b60006106d3611025565b90506106e8818461105090919063ffffffff16565b915050919050565b6000600960009054906101000a900460ff16905090565b61070f610cbb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390611cf2565b60405180910390fd5b80600c8190555050565b60026020528060005260406000206000915090505481565b60055481565b6107cc610cbb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090611cf2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c090611c72565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006109d0600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610682565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610a0f90611f61565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3b90611f61565b8015610a885780601f10610a5d57610100808354040283529160200191610a88565b820191906000526020600020905b815481529060010190602001808311610a6b57829003601f168201915b5050505050905090565b6000610aa6610a9f610cbb565b8484610e8e565b6001905092915050565b610ab8610cbb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c90611cf2565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b610b97610cbb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90611cf2565b60405180910390fd5b80600b8190555050565b60001981565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2a90611d52565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90611c92565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e819190611d72565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef590611d32565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590611c32565b60405180910390fd5b60008111610fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa890611d12565b60405180910390fd5b610fbc83838361109a565b505050565b6000838311158290611009576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110009190611c10565b60405180910390fd5b50600083856110189190611ea5565b9050809150509392505050565b60008060006110326113f7565b91509150611049818361105090919063ffffffff16565b9250505090565b600061109283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611444565b905092915050565b6000806000806000806110ac876114a7565b9650509550955095509550955060006110c3611025565b905060006110da828461150e90919063ffffffff16565b90506110ef818861158990919063ffffffff16565b96506111658160016000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115d390919063ffffffff16565b60016000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061121c88600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461158990919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112b187600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115d390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112fe8685611631565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161135b9190611d72565b60405180910390a3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113e29190611d72565b60405180910390a35050505050505050505050565b600080600060055490506000600454905061141f60045460055461105090919063ffffffff16565b82101561143757600554600454935093505050611440565b81819350935050505b9091565b6000808311829061148b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114829190611c10565b60405180910390fd5b506000838561149a9190611e1a565b9050809150509392505050565b60008060008060008060008060008060006114c18c61166b565b935093509350935060008060006114e18f87876114dc611025565b6116ea565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b6000808314156115215760009050611583565b6000828461152f9190611e4b565b905082848261153e9190611e1a565b1461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590611cd2565b60405180910390fd5b809150505b92915050565b60006115cb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fc1565b905092915050565b60008082846115e29190611dc4565b905083811015611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e90611cb2565b60405180910390fd5b8091505092915050565b6116468260055461158990919063ffffffff16565b600581905550611661816006546115d390919063ffffffff16565b6006819055505050565b600080600080600061167c86611773565b90506000611689876117a4565b90506000611696886117d5565b905060006116d1826116c3856116b5888e61158990919063ffffffff16565b61158990919063ffffffff16565b61158990919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080611703858961150e90919063ffffffff16565b9050600061171a868961150e90919063ffffffff16565b90506000611731878961150e90919063ffffffff16565b9050600061175a8261174c858761158990919063ffffffff16565b61158990919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061179d606461178f600a548561150e90919063ffffffff16565b61105090919063ffffffff16565b9050919050565b60006117ce60646117c0600b548561150e90919063ffffffff16565b61105090919063ffffffff16565b9050919050565b600080610258600e546117e89190611dc4565b4210156117f85760329050611882565b6104b0600e546118089190611dc4565b4210156118185760289050611881565b610708600e546118289190611dc4565b42101561183857601e9050611880565b610960600e546118489190611dc4565b421015611858576014905061187f565b610bb8600e546118689190611dc4565b42101561187857600a905061187e565b600c5490505b5b5b5b5b6118a8606461189a838661150e90919063ffffffff16565b61105090919063ffffffff16565b915050919050565b6000813590506118bf81612300565b92915050565b6000813590506118d481612317565b92915050565b6000602082840312156118f0576118ef612020565b5b60006118fe848285016118b0565b91505092915050565b6000806040838503121561191e5761191d612020565b5b600061192c858286016118b0565b925050602061193d858286016118b0565b9150509250929050565b6000806000606084860312156119605761195f612020565b5b600061196e868287016118b0565b935050602061197f868287016118b0565b9250506040611990868287016118c5565b9150509250925092565b600080604083850312156119b1576119b0612020565b5b60006119bf858286016118b0565b92505060206119d0858286016118c5565b9150509250929050565b6000602082840312156119f0576119ef612020565b5b60006119fe848285016118c5565b91505092915050565b611a1081611ed9565b82525050565b611a1f81611eeb565b82525050565b6000611a3082611da8565b611a3a8185611db3565b9350611a4a818560208601611f2e565b611a5381612025565b840191505092915050565b6000611a6b602383611db3565b9150611a7682612036565b604082019050919050565b6000611a8e602a83611db3565b9150611a9982612085565b604082019050919050565b6000611ab1602683611db3565b9150611abc826120d4565b604082019050919050565b6000611ad4602283611db3565b9150611adf82612123565b604082019050919050565b6000611af7601b83611db3565b9150611b0282612172565b602082019050919050565b6000611b1a602183611db3565b9150611b258261219b565b604082019050919050565b6000611b3d602083611db3565b9150611b48826121ea565b602082019050919050565b6000611b60602983611db3565b9150611b6b82612213565b604082019050919050565b6000611b83602583611db3565b9150611b8e82612262565b604082019050919050565b6000611ba6602483611db3565b9150611bb1826122b1565b604082019050919050565b611bc581611f17565b82525050565b611bd481611f21565b82525050565b6000602082019050611bef6000830184611a07565b92915050565b6000602082019050611c0a6000830184611a16565b92915050565b60006020820190508181036000830152611c2a8184611a25565b905092915050565b60006020820190508181036000830152611c4b81611a5e565b9050919050565b60006020820190508181036000830152611c6b81611a81565b9050919050565b60006020820190508181036000830152611c8b81611aa4565b9050919050565b60006020820190508181036000830152611cab81611ac7565b9050919050565b60006020820190508181036000830152611ccb81611aea565b9050919050565b60006020820190508181036000830152611ceb81611b0d565b9050919050565b60006020820190508181036000830152611d0b81611b30565b9050919050565b60006020820190508181036000830152611d2b81611b53565b9050919050565b60006020820190508181036000830152611d4b81611b76565b9050919050565b60006020820190508181036000830152611d6b81611b99565b9050919050565b6000602082019050611d876000830184611bbc565b92915050565b6000602082019050611da26000830184611bcb565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611dcf82611f17565b9150611dda83611f17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611e0f57611e0e611f93565b5b828201905092915050565b6000611e2582611f17565b9150611e3083611f17565b925082611e4057611e3f611fc2565b5b828204905092915050565b6000611e5682611f17565b9150611e6183611f17565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e9a57611e99611f93565b5b828202905092915050565b6000611eb082611f17565b9150611ebb83611f17565b925082821015611ece57611ecd611f93565b5b828203905092915050565b6000611ee482611ef7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611f4c578082015181840152602081019050611f31565b83811115611f5b576000848401525b50505050565b60006002820490506001821680611f7957607f821691505b60208210811415611f8d57611f8c611ff1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61230981611ed9565b811461231457600080fd5b50565b61232081611f17565b811461232b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122097c46dd25912374df8cb9cd7ae364d2d23cab3d77ae1f035537a0fe5510819a964736f6c63430008060033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c806345e0b9d4116100b8578063a9059cbb1161007c578063a9059cbb14610364578063aecb9ca714610394578063af465a27146103b0578063cea26958146103ce578063d49d5181146103ea578063dd62ed3e1461040857610137565b806345e0b9d4146102be5780634fb2e45d146102dc57806370a08231146102f85780638da5cb5b1461032857806395d89b411461034657610137565b806323b872dd116100ff57806323b872dd146101f45780632d83811914610224578063313ce56714610254578063379e2919146102725780633b7e6d4a1461028e57610137565b8063061c82d01461013c57806306fdde0314610158578063095ea7b3146101765780630cfc15f9146101a657806318160ddd146101d6575b600080fd5b610156600480360381019061015191906119da565b610438565b005b6101606104d7565b60405161016d9190611c10565b60405180910390f35b610190600480360381019061018b919061199a565b610569565b60405161019d9190611bf5565b60405180910390f35b6101c060048036038101906101bb91906118da565b610587565b6040516101cd9190611d72565b60405180910390f35b6101de61059f565b6040516101eb9190611d72565b60405180910390f35b61020e60048036038101906102099190611947565b6105a9565b60405161021b9190611bf5565b60405180910390f35b61023e600480360381019061023991906119da565b610682565b60405161024b9190611d72565b60405180910390f35b61025c6106f0565b6040516102699190611d8d565b60405180910390f35b61028c600480360381019061028791906119da565b610707565b005b6102a860048036038101906102a391906118da565b6107a6565b6040516102b59190611d72565b60405180910390f35b6102c66107be565b6040516102d39190611d72565b60405180910390f35b6102f660048036038101906102f191906118da565b6107c4565b005b610312600480360381019061030d91906118da565b610986565b60405161031f9190611d72565b60405180910390f35b6103306109d7565b60405161033d9190611bda565b60405180910390f35b61034e610a00565b60405161035b9190611c10565b60405180910390f35b61037e6004803603810190610379919061199a565b610a92565b60405161038b9190611bf5565b60405180910390f35b6103ae60048036038101906103a991906118da565b610ab0565b005b6103b8610b89565b6040516103c59190611d72565b60405180910390f35b6103e860048036038101906103e391906119da565b610b8f565b005b6103f2610c2e565b6040516103ff9190611d72565b60405180910390f35b610422600480360381019061041d9190611907565b610c34565b60405161042f9190611d72565b60405180910390f35b610440610cbb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c490611cf2565b60405180910390fd5b80600a8190555050565b6060600780546104e690611f61565b80601f016020809104026020016040519081016040528092919081815260200182805461051290611f61565b801561055f5780601f106105345761010080835404028352916020019161055f565b820191906000526020600020905b81548152906001019060200180831161054257829003601f168201915b5050505050905090565b600061057d610576610cbb565b8484610cc3565b6001905092915050565b60016020528060005260406000206000915090505481565b6000600454905090565b60006105b6848484610e8e565b610677846105c2610cbb565b6106728560405180606001604052806028815260200161232f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610628610cbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fc19092919063ffffffff16565b610cc3565b600190509392505050565b60006005548211156106c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c090611c52565b60405180910390fd5b60006106d3611025565b90506106e8818461105090919063ffffffff16565b915050919050565b6000600960009054906101000a900460ff16905090565b61070f610cbb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390611cf2565b60405180910390fd5b80600c8190555050565b60026020528060005260406000206000915090505481565b60055481565b6107cc610cbb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090611cf2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c090611c72565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006109d0600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610682565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610a0f90611f61565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3b90611f61565b8015610a885780601f10610a5d57610100808354040283529160200191610a88565b820191906000526020600020905b815481529060010190602001808311610a6b57829003601f168201915b5050505050905090565b6000610aa6610a9f610cbb565b8484610e8e565b6001905092915050565b610ab8610cbb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c90611cf2565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b610b97610cbb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90611cf2565b60405180910390fd5b80600b8190555050565b60001981565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2a90611d52565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90611c92565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e819190611d72565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef590611d32565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590611c32565b60405180910390fd5b60008111610fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa890611d12565b60405180910390fd5b610fbc83838361109a565b505050565b6000838311158290611009576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110009190611c10565b60405180910390fd5b50600083856110189190611ea5565b9050809150509392505050565b60008060006110326113f7565b91509150611049818361105090919063ffffffff16565b9250505090565b600061109283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611444565b905092915050565b6000806000806000806110ac876114a7565b9650509550955095509550955060006110c3611025565b905060006110da828461150e90919063ffffffff16565b90506110ef818861158990919063ffffffff16565b96506111658160016000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115d390919063ffffffff16565b60016000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061121c88600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461158990919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112b187600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115d390919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112fe8685611631565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161135b9190611d72565b60405180910390a3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113e29190611d72565b60405180910390a35050505050505050505050565b600080600060055490506000600454905061141f60045460055461105090919063ffffffff16565b82101561143757600554600454935093505050611440565b81819350935050505b9091565b6000808311829061148b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114829190611c10565b60405180910390fd5b506000838561149a9190611e1a565b9050809150509392505050565b60008060008060008060008060008060006114c18c61166b565b935093509350935060008060006114e18f87876114dc611025565b6116ea565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b6000808314156115215760009050611583565b6000828461152f9190611e4b565b905082848261153e9190611e1a565b1461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590611cd2565b60405180910390fd5b809150505b92915050565b60006115cb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fc1565b905092915050565b60008082846115e29190611dc4565b905083811015611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e90611cb2565b60405180910390fd5b8091505092915050565b6116468260055461158990919063ffffffff16565b600581905550611661816006546115d390919063ffffffff16565b6006819055505050565b600080600080600061167c86611773565b90506000611689876117a4565b90506000611696886117d5565b905060006116d1826116c3856116b5888e61158990919063ffffffff16565b61158990919063ffffffff16565b61158990919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080611703858961150e90919063ffffffff16565b9050600061171a868961150e90919063ffffffff16565b90506000611731878961150e90919063ffffffff16565b9050600061175a8261174c858761158990919063ffffffff16565b61158990919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061179d606461178f600a548561150e90919063ffffffff16565b61105090919063ffffffff16565b9050919050565b60006117ce60646117c0600b548561150e90919063ffffffff16565b61105090919063ffffffff16565b9050919050565b600080610258600e546117e89190611dc4565b4210156117f85760329050611882565b6104b0600e546118089190611dc4565b4210156118185760289050611881565b610708600e546118289190611dc4565b42101561183857601e9050611880565b610960600e546118489190611dc4565b421015611858576014905061187f565b610bb8600e546118689190611dc4565b42101561187857600a905061187e565b600c5490505b5b5b5b5b6118a8606461189a838661150e90919063ffffffff16565b61105090919063ffffffff16565b915050919050565b6000813590506118bf81612300565b92915050565b6000813590506118d481612317565b92915050565b6000602082840312156118f0576118ef612020565b5b60006118fe848285016118b0565b91505092915050565b6000806040838503121561191e5761191d612020565b5b600061192c858286016118b0565b925050602061193d858286016118b0565b9150509250929050565b6000806000606084860312156119605761195f612020565b5b600061196e868287016118b0565b935050602061197f868287016118b0565b9250506040611990868287016118c5565b9150509250925092565b600080604083850312156119b1576119b0612020565b5b60006119bf858286016118b0565b92505060206119d0858286016118c5565b9150509250929050565b6000602082840312156119f0576119ef612020565b5b60006119fe848285016118c5565b91505092915050565b611a1081611ed9565b82525050565b611a1f81611eeb565b82525050565b6000611a3082611da8565b611a3a8185611db3565b9350611a4a818560208601611f2e565b611a5381612025565b840191505092915050565b6000611a6b602383611db3565b9150611a7682612036565b604082019050919050565b6000611a8e602a83611db3565b9150611a9982612085565b604082019050919050565b6000611ab1602683611db3565b9150611abc826120d4565b604082019050919050565b6000611ad4602283611db3565b9150611adf82612123565b604082019050919050565b6000611af7601b83611db3565b9150611b0282612172565b602082019050919050565b6000611b1a602183611db3565b9150611b258261219b565b604082019050919050565b6000611b3d602083611db3565b9150611b48826121ea565b602082019050919050565b6000611b60602983611db3565b9150611b6b82612213565b604082019050919050565b6000611b83602583611db3565b9150611b8e82612262565b604082019050919050565b6000611ba6602483611db3565b9150611bb1826122b1565b604082019050919050565b611bc581611f17565b82525050565b611bd481611f21565b82525050565b6000602082019050611bef6000830184611a07565b92915050565b6000602082019050611c0a6000830184611a16565b92915050565b60006020820190508181036000830152611c2a8184611a25565b905092915050565b60006020820190508181036000830152611c4b81611a5e565b9050919050565b60006020820190508181036000830152611c6b81611a81565b9050919050565b60006020820190508181036000830152611c8b81611aa4565b9050919050565b60006020820190508181036000830152611cab81611ac7565b9050919050565b60006020820190508181036000830152611ccb81611aea565b9050919050565b60006020820190508181036000830152611ceb81611b0d565b9050919050565b60006020820190508181036000830152611d0b81611b30565b9050919050565b60006020820190508181036000830152611d2b81611b53565b9050919050565b60006020820190508181036000830152611d4b81611b76565b9050919050565b60006020820190508181036000830152611d6b81611b99565b9050919050565b6000602082019050611d876000830184611bbc565b92915050565b6000602082019050611da26000830184611bcb565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611dcf82611f17565b9150611dda83611f17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611e0f57611e0e611f93565b5b828201905092915050565b6000611e2582611f17565b9150611e3083611f17565b925082611e4057611e3f611fc2565b5b828204905092915050565b6000611e5682611f17565b9150611e6183611f17565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e9a57611e99611f93565b5b828202905092915050565b6000611eb082611f17565b9150611ebb83611f17565b925082821015611ece57611ecd611f93565b5b828203905092915050565b6000611ee482611ef7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611f4c578082015181840152602081019050611f31565b83811115611f5b576000848401525b50505050565b60006002820490506001821680611f7957607f821691505b60208210811415611f8d57611f8c611ff1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61230981611ed9565b811461231457600080fd5b50565b61232081611f17565b811461232b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122097c46dd25912374df8cb9cd7ae364d2d23cab3d77ae1f035537a0fe5510819a964736f6c63430008060033

Deployed Bytecode Sourcemap

5695:7332:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8335:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6728:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7580:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5812:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7005:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7749:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8070:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6914:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8559:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5862:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6093:48;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5448:240;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7108:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5234:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6819:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7254:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8669:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6038:48;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8445:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5990:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7429:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8335:98;5371:12;:10;:12::i;:::-;5361:22;;:6;;;;;;;;;;:22;;;5353:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8419:6:::1;8409:7;:16;;;;8335:98:::0;:::o;6728:83::-;6765:13;6798:5;6791:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6728:83;:::o;7580:161::-;7655:4;7672:39;7681:12;:10;:12::i;:::-;7695:7;7704:6;7672:8;:39::i;:::-;7729:4;7722:11;;7580:161;;;;:::o;5812:43::-;;;;;;;;;;;;;;;;;:::o;7005:95::-;7058:7;7085;;7078:14;;7005:95;:::o;7749:313::-;7847:4;7864:36;7874:6;7882:9;7893:6;7864:9;:36::i;:::-;7911:121;7920:6;7928:12;:10;:12::i;:::-;7942:89;7980:6;7942:89;;;;;;;;;;;;;;;;;:11;:19;7954:6;7942:19;;;;;;;;;;;;;;;:33;7962:12;:10;:12::i;:::-;7942:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7911:8;:121::i;:::-;8050:4;8043:11;;7749:313;;;;;:::o;8070:253::-;8136:7;8175;;8164;:18;;8156:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8240:19;8263:10;:8;:10::i;:::-;8240:33;;8291:24;8303:11;8291:7;:11;;:24;;;;:::i;:::-;8284:31;;;8070:253;;;:::o;6914:83::-;6955:5;6980:9;;;;;;;;;;;6973:16;;6914:83;:::o;8559:98::-;5371:12;:10;:12::i;:::-;5361:22;;:6;;;;;;;;;;:22;;;5353:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8643:6:::1;8633:7;:16;;;;8559:98:::0;:::o;5862:43::-;;;;;;;;;;;;;;;;;:::o;6093:48::-;;;;:::o;5448:240::-;5371:12;:10;:12::i;:::-;5361:22;;:6;;;;;;;;;;:22;;;5353:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5553:1:::1;5533:22;;:8;:22;;;;5525:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5643:8;5614:38;;5635:6;::::0;::::1;;;;;;;;5614:38;;;;;;;;;;;;5672:8;5663:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5448:240:::0;:::o;7108:138::-;7174:7;7201:37;7221:7;:16;7229:7;7221:16;;;;;;;;;;;;;;;;7201:19;:37::i;:::-;7194:44;;7108:138;;;:::o;5234:79::-;5272:7;5299:6;;;;;;;;;;;5292:13;;5234:79;:::o;6819:87::-;6858:13;6891:7;6884:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6819:87;:::o;7254:167::-;7332:4;7349:42;7359:12;:10;:12::i;:::-;7373:9;7384:6;7349:9;:42::i;:::-;7409:4;7402:11;;7254:167;;;;:::o;8669:103::-;5371:12;:10;:12::i;:::-;5361:22;;:6;;;;;;;;;;:22;;;5353:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8756:8:::1;8742:11;;:22;;;;;;;;;;;;;;;;;;8669:103:::0;:::o;6038:48::-;;;;:::o;8445:102::-;5371:12;:10;:12::i;:::-;5361:22;;:6;;;;;;;;;;:22;;;5353:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8532:7:::1;8521:8;:18;;;;8445:102:::0;:::o;5990:41::-;6029:1;6020:11;5990:41;:::o;7429:143::-;7510:7;7537:11;:18;7549:5;7537:18;;;;;;;;;;;;;;;:27;7556:7;7537:27;;;;;;;;;;;;;;;;7530:34;;7429:143;;;;:::o;2367:98::-;2420:7;2447:10;2440:17;;2367:98;:::o;11518:337::-;11628:1;11611:19;;:5;:19;;;;11603:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11709:1;11690:21;;:7;:21;;;;11682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11793:6;11763:11;:18;11775:5;11763:18;;;;;;;;;;;;;;;:27;11782:7;11763:27;;;;;;;;;;;;;;;:36;;;;11831:7;11815:32;;11824:5;11815:32;;;11840:6;11815:32;;;;;;:::i;:::-;;;;;;;;11518:337;;;:::o;11863:388::-;12001:1;11985:18;;:4;:18;;;;11977:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12078:1;12064:16;;:2;:16;;;;12056:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12148:1;12139:6;:10;12131:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12208:35;12226:4;12232:2;12236:6;12208:17;:35::i;:::-;11863:388;;;:::o;1139:192::-;1225:7;1258:1;1253;:6;;1261:12;1245:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1285:9;1301:1;1297;:5;;;;:::i;:::-;1285:17;;1322:1;1315:8;;;1139:192;;;;;:::o;10186:163::-;10227:7;10248:15;10265;10284:19;:17;:19::i;:::-;10247:56;;;;10321:20;10333:7;10321;:11;;:20;;;;:::i;:::-;10314:27;;;;10186:163;:::o;1597:132::-;1655:7;1682:39;1686:1;1689;1682:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1675:46;;1597:132;;;;:::o;12259:765::-;12358:15;12375:23;12400:12;12414:23;12439:12;12455;12471:19;12482:7;12471:10;:19::i;:::-;12357:133;;;;;;;;;;;;;12511:19;12534:10;:8;:10::i;:::-;12511:33;;12555:12;12570:21;12579:11;12570:4;:8;;:21;;;;:::i;:::-;12555:36;;12620:25;12640:4;12620:15;:19;;:25;;;;:::i;:::-;12602:43;;12689:30;12714:4;12689:7;:20;12697:11;;;;;;;;;;;12689:20;;;;;;;;;;;;;;;;:24;;:30;;;;:::i;:::-;12666:7;:20;12674:11;;;;;;;;;;;12666:20;;;;;;;;;;;;;;;:53;;;;12748:28;12768:7;12748;:15;12756:6;12748:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12730:7;:15;12738:6;12730:15;;;;;;;;;;;;;;;:46;;;;12808:39;12831:15;12808:7;:18;12816:9;12808:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12787:7;:18;12795:9;12787:18;;;;;;;;;;;;;;;:60;;;;12882:23;12894:4;12900;12882:11;:23::i;:::-;12938:9;12921:44;;12930:6;12921:44;;;12949:15;12921:44;;;;;;:::i;:::-;;;;;;;;12998:11;;;;;;;;;;;12981:35;;12990:6;12981:35;;;13011:4;12981:35;;;;;;:::i;:::-;;;;;;;;12346:678;;;;;;;;12259:765;;;:::o;10357:262::-;10407:7;10416;10436:15;10454:7;;10436:25;;10472:15;10490:7;;10472:25;;10528:20;10540:7;;10528;;:11;;:20;;;;:::i;:::-;10518:7;:30;10514:61;;;10558:7;;10567;;10550:25;;;;;;;;10514:61;10594:7;10603;10586:25;;;;;;10357:262;;;:::o;1737:278::-;1823:7;1855:1;1851;:5;1858:12;1843:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1882:9;1898:1;1894;:5;;;;:::i;:::-;1882:17;;2006:1;1999:8;;;1737:278;;;;;:::o;8935:433::-;8994:7;9003;9012;9021;9030;9039;9048;9069:23;9094:12;9108:13;9123:12;9139:20;9151:7;9139:11;:20::i;:::-;9068:91;;;;;;;;9171:15;9188:23;9213:12;9229:45;9241:7;9250:4;9256:5;9263:10;:8;:10::i;:::-;9229:11;:45::i;:::-;9170:104;;;;;;9293:7;9302:15;9319:4;9325:15;9342:4;9348:5;9355:4;9285:75;;;;;;;;;;;;;;;;;;;;;8935:433;;;;;;;;;:::o;1339:250::-;1397:7;1426:1;1421;:6;1417:47;;;1451:1;1444:8;;;;1417:47;1476:9;1492:1;1488;:5;;;;:::i;:::-;1476:17;;1521:1;1516;1512;:5;;;;:::i;:::-;:10;1504:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1580:1;1573:8;;;1339:250;;;;;:::o;995:136::-;1053:7;1080:43;1084:1;1087;1080:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1073:50;;995:136;;;;:::o;806:181::-;864:7;884:9;900:1;896;:5;;;;:::i;:::-;884:17;;925:1;920;:6;;912:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;978:1;971:8;;;806:181;;;;:::o;8780:147::-;8858:17;8870:4;8858:7;;:11;;:17;;;;:::i;:::-;8848:7;:27;;;;8899:20;8914:4;8899:10;;:14;;:20;;;;:::i;:::-;8886:10;:33;;;;8780:147;;:::o;9376:385::-;9436:7;9445;9454;9463;9483:12;9498:24;9514:7;9498:15;:24::i;:::-;9483:39;;9533:13;9549:25;9566:7;9549:16;:25::i;:::-;9533:41;;9585:12;9600:24;9616:7;9600:15;:24::i;:::-;9585:39;;9635:23;9661:38;9694:4;9661:28;9683:5;9661:17;9673:4;9661:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:38;;;;:::i;:::-;9635:64;;9718:15;9735:4;9741:5;9748:4;9710:43;;;;;;;;;;;;9376:385;;;;;:::o;9769:409::-;9879:7;9888;9897;9917:15;9935:24;9947:11;9935:7;:11;;:24;;;;:::i;:::-;9917:42;;9970:12;9985:21;9994:11;9985:4;:8;;:21;;;;:::i;:::-;9970:36;;10017:13;10033:22;10043:11;10033:5;:9;;:22;;;;:::i;:::-;10017:38;;10066:23;10092:28;10114:5;10092:17;10104:4;10092:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;10066:54;;10139:7;10148:15;10165:4;10131:39;;;;;;;;;;9769:409;;;;;;;;:::o;10633:154::-;10697:7;10724:55;10763:5;10724:20;10736:7;;10724;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;10717:62;;10633:154;;;:::o;10799:156::-;10864:7;10891:56;10931:5;10891:21;10903:8;;10891:7;:11;;:21;;;;:::i;:::-;:25;;:56;;;;:::i;:::-;10884:63;;10799:156;;;:::o;10967:543::-;11031:7;11051:12;11118:3;11105:10;;:16;;;;:::i;:::-;11087:15;:34;11084:338;;;11130:2;11123:9;;11084:338;;;11182:4;11169:10;;:17;;;;:::i;:::-;11151:15;:35;11148:274;;;11195:2;11188:9;;11148:274;;;11247:4;11234:10;;:17;;;;:::i;:::-;11216:15;:35;11213:209;;;11260:2;11253:9;;11213:209;;;11312:4;11299:10;;:17;;;;:::i;:::-;11281:15;:35;11278:144;;;11325:2;11318:9;;11278:144;;;11377:4;11364:10;;:17;;;;:::i;:::-;11346:15;:35;11343:79;;;11390:2;11383:9;;11343:79;;;11415:7;;11408:14;;11343:79;11278:144;11213:209;11148:274;11084:338;11450:52;11486:5;11450:17;11462:4;11450:7;:11;;:17;;;;:::i;:::-;:21;;:52;;;;:::i;:::-;11443:59;;;10967:543;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:329::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;411:79;;:::i;:::-;373:2;531:1;556:53;601:7;592:6;581:9;577:22;556:53;:::i;:::-;546:63;;502:117;363:263;;;;:::o;632:474::-;700:6;708;757:2;745:9;736:7;732:23;728:32;725:2;;;763:79;;:::i;:::-;725:2;883:1;908:53;953:7;944:6;933:9;929:22;908:53;:::i;:::-;898:63;;854:117;1010:2;1036:53;1081:7;1072:6;1061:9;1057:22;1036:53;:::i;:::-;1026:63;;981:118;715:391;;;;;:::o;1112:619::-;1189:6;1197;1205;1254:2;1242:9;1233:7;1229:23;1225:32;1222:2;;;1260:79;;:::i;:::-;1222:2;1380:1;1405:53;1450:7;1441:6;1430:9;1426:22;1405:53;:::i;:::-;1395:63;;1351:117;1507:2;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1478:118;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1212:519;;;;;:::o;1737:474::-;1805:6;1813;1862:2;1850:9;1841:7;1837:23;1833:32;1830:2;;;1868:79;;:::i;:::-;1830:2;1988:1;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1959:117;2115:2;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2086:118;1820:391;;;;;:::o;2217:329::-;2276:6;2325:2;2313:9;2304:7;2300:23;2296:32;2293:2;;;2331:79;;:::i;:::-;2293:2;2451:1;2476:53;2521:7;2512:6;2501:9;2497:22;2476:53;:::i;:::-;2466:63;;2422:117;2283:263;;;;:::o;2552:118::-;2639:24;2657:5;2639:24;:::i;:::-;2634:3;2627:37;2617:53;;:::o;2676:109::-;2757:21;2772:5;2757:21;:::i;:::-;2752:3;2745:34;2735:50;;:::o;2791:364::-;2879:3;2907:39;2940:5;2907:39;:::i;:::-;2962:71;3026:6;3021:3;2962:71;:::i;:::-;2955:78;;3042:52;3087:6;3082:3;3075:4;3068:5;3064:16;3042:52;:::i;:::-;3119:29;3141:6;3119:29;:::i;:::-;3114:3;3110:39;3103:46;;2883:272;;;;;:::o;3161:366::-;3303:3;3324:67;3388:2;3383:3;3324:67;:::i;:::-;3317:74;;3400:93;3489:3;3400:93;:::i;:::-;3518:2;3513:3;3509:12;3502:19;;3307:220;;;:::o;3533:366::-;3675:3;3696:67;3760:2;3755:3;3696:67;:::i;:::-;3689:74;;3772:93;3861:3;3772:93;:::i;:::-;3890:2;3885:3;3881:12;3874:19;;3679:220;;;:::o;3905:366::-;4047:3;4068:67;4132:2;4127:3;4068:67;:::i;:::-;4061:74;;4144:93;4233:3;4144:93;:::i;:::-;4262:2;4257:3;4253:12;4246:19;;4051:220;;;:::o;4277:366::-;4419:3;4440:67;4504:2;4499:3;4440:67;:::i;:::-;4433:74;;4516:93;4605:3;4516:93;:::i;:::-;4634:2;4629:3;4625:12;4618:19;;4423:220;;;:::o;4649:366::-;4791:3;4812:67;4876:2;4871:3;4812:67;:::i;:::-;4805:74;;4888:93;4977:3;4888:93;:::i;:::-;5006:2;5001:3;4997:12;4990:19;;4795:220;;;:::o;5021:366::-;5163:3;5184:67;5248:2;5243:3;5184:67;:::i;:::-;5177:74;;5260:93;5349:3;5260:93;:::i;:::-;5378:2;5373:3;5369:12;5362:19;;5167:220;;;:::o;5393:366::-;5535:3;5556:67;5620:2;5615:3;5556:67;:::i;:::-;5549:74;;5632:93;5721:3;5632:93;:::i;:::-;5750:2;5745:3;5741:12;5734:19;;5539:220;;;:::o;5765:366::-;5907:3;5928:67;5992:2;5987:3;5928:67;:::i;:::-;5921:74;;6004:93;6093:3;6004:93;:::i;:::-;6122:2;6117:3;6113:12;6106:19;;5911:220;;;:::o;6137:366::-;6279:3;6300:67;6364:2;6359:3;6300:67;:::i;:::-;6293:74;;6376:93;6465:3;6376:93;:::i;:::-;6494:2;6489:3;6485:12;6478:19;;6283:220;;;:::o;6509:366::-;6651:3;6672:67;6736:2;6731:3;6672:67;:::i;:::-;6665:74;;6748:93;6837:3;6748:93;:::i;:::-;6866:2;6861:3;6857:12;6850:19;;6655:220;;;:::o;6881:118::-;6968:24;6986:5;6968:24;:::i;:::-;6963:3;6956:37;6946:53;;:::o;7005:112::-;7088:22;7104:5;7088:22;:::i;:::-;7083:3;7076:35;7066:51;;:::o;7123:222::-;7216:4;7254:2;7243:9;7239:18;7231:26;;7267:71;7335:1;7324:9;7320:17;7311:6;7267:71;:::i;:::-;7221:124;;;;:::o;7351:210::-;7438:4;7476:2;7465:9;7461:18;7453:26;;7489:65;7551:1;7540:9;7536:17;7527:6;7489:65;:::i;:::-;7443:118;;;;:::o;7567:313::-;7680:4;7718:2;7707:9;7703:18;7695:26;;7767:9;7761:4;7757:20;7753:1;7742:9;7738:17;7731:47;7795:78;7868:4;7859:6;7795:78;:::i;:::-;7787:86;;7685:195;;;;:::o;7886:419::-;8052:4;8090:2;8079:9;8075:18;8067:26;;8139:9;8133:4;8129:20;8125:1;8114:9;8110:17;8103:47;8167:131;8293:4;8167:131;:::i;:::-;8159:139;;8057:248;;;:::o;8311:419::-;8477:4;8515:2;8504:9;8500:18;8492:26;;8564:9;8558:4;8554:20;8550:1;8539:9;8535:17;8528:47;8592:131;8718:4;8592:131;:::i;:::-;8584:139;;8482:248;;;:::o;8736:419::-;8902:4;8940:2;8929:9;8925:18;8917:26;;8989:9;8983:4;8979:20;8975:1;8964:9;8960:17;8953:47;9017:131;9143:4;9017:131;:::i;:::-;9009:139;;8907:248;;;:::o;9161:419::-;9327:4;9365:2;9354:9;9350:18;9342:26;;9414:9;9408:4;9404:20;9400:1;9389:9;9385:17;9378:47;9442:131;9568:4;9442:131;:::i;:::-;9434:139;;9332:248;;;:::o;9586:419::-;9752:4;9790:2;9779:9;9775:18;9767:26;;9839:9;9833:4;9829:20;9825:1;9814:9;9810:17;9803:47;9867:131;9993:4;9867:131;:::i;:::-;9859:139;;9757:248;;;:::o;10011:419::-;10177:4;10215:2;10204:9;10200:18;10192:26;;10264:9;10258:4;10254:20;10250:1;10239:9;10235:17;10228:47;10292:131;10418:4;10292:131;:::i;:::-;10284:139;;10182:248;;;:::o;10436:419::-;10602:4;10640:2;10629:9;10625:18;10617:26;;10689:9;10683:4;10679:20;10675:1;10664:9;10660:17;10653:47;10717:131;10843:4;10717:131;:::i;:::-;10709:139;;10607:248;;;:::o;10861:419::-;11027:4;11065:2;11054:9;11050:18;11042:26;;11114:9;11108:4;11104:20;11100:1;11089:9;11085:17;11078:47;11142:131;11268:4;11142:131;:::i;:::-;11134:139;;11032:248;;;:::o;11286:419::-;11452:4;11490:2;11479:9;11475:18;11467:26;;11539:9;11533:4;11529:20;11525:1;11514:9;11510:17;11503:47;11567:131;11693:4;11567:131;:::i;:::-;11559:139;;11457:248;;;:::o;11711:419::-;11877:4;11915:2;11904:9;11900:18;11892:26;;11964:9;11958:4;11954:20;11950:1;11939:9;11935:17;11928:47;11992:131;12118:4;11992:131;:::i;:::-;11984:139;;11882:248;;;:::o;12136:222::-;12229:4;12267:2;12256:9;12252:18;12244:26;;12280:71;12348:1;12337:9;12333:17;12324:6;12280:71;:::i;:::-;12234:124;;;;:::o;12364:214::-;12453:4;12491:2;12480:9;12476:18;12468:26;;12504:67;12568:1;12557:9;12553:17;12544:6;12504:67;:::i;:::-;12458:120;;;;:::o;12665:99::-;12717:6;12751:5;12745:12;12735:22;;12724:40;;;:::o;12770:169::-;12854:11;12888:6;12883:3;12876:19;12928:4;12923:3;12919:14;12904:29;;12866:73;;;;:::o;12945:305::-;12985:3;13004:20;13022:1;13004:20;:::i;:::-;12999:25;;13038:20;13056:1;13038:20;:::i;:::-;13033:25;;13192:1;13124:66;13120:74;13117:1;13114:81;13111:2;;;13198:18;;:::i;:::-;13111:2;13242:1;13239;13235:9;13228:16;;12989:261;;;;:::o;13256:185::-;13296:1;13313:20;13331:1;13313:20;:::i;:::-;13308:25;;13347:20;13365:1;13347:20;:::i;:::-;13342:25;;13386:1;13376:2;;13391:18;;:::i;:::-;13376:2;13433:1;13430;13426:9;13421:14;;13298:143;;;;:::o;13447:348::-;13487:7;13510:20;13528:1;13510:20;:::i;:::-;13505:25;;13544:20;13562:1;13544:20;:::i;:::-;13539:25;;13732:1;13664:66;13660:74;13657:1;13654:81;13649:1;13642:9;13635:17;13631:105;13628:2;;;13739:18;;:::i;:::-;13628:2;13787:1;13784;13780:9;13769:20;;13495:300;;;;:::o;13801:191::-;13841:4;13861:20;13879:1;13861:20;:::i;:::-;13856:25;;13895:20;13913:1;13895:20;:::i;:::-;13890:25;;13934:1;13931;13928:8;13925:2;;;13939:18;;:::i;:::-;13925:2;13984:1;13981;13977:9;13969:17;;13846:146;;;;:::o;13998:96::-;14035:7;14064:24;14082:5;14064:24;:::i;:::-;14053:35;;14043:51;;;:::o;14100:90::-;14134:7;14177:5;14170:13;14163:21;14152:32;;14142:48;;;:::o;14196:126::-;14233:7;14273:42;14266:5;14262:54;14251:65;;14241:81;;;:::o;14328:77::-;14365:7;14394:5;14383:16;;14373:32;;;:::o;14411:86::-;14446:7;14486:4;14479:5;14475:16;14464:27;;14454:43;;;:::o;14503:307::-;14571:1;14581:113;14595:6;14592:1;14589:13;14581:113;;;14680:1;14675:3;14671:11;14665:18;14661:1;14656:3;14652:11;14645:39;14617:2;14614:1;14610:10;14605:15;;14581:113;;;14712:6;14709:1;14706:13;14703:2;;;14792:1;14783:6;14778:3;14774:16;14767:27;14703:2;14552:258;;;;:::o;14816:320::-;14860:6;14897:1;14891:4;14887:12;14877:22;;14944:1;14938:4;14934:12;14965:18;14955:2;;15021:4;15013:6;15009:17;14999:27;;14955:2;15083;15075:6;15072:14;15052:18;15049:38;15046:2;;;15102:18;;:::i;:::-;15046:2;14867:269;;;;:::o;15142:180::-;15190:77;15187:1;15180:88;15287:4;15284:1;15277:15;15311:4;15308:1;15301:15;15328:180;15376:77;15373:1;15366:88;15473:4;15470:1;15463:15;15497:4;15494:1;15487:15;15514:180;15562:77;15559:1;15552:88;15659:4;15656:1;15649:15;15683:4;15680:1;15673:15;15823:117;15932:1;15929;15922:12;15946:102;15987:6;16038:2;16034:7;16029:2;16022:5;16018:14;16014:28;16004:38;;15994:54;;;:::o;16054:222::-;16194:34;16190:1;16182:6;16178:14;16171:58;16263:5;16258:2;16250:6;16246:15;16239:30;16160:116;:::o;16282:229::-;16422:34;16418:1;16410:6;16406:14;16399:58;16491:12;16486:2;16478:6;16474:15;16467:37;16388:123;:::o;16517:225::-;16657:34;16653:1;16645:6;16641:14;16634:58;16726:8;16721:2;16713:6;16709:15;16702:33;16623:119;:::o;16748:221::-;16888:34;16884:1;16876:6;16872:14;16865:58;16957:4;16952:2;16944:6;16940:15;16933:29;16854:115;:::o;16975:177::-;17115:29;17111:1;17103:6;17099:14;17092:53;17081:71;:::o;17158:220::-;17298:34;17294:1;17286:6;17282:14;17275:58;17367:3;17362:2;17354:6;17350:15;17343:28;17264:114;:::o;17384:182::-;17524:34;17520:1;17512:6;17508:14;17501:58;17490:76;:::o;17572:228::-;17712:34;17708:1;17700:6;17696:14;17689:58;17781:11;17776:2;17768:6;17764:15;17757:36;17678:122;:::o;17806:224::-;17946:34;17942:1;17934:6;17930:14;17923:58;18015:7;18010:2;18002:6;17998:15;17991:32;17912:118;:::o;18036:223::-;18176:34;18172:1;18164:6;18160:14;18153:58;18245:6;18240:2;18232:6;18228:15;18221:31;18142:117;:::o;18265:122::-;18338:24;18356:5;18338:24;:::i;:::-;18331:5;18328:35;18318:2;;18377:1;18374;18367:12;18318:2;18308:79;:::o;18393:122::-;18466:24;18484:5;18466:24;:::i;:::-;18459:5;18456:35;18446:2;;18505:1;18502;18495:12;18446:2;18436:79;:::o

Swarm Source

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