ETH Price: $3,490.19 (+0.06%)
Gas: 2 Gwei

Token

MONKEY (MONKEY)
 

Overview

Max Total Supply

100,000,000 MONKEY

Holders

377

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 MONKEY

Value
$0.00
0x0834c5884c1837bdfe173472a5189e89f6a06250
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:
MONKEY

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-14
*/

//SPDX-License-Identifier: UNLICENSED



//Website: https://monkeyerc.vip/
//TG: https://t.me/monkey_erc
//X (Twitter): https://twitter.com/monkey_erc





pragma solidity ^0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    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");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract MONKEY  is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private  providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 private  tokenLiquidityThreshold = 900000 * 10**18;
    uint256 public maxWalletLimit = 10000 * 10**18;

    uint256 private  genesis_block;
    uint256 private deadline = 1;
    uint256 private launchtax = 95;

    address private  marketingWallet = 0xA676a2aa28B67Fe7a9cc4Be674023cB368752C41;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public taxes = Taxes(20, 2);
    Taxes public sellTaxes = Taxes(36, 4);

    mapping(address => bool) public exemptFee;
    


    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("MONKEY", "MONKEY") {
        _tokengeneration(msg.sender, 100000000 * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[deadWallet] = true;
        
    }

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) {
           
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

	if(feeswap == 0){
            return;
        }	

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity);
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity);
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        deadline = _deadline;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function AddExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = true;
    }

    function RemoveExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = false;
    }


    function updateMaxWalletLimit(uint256 maxWallet) external onlyOwner {
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

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":[{"internalType":"address","name":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"UpdateBuyTaxes","outputs":[],"stateMutability":"nonpayable","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":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b1916905569be951906eba2aa80000060085569021e19e0c9bab24000006009556001600b55605f600c55600d80546001600160a01b03191673a676a2aa28b67fe7a9cc4be674023cb368752c4117905560146080819052600260a0819052600e91909155600f55610100604052602460c0819052600460e08190526010919091556011553480156200009b57600080fd5b506040805180820182526006808252654d4f4e4b455960d01b6020808401829052845180860190955291845290830152906003620000da8382620004f9565b506004620000e98282620004f9565b50505062000106620001006200033d60201b60201c565b62000341565b6200012f33620001196012600a620006da565b62000129906305f5e100620006f2565b62000393565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001af91906200070c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022391906200070c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000271573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029791906200070c565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260126020526040808220805460ff1990811660019081179092553384528284208054821683179055600d549094168352908220805484168217905561dead9091527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f7805490921617905562000737565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620003fc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200048057607f821691505b602082108103620004a157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200045057600081815260208120601f850160051c81016020861015620004d05750805b601f850160051c820191505b81811015620004f157828155600101620004dc565b505050505050565b81516001600160401b0381111562000515576200051562000455565b6200052d816200052684546200046b565b84620004a7565b602080601f8311600181146200056557600084156200054c5750858301515b600019600386901b1c1916600185901b178555620004f1565b600085815260208120601f198616915b82811015620005965788860151825594840194600190910190840162000575565b5085821015620005b55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200061c578160001904821115620006005762000600620005c5565b808516156200060e57918102915b93841c9390800290620005e0565b509250929050565b6000826200063557506001620006d4565b816200064457506000620006d4565b81600181146200065d5760028114620006685762000688565b6001915050620006d4565b60ff8411156200067c576200067c620005c5565b50506001821b620006d4565b5060208310610133831016604e8410600b8410161715620006ad575081810a620006d4565b620006b98383620005db565b8060001904821115620006d057620006d0620005c5565b0290505b92915050565b6000620006eb60ff84168362000624565b9392505050565b8082028115828204841417620006d457620006d4620005c5565b6000602082840312156200071f57600080fd5b81516001600160a01b0381168114620006eb57600080fd5b611f8c80620007476000396000f3fe6080604052600436106101fd5760003560e01c80638a8c523c1161010d578063aacebbe3116100a0578063edaa11681161006f578063edaa1168146105ff578063f2fde38b1461061f578063f52be97c1461063f578063f66895a31461065f578063f887ea401461067a57600080fd5b8063aacebbe314610549578063c5d32bb214610569578063d695609b14610599578063dd62ed3e146105b957600080fd5b80639e252f00116100dc5780639e252f00146104c9578063a457c2d7146104e9578063a8aa1b3114610509578063a9059cbb1461052957600080fd5b80638a8c523c146104615780638cd4426d146104765780638da5cb5b1461049657806395d89b41146104b457600080fd5b80634324deae1161019057806370a082311161015f57806370a0823114610398578063715018a6146103ce578063728f8eea146103e3578063832c2bd21461041357806385141a771461043357600080fd5b80634324deae146103215780634ada218b146103415780635dbdb7e31461036257806366a88d961461038257600080fd5b806323b872dd116101cc57806323b872dd146102a5578063313ce567146102c557806339509351146102e157806342b6fa111461030157600080fd5b806306fdde0314610209578063095ea7b3146102345780631340538f1461026457806318160ddd1461028657600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e61069a565b60405161022b9190611afd565b60405180910390f35b34801561024057600080fd5b5061025461024f366004611b60565b61072c565b604051901515815260200161022b565b34801561027057600080fd5b5061028461027f366004611b9a565b610743565b005b34801561029257600080fd5b506002545b60405190815260200161022b565b3480156102b157600080fd5b506102546102c0366004611bbe565b610794565b3480156102d157600080fd5b506040516012815260200161022b565b3480156102ed57600080fd5b506102546102fc366004611b60565b610845565b34801561030d57600080fd5b5061028461031c366004611bff565b61087c565b34801561032d57600080fd5b5061028461033c366004611bff565b6108c2565b34801561034d57600080fd5b5060075461025490600160b01b900460ff1681565b34801561036e57600080fd5b5061028461037d366004611c18565b610908565b34801561038e57600080fd5b5061029760095481565b3480156103a457600080fd5b506102976103b3366004611c18565b6001600160a01b031660009081526020819052604090205490565b3480156103da57600080fd5b50610284610956565b3480156103ef57600080fd5b50600e54600f546103fe919082565b6040805192835260208301919091520161022b565b34801561041f57600080fd5b5061028461042e366004611c18565b61098c565b34801561043f57600080fd5b5061044961dead81565b6040516001600160a01b03909116815260200161022b565b34801561046d57600080fd5b506102846109d7565b34801561048257600080fd5b50610284610491366004611b60565b610a76565b3480156104a257600080fd5b506005546001600160a01b0316610449565b3480156104c057600080fd5b5061021e610b37565b3480156104d557600080fd5b506102846104e4366004611bff565b610b46565b3480156104f557600080fd5b50610254610504366004611b60565b610bae565b34801561051557600080fd5b50600754610449906001600160a01b031681565b34801561053557600080fd5b50610254610544366004611b60565b610c49565b34801561055557600080fd5b50610284610564366004611c18565b610c56565b34801561057557600080fd5b50610254610584366004611c18565b60126020526000908152604090205460ff1681565b3480156105a557600080fd5b506102846105b4366004611c35565b610ca2565b3480156105c557600080fd5b506102976105d4366004611c57565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561060b57600080fd5b5061028461061a366004611bff565b610cea565b34801561062b57600080fd5b5061028461063a366004611c18565b610d81565b34801561064b57600080fd5b5061028461065a366004611c35565b610e1c565b34801561066b57600080fd5b506010546011546103fe919082565b34801561068657600080fd5b50600654610449906001600160a01b031681565b6060600380546106a990611c90565b80601f01602080910402602001604051908101604052809291908181526020018280546106d590611c90565b80156107225780601f106106f757610100808354040283529160200191610722565b820191906000526020600020905b81548152906001019060200180831161070557829003601f168201915b5050505050905090565b6000610739338484610e64565b5060015b92915050565b6005546001600160a01b031633146107765760405162461bcd60e51b815260040161076d90611cca565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b60006107a1848484610f88565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108265760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161076d565b61083a85336108358685611d15565b610e64565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610739918590610835908690611d28565b6005546001600160a01b031633146108a65760405162461bcd60e51b815260040161076d90611cca565b6108b26012600a611e1f565b6108bc9082611e2e565b60085550565b6005546001600160a01b031633146108ec5760405162461bcd60e51b815260040161076d90611cca565b6108f86012600a611e1f565b6109029082611e2e565b60095550565b6005546001600160a01b031633146109325760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b6005546001600160a01b031633146109805760405162461bcd60e51b815260040161076d90611cca565b61098a6000611471565b565b6005546001600160a01b031633146109b65760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610a015760405162461bcd60e51b815260040161076d90611cca565b600754600160b01b900460ff1615610a5b5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161076d565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610aa05760405162461bcd60e51b815260040161076d90611cca565b816001600160a01b031663a9059cbb610ac16005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b329190611e45565b505050565b6060600480546106a990611c90565b6005546001600160a01b03163314610b705760405162461bcd60e51b815260040161076d90611cca565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610baa573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c305760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161076d565b610c3f33856108358685611d15565b5060019392505050565b6000610739338484610f88565b6005546001600160a01b03163314610c805760405162461bcd60e51b815260040161076d90611cca565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ccc5760405162461bcd60e51b815260040161076d90611cca565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610d145760405162461bcd60e51b815260040161076d90611cca565b600754600160b01b900460ff1615610d7c5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161076d565b600b55565b6005546001600160a01b03163314610dab5760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b038116610e105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161076d565b610e1981611471565b50565b6005546001600160a01b03163314610e465760405162461bcd60e51b815260040161076d90611cca565b60408051808201909152828152602001819052601091909155601155565b6001600160a01b038316610ec65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076d565b6001600160a01b038216610f275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111610fea5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161076d565b6001600160a01b03831660009081526012602052604090205460ff1615801561102c57506001600160a01b03821660009081526012602052604090205460ff16155b1561108057600754600160b01b900460ff166110805760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161076d565b6007546001600160a01b0384811691161480156110b657506001600160a01b03821660009081526012602052604090205460ff16155b80156110cc5750600754600160a01b900460ff16155b1561114c57600954816110f4846001600160a01b031660009081526020819052604090205490565b6110fe9190611d28565b111561114c5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161076d565b6007546001600160a01b0384811691161480159061118357506001600160a01b03821660009081526012602052604090205460ff16155b80156111a857506001600160a01b03831660009081526012602052604090205460ff16155b80156111be5750600754600160a01b900460ff16155b15611253576007546001600160a01b0383811691161461125357600954816111fb846001600160a01b031660009081526020819052604090205490565b6112059190611d28565b11156112535760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161076d565b6000806000611275604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526012602052604081205460ff161580156112b757506001600160a01b03871660009081526012602052604090205460ff16155b80156112d15750600b54600a546112ce9190611d28565b43105b600754909150600160a01b900460ff168061130457506001600160a01b03881660009081526012602052604090205460ff165b8061132757506001600160a01b03871660009081526012602052604090205460ff165b1561133557600092506113d1565b6007546001600160a01b038881169116148015611350575080155b15611389576010546011546113659190611d28565b604080518082019091526010548152601154602082015290955085945091506113d1565b806113c257600e54600f5461139e9190611d28565b60408051808201909152600e548152600f54602082015290955085945091506113d1565b80156113d157600c5494508493505b60646113dd8588611e2e565b6113e79190611e62565b600754909350600160a81b900460ff16801561141157506007546001600160a01b03898116911614155b156114205761142085836114c3565b611434888861142f868a611d15565b611600565b8215611467578415611467576000606461144e8789611e2e565b6114589190611e62565b9050611465893083611600565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610baa576007805460ff60a01b1916600160a01b17905581156115ef573060009081526020819052604090205460085481106115ed576001600854111561151657506008545b6000611523846002611e2e565b90506000818460200151846115389190611e2e565b6115429190611e62565b905060006115508285611d15565b90504761155c826117d8565b60006115688247611d15565b9050600087602001518661157c9190611d15565b6115869083611e62565b9050600088602001518261159a9190611e2e565b905080156115ac576115ac8682611932565b88516000906115bc846002611e2e565b6115c69190611e2e565b905080156115e457600d546115e4906001600160a01b0316826119e4565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166116645760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161076d565b6001600160a01b0382166116c65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161076d565b6001600160a01b0383166000908152602081905260409020548181101561173e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161076d565b6117488282611d15565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061177e908490611d28565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117ca91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061180d5761180d611e84565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a9190611e9a565b8160018151811061189d5761189d611e84565b6001600160a01b0392831660209182029290920101526006546118c39130911684610e64565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118fc908590600090869030904290600401611eb7565b600060405180830381600087803b15801561191657600080fd5b505af115801561192a573d6000803e3d6000fd5b505050505050565b60065461194a9030906001600160a01b031684610e64565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156119b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119dd9190611f28565b5050505050565b80471015611a345760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161076d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a81576040519150601f19603f3d011682016040523d82523d6000602084013e611a86565b606091505b5050905080610b325760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161076d565b600060208083528351808285015260005b81811015611b2a57858101830151858201604001528201611b0e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e1957600080fd5b60008060408385031215611b7357600080fd5b8235611b7e81611b4b565b946020939093013593505050565b8015158114610e1957600080fd5b600060208284031215611bac57600080fd5b8135611bb781611b8c565b9392505050565b600080600060608486031215611bd357600080fd5b8335611bde81611b4b565b92506020840135611bee81611b4b565b929592945050506040919091013590565b600060208284031215611c1157600080fd5b5035919050565b600060208284031215611c2a57600080fd5b8135611bb781611b4b565b60008060408385031215611c4857600080fd5b50508035926020909101359150565b60008060408385031215611c6a57600080fd5b8235611c7581611b4b565b91506020830135611c8581611b4b565b809150509250929050565b600181811c90821680611ca457607f821691505b602082108103611cc457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073d5761073d611cff565b8082018082111561073d5761073d611cff565b600181815b80851115611d76578160001904821115611d5c57611d5c611cff565b80851615611d6957918102915b93841c9390800290611d40565b509250929050565b600082611d8d5750600161073d565b81611d9a5750600061073d565b8160018114611db05760028114611dba57611dd6565b600191505061073d565b60ff841115611dcb57611dcb611cff565b50506001821b61073d565b5060208310610133831016604e8410600b8410161715611df9575081810a61073d565b611e038383611d3b565b8060001904821115611e1757611e17611cff565b029392505050565b6000611bb760ff841683611d7e565b808202811582820484141761073d5761073d611cff565b600060208284031215611e5757600080fd5b8151611bb781611b8c565b600082611e7f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611eac57600080fd5b8151611bb781611b4b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f075784516001600160a01b031683529383019391830191600101611ee2565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611f3d57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208c6dd3d41075f28f9b90ce8fc244dc053842fa8bf62eec48d6596cf9bcfaf77b64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c80638a8c523c1161010d578063aacebbe3116100a0578063edaa11681161006f578063edaa1168146105ff578063f2fde38b1461061f578063f52be97c1461063f578063f66895a31461065f578063f887ea401461067a57600080fd5b8063aacebbe314610549578063c5d32bb214610569578063d695609b14610599578063dd62ed3e146105b957600080fd5b80639e252f00116100dc5780639e252f00146104c9578063a457c2d7146104e9578063a8aa1b3114610509578063a9059cbb1461052957600080fd5b80638a8c523c146104615780638cd4426d146104765780638da5cb5b1461049657806395d89b41146104b457600080fd5b80634324deae1161019057806370a082311161015f57806370a0823114610398578063715018a6146103ce578063728f8eea146103e3578063832c2bd21461041357806385141a771461043357600080fd5b80634324deae146103215780634ada218b146103415780635dbdb7e31461036257806366a88d961461038257600080fd5b806323b872dd116101cc57806323b872dd146102a5578063313ce567146102c557806339509351146102e157806342b6fa111461030157600080fd5b806306fdde0314610209578063095ea7b3146102345780631340538f1461026457806318160ddd1461028657600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e61069a565b60405161022b9190611afd565b60405180910390f35b34801561024057600080fd5b5061025461024f366004611b60565b61072c565b604051901515815260200161022b565b34801561027057600080fd5b5061028461027f366004611b9a565b610743565b005b34801561029257600080fd5b506002545b60405190815260200161022b565b3480156102b157600080fd5b506102546102c0366004611bbe565b610794565b3480156102d157600080fd5b506040516012815260200161022b565b3480156102ed57600080fd5b506102546102fc366004611b60565b610845565b34801561030d57600080fd5b5061028461031c366004611bff565b61087c565b34801561032d57600080fd5b5061028461033c366004611bff565b6108c2565b34801561034d57600080fd5b5060075461025490600160b01b900460ff1681565b34801561036e57600080fd5b5061028461037d366004611c18565b610908565b34801561038e57600080fd5b5061029760095481565b3480156103a457600080fd5b506102976103b3366004611c18565b6001600160a01b031660009081526020819052604090205490565b3480156103da57600080fd5b50610284610956565b3480156103ef57600080fd5b50600e54600f546103fe919082565b6040805192835260208301919091520161022b565b34801561041f57600080fd5b5061028461042e366004611c18565b61098c565b34801561043f57600080fd5b5061044961dead81565b6040516001600160a01b03909116815260200161022b565b34801561046d57600080fd5b506102846109d7565b34801561048257600080fd5b50610284610491366004611b60565b610a76565b3480156104a257600080fd5b506005546001600160a01b0316610449565b3480156104c057600080fd5b5061021e610b37565b3480156104d557600080fd5b506102846104e4366004611bff565b610b46565b3480156104f557600080fd5b50610254610504366004611b60565b610bae565b34801561051557600080fd5b50600754610449906001600160a01b031681565b34801561053557600080fd5b50610254610544366004611b60565b610c49565b34801561055557600080fd5b50610284610564366004611c18565b610c56565b34801561057557600080fd5b50610254610584366004611c18565b60126020526000908152604090205460ff1681565b3480156105a557600080fd5b506102846105b4366004611c35565b610ca2565b3480156105c557600080fd5b506102976105d4366004611c57565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561060b57600080fd5b5061028461061a366004611bff565b610cea565b34801561062b57600080fd5b5061028461063a366004611c18565b610d81565b34801561064b57600080fd5b5061028461065a366004611c35565b610e1c565b34801561066b57600080fd5b506010546011546103fe919082565b34801561068657600080fd5b50600654610449906001600160a01b031681565b6060600380546106a990611c90565b80601f01602080910402602001604051908101604052809291908181526020018280546106d590611c90565b80156107225780601f106106f757610100808354040283529160200191610722565b820191906000526020600020905b81548152906001019060200180831161070557829003601f168201915b5050505050905090565b6000610739338484610e64565b5060015b92915050565b6005546001600160a01b031633146107765760405162461bcd60e51b815260040161076d90611cca565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b60006107a1848484610f88565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108265760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161076d565b61083a85336108358685611d15565b610e64565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610739918590610835908690611d28565b6005546001600160a01b031633146108a65760405162461bcd60e51b815260040161076d90611cca565b6108b26012600a611e1f565b6108bc9082611e2e565b60085550565b6005546001600160a01b031633146108ec5760405162461bcd60e51b815260040161076d90611cca565b6108f86012600a611e1f565b6109029082611e2e565b60095550565b6005546001600160a01b031633146109325760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b6005546001600160a01b031633146109805760405162461bcd60e51b815260040161076d90611cca565b61098a6000611471565b565b6005546001600160a01b031633146109b65760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610a015760405162461bcd60e51b815260040161076d90611cca565b600754600160b01b900460ff1615610a5b5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161076d565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610aa05760405162461bcd60e51b815260040161076d90611cca565b816001600160a01b031663a9059cbb610ac16005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b329190611e45565b505050565b6060600480546106a990611c90565b6005546001600160a01b03163314610b705760405162461bcd60e51b815260040161076d90611cca565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610baa573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c305760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161076d565b610c3f33856108358685611d15565b5060019392505050565b6000610739338484610f88565b6005546001600160a01b03163314610c805760405162461bcd60e51b815260040161076d90611cca565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ccc5760405162461bcd60e51b815260040161076d90611cca565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610d145760405162461bcd60e51b815260040161076d90611cca565b600754600160b01b900460ff1615610d7c5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161076d565b600b55565b6005546001600160a01b03163314610dab5760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b038116610e105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161076d565b610e1981611471565b50565b6005546001600160a01b03163314610e465760405162461bcd60e51b815260040161076d90611cca565b60408051808201909152828152602001819052601091909155601155565b6001600160a01b038316610ec65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076d565b6001600160a01b038216610f275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111610fea5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161076d565b6001600160a01b03831660009081526012602052604090205460ff1615801561102c57506001600160a01b03821660009081526012602052604090205460ff16155b1561108057600754600160b01b900460ff166110805760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161076d565b6007546001600160a01b0384811691161480156110b657506001600160a01b03821660009081526012602052604090205460ff16155b80156110cc5750600754600160a01b900460ff16155b1561114c57600954816110f4846001600160a01b031660009081526020819052604090205490565b6110fe9190611d28565b111561114c5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161076d565b6007546001600160a01b0384811691161480159061118357506001600160a01b03821660009081526012602052604090205460ff16155b80156111a857506001600160a01b03831660009081526012602052604090205460ff16155b80156111be5750600754600160a01b900460ff16155b15611253576007546001600160a01b0383811691161461125357600954816111fb846001600160a01b031660009081526020819052604090205490565b6112059190611d28565b11156112535760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161076d565b6000806000611275604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526012602052604081205460ff161580156112b757506001600160a01b03871660009081526012602052604090205460ff16155b80156112d15750600b54600a546112ce9190611d28565b43105b600754909150600160a01b900460ff168061130457506001600160a01b03881660009081526012602052604090205460ff165b8061132757506001600160a01b03871660009081526012602052604090205460ff165b1561133557600092506113d1565b6007546001600160a01b038881169116148015611350575080155b15611389576010546011546113659190611d28565b604080518082019091526010548152601154602082015290955085945091506113d1565b806113c257600e54600f5461139e9190611d28565b60408051808201909152600e548152600f54602082015290955085945091506113d1565b80156113d157600c5494508493505b60646113dd8588611e2e565b6113e79190611e62565b600754909350600160a81b900460ff16801561141157506007546001600160a01b03898116911614155b156114205761142085836114c3565b611434888861142f868a611d15565b611600565b8215611467578415611467576000606461144e8789611e2e565b6114589190611e62565b9050611465893083611600565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610baa576007805460ff60a01b1916600160a01b17905581156115ef573060009081526020819052604090205460085481106115ed576001600854111561151657506008545b6000611523846002611e2e565b90506000818460200151846115389190611e2e565b6115429190611e62565b905060006115508285611d15565b90504761155c826117d8565b60006115688247611d15565b9050600087602001518661157c9190611d15565b6115869083611e62565b9050600088602001518261159a9190611e2e565b905080156115ac576115ac8682611932565b88516000906115bc846002611e2e565b6115c69190611e2e565b905080156115e457600d546115e4906001600160a01b0316826119e4565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166116645760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161076d565b6001600160a01b0382166116c65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161076d565b6001600160a01b0383166000908152602081905260409020548181101561173e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161076d565b6117488282611d15565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061177e908490611d28565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117ca91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061180d5761180d611e84565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a9190611e9a565b8160018151811061189d5761189d611e84565b6001600160a01b0392831660209182029290920101526006546118c39130911684610e64565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118fc908590600090869030904290600401611eb7565b600060405180830381600087803b15801561191657600080fd5b505af115801561192a573d6000803e3d6000fd5b505050505050565b60065461194a9030906001600160a01b031684610e64565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156119b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119dd9190611f28565b5050505050565b80471015611a345760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161076d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a81576040519150601f19603f3d011682016040523d82523d6000602084013e611a86565b606091505b5050905080610b325760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161076d565b600060208083528351808285015260005b81811015611b2a57858101830151858201604001528201611b0e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e1957600080fd5b60008060408385031215611b7357600080fd5b8235611b7e81611b4b565b946020939093013593505050565b8015158114610e1957600080fd5b600060208284031215611bac57600080fd5b8135611bb781611b8c565b9392505050565b600080600060608486031215611bd357600080fd5b8335611bde81611b4b565b92506020840135611bee81611b4b565b929592945050506040919091013590565b600060208284031215611c1157600080fd5b5035919050565b600060208284031215611c2a57600080fd5b8135611bb781611b4b565b60008060408385031215611c4857600080fd5b50508035926020909101359150565b60008060408385031215611c6a57600080fd5b8235611c7581611b4b565b91506020830135611c8581611b4b565b809150509250929050565b600181811c90821680611ca457607f821691505b602082108103611cc457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073d5761073d611cff565b8082018082111561073d5761073d611cff565b600181815b80851115611d76578160001904821115611d5c57611d5c611cff565b80851615611d6957918102915b93841c9390800290611d40565b509250929050565b600082611d8d5750600161073d565b81611d9a5750600061073d565b8160018114611db05760028114611dba57611dd6565b600191505061073d565b60ff841115611dcb57611dcb611cff565b50506001821b61073d565b5060208310610133831016604e8410600b8410161715611df9575081810a61073d565b611e038383611d3b565b8060001904821115611e1757611e17611cff565b029392505050565b6000611bb760ff841683611d7e565b808202811582820484141761073d5761073d611cff565b600060208284031215611e5757600080fd5b8151611bb781611b8c565b600082611e7f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611eac57600080fd5b8151611bb781611b4b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f075784516001600160a01b031683529383019391830191600101611ee2565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611f3d57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208c6dd3d41075f28f9b90ce8fc244dc053842fa8bf62eec48d6596cf9bcfaf77b64736f6c63430008130033

Deployed Bytecode Sourcemap

8215:9984:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2146:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9861:161;;;;;;;;;;-1:-1:-1;9861:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9861:161:0;1023:187:1;16287:152:0;;;;;;;;;;-1:-1:-1;16287:152:0;;;;;:::i;:::-;;:::i;:::-;;2485:108;;;;;;;;;;-1:-1:-1;2573:12:0;;2485:108;;;1730:25:1;;;1718:2;1703:18;2485:108:0;1584:177:1;10030:448:0;;;;;;;;;;-1:-1:-1;10030:448:0;;;;;:::i;:::-;;:::i;2378:93::-;;;;;;;;;;-1:-1:-1;2378:93:0;;2461:2;2369:36:1;;2357:2;2342:18;2378:93:0;2227:184:1;10486:248:0;;;;;;;;;;-1:-1:-1;10486:248:0;;;;;:::i;:::-;;:::i;16447:177::-;;;;;;;;;;-1:-1:-1;16447:177:0;;;;;:::i;:::-;;:::i;17747:131::-;;;;;;;;;;-1:-1:-1;17747:131:0;;;;;:::i;:::-;;:::i;8445:34::-;;;;;;;;;;-1:-1:-1;8445:34:0;;;;-1:-1:-1;;;8445:34:0;;;;;;17517:104;;;;;;;;;;-1:-1:-1;17517:104:0;;;;;:::i;:::-;;:::i;8553:46::-;;;;;;;;;;;;;;;;2607:127;;;;;;;;;;-1:-1:-1;2607:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2708:18:0;2681:7;2708:18;;;;;;;;;;;;2607:127;6878:94;;;;;;;;;;;;;:::i;8973:33::-;;;;;;;;;;-1:-1:-1;8973:33:0;;;;;;;;;;;;;3027:25:1;;;3083:2;3068:18;;3061:34;;;;3000:18;8973:33:0;2853:248:1;17629:108:0;;;;;;;;;;-1:-1:-1;17629:108:0;;;;;:::i;:::-;;:::i;8800:79::-;;;;;;;;;;;;8837:42;8800:79;;;;;-1:-1:-1;;;;;3270:32:1;;;3252:51;;3240:2;3225:18;8800:79:0;3106:203:1;16977:224:0;;;;;;;;;;;;;:::i;18006:135::-;;;;;;;;;;-1:-1:-1;18006:135:0;;;;;:::i;:::-;;:::i;6655:87::-;;;;;;;;;;-1:-1:-1;6728:6:0;;-1:-1:-1;;;;;6728:6:0;6655:87;;2260:104;;;;;;;;;;;;;:::i;17886:112::-;;;;;;;;;;-1:-1:-1;17886:112:0;;;;;:::i;:::-;;:::i;10742:410::-;;;;;;;;;;-1:-1:-1;10742:410:0;;;;;:::i;:::-;;:::i;8327:19::-;;;;;;;;;;-1:-1:-1;8327:19:0;;;;-1:-1:-1;;;;;8327:19:0;;;11160:165;;;;;;;;;;-1:-1:-1;11160:165:0;;;;;:::i;:::-;;:::i;17394:115::-;;;;;;;;;;-1:-1:-1;17394:115:0;;;;;:::i;:::-;;:::i;9059:41::-;;;;;;;;;;-1:-1:-1;9059:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16632:164;;;;;;;;;;-1:-1:-1;16632:164:0;;;;;:::i;:::-;;:::i;2978:201::-;;;;;;;;;;-1:-1:-1;2978:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3144:18:0;;;3112:7;3144:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2978:201;17209:177;;;;;;;;;;-1:-1:-1;17209:177:0;;;;;:::i;:::-;;:::i;6980:192::-;;;;;;;;;;-1:-1:-1;6980:192:0;;;;;:::i;:::-;;:::i;16804:166::-;;;;;;;;;;-1:-1:-1;16804:166:0;;;;;:::i;:::-;;:::i;9013:37::-;;;;;;;;;;-1:-1:-1;9013:37:0;;;;;;;;;8299:21;;;;;;;;;;-1:-1:-1;8299:21:0;;;;-1:-1:-1;;;;;8299:21:0;;;2146:100;2200:13;2233:5;2226:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2146:100;:::o;9861:161::-;9936:4;9953:39;309:10;9976:7;9985:6;9953:8;:39::i;:::-;-1:-1:-1;10010:4:0;9861:161;;;;;:::o;16287:152::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;;;;;;;;;16405:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16405:26:0::1;-1:-1:-1::0;;;;16405:26:0;;::::1;::::0;;;::::1;::::0;;16287:152::o;10030:448::-;10162:4;10179:36;10189:6;10197:9;10208:6;10179:9;:36::i;:::-;-1:-1:-1;;;;;10255:19:0;;10228:24;10255:19;;;:11;:19;;;;;;;;309:10;10255:33;;;;;;;;10307:26;;;;10299:79;;;;-1:-1:-1;;;10299:79:0;;5131:2:1;10299:79:0;;;5113:21:1;5170:2;5150:18;;;5143:30;5209:34;5189:18;;;5182:62;-1:-1:-1;;;5260:18:1;;;5253:38;5308:19;;10299:79:0;4929:404:1;10299:79:0;10389:57;10398:6;309:10;10420:25;10439:6;10420:16;:25;:::i;:::-;10389:8;:57::i;:::-;-1:-1:-1;10466:4:0;;10030:448;-1:-1:-1;;;;10030:448:0:o;10486:248::-;309:10;10602:4;10656:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10656:34:0;;;;;;;;;;10602:4;;10624:80;;10647:7;;10656:47;;10693:10;;10656:47;:::i;16447:177::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;16602:14:::1;2461:2:::0;16602::::1;:14;:::i;:::-;16589:27;::::0;:10;:27:::1;:::i;:::-;16563:23;:53:::0;-1:-1:-1;16447:177:0:o;17747:131::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;17855:14:::1;2461:2:::0;17855::::1;:14;:::i;:::-;17843:26;::::0;:9;:26:::1;:::i;:::-;17826:14;:43:::0;-1:-1:-1;17747:131:0:o;17517:104::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17587:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;17587:26:0::1;17609:4;17587:26;::::0;;17517:104::o;6878:94::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;6943:21:::1;6961:1;6943:9;:21::i;:::-;6878:94::o:0;17629:108::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17702:19:0::1;17724:5;17702:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;17702:27:0::1;::::0;;17629:108::o;16977:224::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;17041:14:::1;::::0;-1:-1:-1;;;17041:14:0;::::1;;;17040:15;17032:54;;;::::0;-1:-1:-1;;;17032:54:0;;7491:2:1;17032:54:0::1;::::0;::::1;7473:21:1::0;7530:2;7510:18;;;7503:30;7569:28;7549:18;;;7542:56;7615:18;;17032:54:0::1;7289:350:1::0;17032:54:0::1;17097:14;:21:::0;;-1:-1:-1;;;;17129:25:0;-1:-1:-1;;;17129:25:0;;;17181:12:::1;17165:13;:28:::0;16977:224::o;18006:135::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;18098:8:::1;-1:-1:-1::0;;;;;18091:25:0::1;;18117:7;6728:6:::0;;-1:-1:-1;;;;;6728:6:0;;6655:87;18117:7:::1;18091:42;::::0;-1:-1:-1;;;;;;18091:42:0::1;::::0;;;;;;-1:-1:-1;;;;;7836:32:1;;;18091:42:0::1;::::0;::::1;7818:51:1::0;7885:18;;;7878:34;;;7791:18;;18091:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18006:135:::0;;:::o;2260:104::-;2316:13;2349:7;2342:14;;;;;:::i;17886:112::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;6728:6;;17954:36:::1;::::0;-1:-1:-1;;;;;6728:6:0;;;;17954:36;::::1;;;::::0;17980:9;;17954:36:::1;::::0;;;17980:9;6728:6;17954:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17886:112:::0;:::o;10742:410::-;309:10;10863:4;10912:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10912:34:0;;;;;;;;;;10965:35;;;;10957:85;;;;-1:-1:-1;;;10957:85:0;;8375:2:1;10957:85:0;;;8357:21:1;8414:2;8394:18;;;8387:30;8453:34;8433:18;;;8426:62;-1:-1:-1;;;8504:18:1;;;8497:35;8549:19;;10957:85:0;8173:401:1;10957:85:0;11053:67;309:10;11076:7;11085:34;11104:15;11085:16;:34;:::i;11053:67::-;-1:-1:-1;11140:4:0;;10742:410;-1:-1:-1;;;10742:410:0:o;11160:165::-;11238:4;11255:40;11265:10;11277:9;11288:6;11255:9;:40::i;17394:115::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;17474:15:::1;:27:::0;;-1:-1:-1;;;;;;17474:27:0::1;-1:-1:-1::0;;;;;17474:27:0;;;::::1;::::0;;;::::1;::::0;;17394:115::o;16632:164::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;16759:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;16751:5:::1;:37:::0;;;;;;16632:164::o;17209:177::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;17291:14:::1;::::0;-1:-1:-1;;;17291:14:0;::::1;;;17290:15;17282:65;;;::::0;-1:-1:-1;;;17282:65:0;;8781:2:1;17282:65:0::1;::::0;::::1;8763:21:1::0;8820:2;8800:18;;;8793:30;8859:34;8839:18;;;8832:62;-1:-1:-1;;;8910:18:1;;;8903:35;8955:19;;17282:65:0::1;8579:401:1::0;17282:65:0::1;17358:8;:20:::0;17209:177::o;6980:192::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7069:22:0;::::1;7061:73;;;::::0;-1:-1:-1;;;7061:73:0;;9187:2:1;7061:73:0::1;::::0;::::1;9169:21:1::0;9226:2;9206:18;;;9199:30;9265:34;9245:18;;;9238:62;-1:-1:-1;;;9316:18:1;;;9309:36;9362:19;;7061:73:0::1;8985:402:1::0;7061:73:0::1;7145:19;7155:8;7145:9;:19::i;:::-;6980:192:::0;:::o;16804:166::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;16933:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;16921:9:::1;:41:::0;;;;;;16804:166::o;5549:380::-;-1:-1:-1;;;;;5685:19:0;;5677:68;;;;-1:-1:-1;;;5677:68:0;;9594:2:1;5677:68:0;;;9576:21:1;9633:2;9613:18;;;9606:30;9672:34;9652:18;;;9645:62;-1:-1:-1;;;9723:18:1;;;9716:34;9767:19;;5677:68:0;9392:400:1;5677:68:0;-1:-1:-1;;;;;5764:21:0;;5756:68;;;;-1:-1:-1;;;5756:68:0;;9999:2:1;5756:68:0;;;9981:21:1;10038:2;10018:18;;;10011:30;10077:34;10057:18;;;10050:62;-1:-1:-1;;;10128:18:1;;;10121:32;10170:19;;5756:68:0;9797:398:1;5756:68:0;-1:-1:-1;;;;;5837:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5889:32;;1730:25:1;;;5889:32:0;;1703:18:1;5889:32:0;;;;;;;5549:380;;;:::o;11333:2474::-;11483:1;11474:6;:10;11466:64;;;;-1:-1:-1;;;11466:64:0;;10402:2:1;11466:64:0;;;10384:21:1;10441:2;10421:18;;;10414:30;10480:34;10460:18;;;10453:62;-1:-1:-1;;;10531:18:1;;;10524:39;10580:19;;11466:64:0;10200:405:1;11466:64:0;-1:-1:-1;;;;;11558:17:0;;;;;;:9;:17;;;;;;;;11557:18;:43;;;;-1:-1:-1;;;;;;11580:20:0;;;;;;:9;:20;;;;;;;;11579:21;11557:43;11553:122;;;11625:14;;-1:-1:-1;;;11625:14:0;;;;11617:46;;;;-1:-1:-1;;;11617:46:0;;10812:2:1;11617:46:0;;;10794:21:1;10851:2;10831:18;;;10824:30;-1:-1:-1;;;10870:18:1;;;10863:49;10929:18;;11617:46:0;10610:343:1;11617:46:0;11701:4;;-1:-1:-1;;;;;11691:14:0;;;11701:4;;11691:14;:39;;;;-1:-1:-1;;;;;;11710:20:0;;;;;;:9;:20;;;;;;;;11709:21;11691:39;:59;;;;-1:-1:-1;11735:15:0;;-1:-1:-1;;;11735:15:0;;;;11734:16;11691:59;11687:215;;;11808:14;;11798:6;11775:20;11785:9;-1:-1:-1;;;;;2708:18:0;2681:7;2708:18;;;;;;;;;;;;2607:127;11775:20;:29;;;;:::i;:::-;:47;;11767:123;;;;-1:-1:-1;;;11767:123:0;;11160:2:1;11767:123:0;;;11142:21:1;;;11179:18;;;11172:30;11238:34;11218:18;;;11211:62;11290:18;;11767:123:0;10958:356:1;11767:123:0;11928:4;;-1:-1:-1;;;;;11918:14:0;;;11928:4;;11918:14;;;;:39;;-1:-1:-1;;;;;;11937:20:0;;;;;;:9;:20;;;;;;;;11936:21;11918:39;:61;;;;-1:-1:-1;;;;;;11962:17:0;;;;;;:9;:17;;;;;;;;11961:18;11918:61;:81;;;;-1:-1:-1;11984:15:0;;-1:-1:-1;;;11984:15:0;;;;11983:16;11918:81;11914:315;;;12046:4;;-1:-1:-1;;;;;12033:17:0;;;12046:4;;12033:17;12029:189;;12112:14;;12102:6;12079:20;12089:9;-1:-1:-1;;;;;2708:18:0;2681:7;2708:18;;;;;;;;;;;;2607:127;12079:20;:29;;;;:::i;:::-;:47;;12071:131;;;;-1:-1:-1;;;12071:131:0;;11160:2:1;12071:131:0;;;11142:21:1;;;11179:18;;;11172:30;11238:34;11218:18;;;11211:62;11290:18;;12071:131:0;10958:356:1;12071:131:0;12241:15;12267:14;12292:11;12314:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;12314:25:0;-1:-1:-1;;;;;12373:17:0;;12352;12373;;;:9;:17;;;;;;;;12372:18;:56;;;;-1:-1:-1;;;;;;12408:20:0;;;;;;:9;:20;;;;;;;;12407:21;12372:56;:112;;;;;12476:8;;12460:13;;:24;;;;:::i;:::-;12445:12;:39;12372:112;12572:15;;12352:132;;-1:-1:-1;;;;12572:15:0;;;;;:36;;-1:-1:-1;;;;;;12591:17:0;;;;;;:9;:17;;;;;;;;12572:36;:60;;;-1:-1:-1;;;;;;12612:20:0;;;;;;:9;:20;;;;;;;;12572:60;12568:655;;;12653:1;12647:7;;12568:655;;;12718:4;;-1:-1:-1;;;;;12705:17:0;;;12718:4;;12705:17;:34;;;;;12727:12;12726:13;12705:34;12701:522;;;12822:9;:19;12783;;:58;;12822:19;12783:58;:::i;:::-;12888:24;;;;;;;;;12903:9;12888:24;;;;;;;;;12756:85;;-1:-1:-1;12756:85:0;;-1:-1:-1;12888:24:0;-1:-1:-1;12701:522:0;;;12935:12;12930:293;;13026:5;:15;12991;;:50;;13026:15;12991:50;:::i;:::-;13088:20;;;;;;;;;13103:5;13088:20;;;;;;;;;12964:77;;-1:-1:-1;12964:77:0;;-1:-1:-1;13088:20:0;-1:-1:-1;12930:293:0;;;13130:12;13126:97;;;13169:9;;;-1:-1:-1;13169:9:0;;-1:-1:-1;13126:97:0;13261:3;13242:15;13251:6;13242;:15;:::i;:::-;13241:23;;;;:::i;:::-;13378:18;;13235:29;;-1:-1:-1;;;;13378:18:0;;;;:36;;;;-1:-1:-1;13410:4:0;;-1:-1:-1;;;;;13400:14:0;;;13410:4;;13400:14;;13378:36;13374:76;;;13416:34;13428:7;13437:12;13416:11;:34::i;:::-;13492:48;13508:6;13516:9;13527:12;13536:3;13527:6;:12;:::i;:::-;13492:15;:48::i;:::-;13555:7;;13551:249;;13627:11;;13623:164;;13659:17;13700:3;13680:16;13689:7;13680:6;:16;:::i;:::-;13679:24;;;;:::i;:::-;13659:44;;13722:49;13738:6;13754:4;13761:9;13722:15;:49::i;:::-;13640:147;13623:164;11455:2352;;;;;11333:2474;;;:::o;7180:173::-;7255:6;;;-1:-1:-1;;;;;7272:17:0;;;-1:-1:-1;;;;;;7272:17:0;;;;;;;7305:40;;7255:6;;;7272:17;7255:6;;7305:40;;7236:16;;7305:40;7225:128;7180:173;:::o;13815:1422::-;9154:15;;-1:-1:-1;;;9154:15:0;;;;9149:125;;9186:15;:22;;-1:-1:-1;;;;9186:22:0;-1:-1:-1;;;9186:22:0;;;13901:49;;13932:7:::1;13901:49;14007:4;13963:23;2708:18:::0;;;;;;;;;;;14047:23:::1;::::0;14028:42;::::1;14024:1206;;14117:1;14091:23;;:27;14087:109;;;-1:-1:-1::0;14157:23:0::1;::::0;14087:109:::1;14267:19;14289:11;:7:::0;14299:1:::1;14289:11;:::i;:::-;14267:33;;14315:32;14409:11;14369:9;:19;;;14351:15;:37;;;;:::i;:::-;14350:70;;;;:::i;:::-;14315:105:::0;-1:-1:-1;14435:14:0::1;14452:42;14315:105:::0;14452:15;:42:::1;:::i;:::-;14435:59:::0;-1:-1:-1;14536:21:0::1;14574:24;14435:59:::0;14574:16:::1;:24::i;:::-;14615:20;14638:38;14662:14:::0;14638:21:::1;:38;:::i;:::-;14615:61;;14691:19;14743:9;:19;;;14729:11;:33;;;;:::i;:::-;14713:50;::::0;:12;:50:::1;:::i;:::-;14691:72;;14778:29;14824:9;:19;;;14810:11;:33;;;;:::i;:::-;14778:65:::0;-1:-1:-1;14864:25:0;;14860:161:::1;;14944:61;14957:24;14983:21;14944:12;:61::i;:::-;15078:19:::0;;15037:20:::1;::::0;15060:15:::1;:11:::0;15074:1:::1;15060:15;:::i;:::-;:37;;;;:::i;:::-;15037:60:::0;-1:-1:-1;15116:16:0;;15112:105:::1;;15161:15;::::0;15153:48:::1;::::0;-1:-1:-1;;;;;15161:15:0::1;15188:12:::0;15153:34:::1;:48::i;:::-;14072:1158;;;;;;;;14024:1206;13895:1342;9223:1;9239:15:::0;:23;;-1:-1:-1;;;;9239:23:0;;;13815:1422;;:::o;4530:638::-;-1:-1:-1;;;;;4670:20:0;;4662:70;;;;-1:-1:-1;;;4662:70:0;;11743:2:1;4662:70:0;;;11725:21:1;11782:2;11762:18;;;11755:30;11821:34;11801:18;;;11794:62;-1:-1:-1;;;11872:18:1;;;11865:35;11917:19;;4662:70:0;11541:401:1;4662:70:0;-1:-1:-1;;;;;4751:23:0;;4743:71;;;;-1:-1:-1;;;4743:71:0;;12149:2:1;4743:71:0;;;12131:21:1;12188:2;12168:18;;;12161:30;12227:34;12207:18;;;12200:62;-1:-1:-1;;;12278:18:1;;;12271:33;12321:19;;4743:71:0;11947:399:1;4743:71:0;-1:-1:-1;;;;;4911:17:0;;4887:21;4911:17;;;;;;;;;;;4947:23;;;;4939:74;;;;-1:-1:-1;;;4939:74:0;;12553:2:1;4939:74:0;;;12535:21:1;12592:2;12572:18;;;12565:30;12631:34;12611:18;;;12604:62;-1:-1:-1;;;12682:18:1;;;12675:36;12728:19;;4939:74:0;12351:402:1;4939:74:0;5044:22;5060:6;5044:13;:22;:::i;:::-;-1:-1:-1;;;;;5024:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5077:20;;;;;;;;:30;;5101:6;;5024:9;5077:30;;5101:6;;5077:30;:::i;:::-;;;;;;;;5142:9;-1:-1:-1;;;;;5125:35:0;5134:6;-1:-1:-1;;;;;5125:35:0;;5153:6;5125:35;;;;1730:25:1;;1718:2;1703:18;;1584:177;5125:35:0;;;;;;;;4651:517;4530:638;;;:::o;15245:526::-;15387:16;;;15401:1;15387:16;;;;;;;;15363:21;;15387:16;;;;;;;;;;-1:-1:-1;15387:16:0;15363:40;;15432:4;15414;15419:1;15414:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15414:23:0;;;:7;;;;;;;;;;:23;;;;15458:6;;:13;;;-1:-1:-1;;;15458:13:0;;;;:6;;;;;:11;;:13;;;;;15414:7;;15458:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15448:4;15453:1;15448:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15448:23:0;;;:7;;;;;;;;;:23;15516:6;;15484:53;;15501:4;;15516:6;15525:11;15484:8;:53::i;:::-;15576:6;;:187;;-1:-1:-1;;;15576:187:0;;-1:-1:-1;;;;;15576:6:0;;;;:57;;:187;;15648:11;;15576:6;;15690:4;;15717;;15737:15;;15576:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15300:471;15245:526;:::o;15779:500::-;15959:6;;15927:53;;15944:4;;-1:-1:-1;;;;;15959:6:0;15968:11;15927:8;:53::i;:::-;16023:6;;:248;;-1:-1:-1;;;16023:248:0;;16088:4;16023:248;;;14604:34:1;14654:18;;;14647:34;;;16023:6:0;14697:18:1;;;14690:34;;;14740:18;;;14733:34;8837:42:0;14783:19:1;;;14776:44;16245:15:0;14836:19:1;;;14829:35;-1:-1:-1;;;;;16023:6:0;;;;:22;;16054:9;;14538:19:1;;16023:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15779:500;;:::o;6098:319::-;6213:6;6188:21;:31;;6180:73;;;;-1:-1:-1;;;6180:73:0;;15388:2:1;6180:73:0;;;15370:21:1;15427:2;15407:18;;;15400:30;15466:31;15446:18;;;15439:59;15515:18;;6180:73:0;15186:353:1;6180:73:0;6267:12;6285:9;-1:-1:-1;;;;;6285:14:0;6308:6;6285:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6266:54;;;6339:7;6331:78;;;;-1:-1:-1;;;6331:78:0;;15956:2:1;6331:78:0;;;15938:21:1;15995:2;15975:18;;;15968:30;16034:34;16014:18;;;16007:62;16105:28;16085:18;;;16078:56;16151:19;;6331:78:0;15754:422:1;14:548;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;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:241;1394:6;1447:2;1435:9;1426:7;1422:23;1418:32;1415:52;;;1463:1;1460;1453:12;1415:52;1502:9;1489:23;1521:28;1543:5;1521:28;:::i;:::-;1568:5;1338:241;-1:-1:-1;;;1338:241:1:o;1766:456::-;1843:6;1851;1859;1912:2;1900:9;1891:7;1887:23;1883:32;1880:52;;;1928:1;1925;1918:12;1880:52;1967:9;1954:23;1986:31;2011:5;1986:31;:::i;:::-;2036:5;-1:-1:-1;2093:2:1;2078:18;;2065:32;2106:33;2065:32;2106:33;:::i;:::-;1766:456;;2158:7;;-1:-1:-1;;;2212:2:1;2197:18;;;;2184:32;;1766:456::o;2416:180::-;2475:6;2528:2;2516:9;2507:7;2503:23;2499:32;2496:52;;;2544:1;2541;2534:12;2496:52;-1:-1:-1;2567:23:1;;2416:180;-1:-1:-1;2416:180:1:o;2601:247::-;2660:6;2713:2;2701:9;2692:7;2688:23;2684:32;2681:52;;;2729:1;2726;2719:12;2681:52;2768:9;2755:23;2787:31;2812:5;2787:31;:::i;3314:248::-;3382:6;3390;3443:2;3431:9;3422:7;3418:23;3414:32;3411:52;;;3459:1;3456;3449:12;3411:52;-1:-1:-1;;3482:23:1;;;3552:2;3537:18;;;3524:32;;-1:-1:-1;3314:248:1:o;3567:388::-;3635:6;3643;3696:2;3684:9;3675:7;3671:23;3667:32;3664:52;;;3712:1;3709;3702:12;3664:52;3751:9;3738:23;3770:31;3795:5;3770:31;:::i;:::-;3820:5;-1:-1:-1;3877:2:1;3862:18;;3849:32;3890:33;3849:32;3890:33;:::i;:::-;3942:7;3932:17;;;3567:388;;;;;:::o;4183:380::-;4262:1;4258:12;;;;4305;;;4326:61;;4380:4;4372:6;4368:17;4358:27;;4326:61;4433:2;4425:6;4422:14;4402:18;4399:38;4396:161;;4479:10;4474:3;4470:20;4467:1;4460:31;4514:4;4511:1;4504:15;4542:4;4539:1;4532:15;4396:161;;4183:380;;;:::o;4568:356::-;4770:2;4752:21;;;4789:18;;;4782:30;4848:34;4843:2;4828:18;;4821:62;4915:2;4900:18;;4568:356::o;5338:127::-;5399:10;5394:3;5390:20;5387:1;5380:31;5430:4;5427:1;5420:15;5454:4;5451:1;5444:15;5470:128;5537:9;;;5558:11;;;5555:37;;;5572:18;;:::i;5603:125::-;5668:9;;;5689:10;;;5686:36;;;5702:18;;:::i;5733:422::-;5822:1;5865:5;5822:1;5879:270;5900:7;5890:8;5887:21;5879:270;;;5959:4;5955:1;5951:6;5947:17;5941:4;5938:27;5935:53;;;5968:18;;:::i;:::-;6018:7;6008:8;6004:22;6001:55;;;6038:16;;;;6001:55;6117:22;;;;6077:15;;;;5879:270;;;5883:3;5733:422;;;;;:::o;6160:806::-;6209:5;6239:8;6229:80;;-1:-1:-1;6280:1:1;6294:5;;6229:80;6328:4;6318:76;;-1:-1:-1;6365:1:1;6379:5;;6318:76;6410:4;6428:1;6423:59;;;;6496:1;6491:130;;;;6403:218;;6423:59;6453:1;6444:10;;6467:5;;;6491:130;6528:3;6518:8;6515:17;6512:43;;;6535:18;;:::i;:::-;-1:-1:-1;;6591:1:1;6577:16;;6606:5;;6403:218;;6705:2;6695:8;6692:16;6686:3;6680:4;6677:13;6673:36;6667:2;6657:8;6654:16;6649:2;6643:4;6640:12;6636:35;6633:77;6630:159;;;-1:-1:-1;6742:19:1;;;6774:5;;6630:159;6821:34;6846:8;6840:4;6821:34;:::i;:::-;6891:6;6887:1;6883:6;6879:19;6870:7;6867:32;6864:58;;;6902:18;;:::i;:::-;6940:20;;6160:806;-1:-1:-1;;;6160:806:1:o;6971:140::-;7029:5;7058:47;7099:4;7089:8;7085:19;7079:4;7058:47;:::i;7116:168::-;7189:9;;;7220;;7237:15;;;7231:22;;7217:37;7207:71;;7258:18;;:::i;7923:245::-;7990:6;8043:2;8031:9;8022:7;8018:23;8014:32;8011:52;;;8059:1;8056;8049:12;8011:52;8091:9;8085:16;8110:28;8132:5;8110:28;:::i;11319:217::-;11359:1;11385;11375:132;;11429:10;11424:3;11420:20;11417:1;11410:31;11464:4;11461:1;11454:15;11492:4;11489:1;11482:15;11375:132;-1:-1:-1;11521:9:1;;11319:217::o;12890:127::-;12951:10;12946:3;12942:20;12939:1;12932:31;12982:4;12979:1;12972:15;13006:4;13003:1;12996:15;13022:251;13092:6;13145:2;13133:9;13124:7;13120:23;13116:32;13113:52;;;13161:1;13158;13151:12;13113:52;13193:9;13187:16;13212:31;13237:5;13212:31;:::i;13278:980::-;13540:4;13588:3;13577:9;13573:19;13619:6;13608:9;13601:25;13645:2;13683:6;13678:2;13667:9;13663:18;13656:34;13726:3;13721:2;13710:9;13706:18;13699:31;13750:6;13785;13779:13;13816:6;13808;13801:22;13854:3;13843:9;13839:19;13832:26;;13893:2;13885:6;13881:15;13867:29;;13914:1;13924:195;13938:6;13935:1;13932:13;13924:195;;;14003:13;;-1:-1:-1;;;;;13999:39:1;13987:52;;14094:15;;;;14059:12;;;;14035:1;13953:9;13924:195;;;-1:-1:-1;;;;;;;14175:32:1;;;;14170:2;14155:18;;14148:60;-1:-1:-1;;;14239:3:1;14224:19;14217:35;14136:3;13278:980;-1:-1:-1;;;13278:980:1:o;14875:306::-;14963:6;14971;14979;15032:2;15020:9;15011:7;15007:23;15003:32;15000:52;;;15048:1;15045;15038:12;15000:52;15077:9;15071:16;15061:26;;15127:2;15116:9;15112:18;15106:25;15096:35;;15171:2;15160:9;15156:18;15150:25;15140:35;;14875:306;;;;;:::o

Swarm Source

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