ETH Price: $3,127.57 (-0.10%)

Token

OneMesh (OMH)
 

Overview

Max Total Supply

1,000,000,000 OMH

Holders

62

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
94,465.94678085 OMH

Value
$0.00
0x8a3304a4052360a4f9d56cf55d4daaaf0b7084d6
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:
OneMesh

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**
 * @title OneMeshToken
 * @dev ERC-20 Token Contract for OneMesh Platform ($OMH)
 *
 * @notice Visit the official OneMesh website at https://www.onemeshcore.com.
 *         Explore the documentation at https://www.doc.onemeshcore.com for detailed contract information.
 *
 *     ............................................................................................                                                                                                                                             
 *     .                                                                                          .                         
 *     .      .oooooo.                         ooo        ooooo                    oooo           .
 *     .     d8P'  `Y8b                        `88.       .888'                    `888           .
 *     .    888      888 ooo. .oo.    .ooooo.   888b     d'888   .ooooo.   .ooooRo  888 .oo.      . 
 *     .    888      888 `888YOU88b  d88' `88b  8 Y88. .P  888  d88' `88b d88(  "8  888Ly"88b     . 
 *     .    888      888  888   888  888are888  8  `888'   888  888ooo888 `"Y88b.   888   888     . 
 *     .    `88b    d88'  888   888  888    .o  8    E     888  888    .o o.  )88b  888   888     .
 *     .     `Y8bood8P'  o888o o888o `Y8bod8P' o8o        o888o `Y8bAd8P' 8""888P' o888o o888o    .
 *     .                           - Next Generation of CEXs Ai-Driven -                          .
 *     ............................................................................................ 
 *
 * @dev This smart contract is authored by OneMesh team.
 * For any inquiries, please contact [email protected]
 */
pragma solidity ^0.8.23;

// Interface for ERC-20 token standard
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);
}

// Ownable contract for ownership management
contract Ownable {
    error NotOwner();

    address private _owner;

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

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        if (_owner != msg.sender) revert NotOwner();
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}


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


interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    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);
}

// Main OneMesh token contract
contract OneMesh is IERC20, Ownable {
    // Error declarations for verbosing purpose
    error TradingAlreadyOpen();
    error ZeroAddress();
    error ZeroAmount();
    error ZeroValue();
    error ZeroToken();
    error TaxTooHigh();
    error NotSelf();
    error Unauthorized();


    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    

    mapping(address => bool) private _isExcludedFromLimits;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    

    address payable private _taxWallet;
    uint256 private _firstBlock;

    // Tax rates and thresholds
    uint256 private _initialBuyTax = 35;
    uint256 private _initialSellTax = 45;

    uint256 private _finalBuyTax = 5;
    uint256 private _finalSellTax = 5;

    uint256 private _reduceBuyTaxAt = 24;
    uint256 private _reduceSellTaxAt = 30;

    uint256 private _preventSwapBefore = 20;
    uint256 private _buyCount = 0;

    // Token details
    uint8 private constant _DECIMALS = 9;
    uint256 private constant _TOTAL = 1000000000 * 10 ** _DECIMALS;
    string private constant _NAME = unicode"OneMesh";
    string private constant _SYMBOL = unicode"OMH";
    uint256 public maxTx = 50000000 * 10 ** _DECIMALS;
    uint256 public maxWallet = 50000000 * 10 ** _DECIMALS;
    uint256 public swapThreshold = 10000000 * 10 ** _DECIMALS;
    uint256 public maxTaxSwap = 10000000 * 10 ** _DECIMALS;

    // Uniswap V2 Router contract
    IUniswapV2Router02 private constant _UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private _uniswapV2Pair;
    bool public lpAdded;
    bool private _inSwap = false;
    bool private _swapEnabled = false;

    // Event for MaxTxAmountUpdated
    event MaxTxAmountUpdated(uint256 maxTx);

    // Constructor
    constructor() {
        _taxWallet = payable(msg.sender);
        _balances[msg.sender] = _TOTAL;


        _isExcludedFromLimits[tx.origin] = true;
        _isExcludedFromLimits[address(0)] = true;
        _isExcludedFromLimits[address(0xdead)] = true;
        _isExcludedFromLimits[address(this)] = true;
        _isExcludedFromLimits[address(_UNISWAP_V2_ROUTER)] = true;

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[tx.origin] = true;

        emit Transfer(address(0), msg.sender, _TOTAL);
    }

    receive() external payable {}

    function name() public pure returns (string memory) {
        return _NAME;
    }

    function symbol() public pure returns (string memory) {
        return _SYMBOL;
    }

    function decimals() public pure returns (uint8) {
        return _DECIMALS;
    }

    function totalSupply() public pure override returns (uint256) {
        return _TOTAL;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) revert ZeroAddress();
        if (spender == address(0)) revert ZeroAddress();
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        if (from == address(0)) revert ZeroAddress();
        if (to == address(0)) revert ZeroAddress();
        if (amount == 0) revert ZeroAmount();

        require(!bots[from] && !bots[to], "shoo");

        // Check for maximum wallet size
        if (maxWallet != _TOTAL && !_isExcludedFromLimits[to]) {
            require(balanceOf(to) + amount <= maxWallet, "Exceeds maxWalletSize");
        }

        // Check for maximum transaction size
        if (maxTx != _TOTAL && !_isExcludedFromLimits[from]) {
            require(amount <= maxTx, "Exceeds maxTx");
        }

        // Check for swapping conditions
        uint256 contractTokenBalance = balanceOf(address(this));
        if (
            !_inSwap && contractTokenBalance >= swapThreshold && _swapEnabled && _buyCount > _preventSwapBefore
                && to == _uniswapV2Pair && !_isExcludedFromFee[from]
        ) {
            _swapTokensForEth(_min(amount, _min(contractTokenBalance, maxTaxSwap)));
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                _sendETHToFee(contractETHBalance);
            }
        }

        // Calculate and apply tax
        uint256 taxAmount = 0;
        if (!_inSwap && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            if (to == _uniswapV2Pair) {
                taxAmount = (amount * ((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax)) / 100;
            }
            else if (from == _uniswapV2Pair) {
                if (_firstBlock + 25 > block.number) {
                    require(!_isContract(to), "contract");
                }
                taxAmount = (amount * ((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax)) / 100;
                ++_buyCount;
            }
        }

        // Apply tax and transfer tokens
        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)] + taxAmount;
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from] - amount;
        _balances[to] = _balances[to] + amount - taxAmount;
        emit Transfer(from, to, amount - taxAmount);
    }

    function removeLimits() external onlyOwner {
        maxTx = _TOTAL;
        maxWallet = _TOTAL;
        emit MaxTxAmountUpdated(_TOTAL);
    }

    function setBots(address[] memory bots_, bool isBot_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = isBot_;
        }
    }

    // Function to open trading and add liquidity to Uniswap
    function openTrading(uint256 amount) external payable onlyOwner {
        if (lpAdded) revert TradingAlreadyOpen();
        if (msg.value == 0) revert ZeroValue();
        if (amount == 0) revert ZeroToken();
        _transfer(msg.sender, address(this), amount);
        _approve(address(this), address(_UNISWAP_V2_ROUTER), _TOTAL);

        _uniswapV2Pair =
            IUniswapV2Factory(_UNISWAP_V2_ROUTER.factory()).createPair(address(this), _UNISWAP_V2_ROUTER.WETH());
        _isExcludedFromLimits[_uniswapV2Pair] = true;

        _UNISWAP_V2_ROUTER.addLiquidityETH{value: address(this).balance}(
            address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp
        );
        IERC20(_uniswapV2Pair).approve(address(_UNISWAP_V2_ROUTER), type(uint256).max);
        _swapEnabled = true;
        lpAdded = true;
        _firstBlock = block.number;
    }

    function lowerTaxes(uint256 buyTax_, uint256 sellTax_) external onlyOwner {
        if (buyTax_ > _finalBuyTax) { revert TaxTooHigh(); }
        if (sellTax_ > _finalSellTax) { revert TaxTooHigh(); }

        _finalBuyTax = buyTax_;
        _finalSellTax = sellTax_;
    }

    function clearStuck() external {
        (bool success,) = _taxWallet.call{value: address(this).balance}("");
        require(success);
    }

    function clearStuckSelf() external {
        if (msg.sender != _taxWallet) { revert Unauthorized(); }
        _transfer(address(this), _taxWallet, balanceOf(address(this)));
    }

    function clearStuckToken(address token) external {
        if (token == address(this)) {
            revert NotSelf();
        }

        IERC20(token).transfer(_taxWallet, IERC20(token).balanceOf(address(this)));
    }


        /**
     * @dev Checks if an address is marked as a bot.
     * @param a The address to check.
     * @return True if the address is marked as a bot, false otherwise.
     */
    function isBot(address a) public view returns (bool) {
        return bots[a];
    }

    /**
     * @dev Internal function to get the minimum of two values.
     * @param a The first value.
     * @param b The second value.
     * @return The minimum of the two values.
     */
    function _min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    /**
     * @dev Internal function to check if an address is a contract.
     * @param account The address to check.
     * @return True if the address is a contract, false otherwise.
     */
    function _isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Internal function to swap tokens for ETH using Uniswap.
     * @param tokenAmount The amount of tokens to swap.
     */
    function _swapTokensForEth(uint256 tokenAmount) private {
        _inSwap = true;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _UNISWAP_V2_ROUTER.WETH();
        _approve(address(this), address(_UNISWAP_V2_ROUTER), tokenAmount);
        _UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount, 0, path, address(this), block.timestamp
        );
        _inSwap = false;
    }

    /**
     * @dev Internal function to send ETH to the tax wallet.
     * @param amount The amount of ETH to send.
     */
    function _sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSelf","type":"error"},{"inputs":[],"name":"TaxTooHigh","type":"error"},{"inputs":[],"name":"TradingAlreadyOpen","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"inputs":[],"name":"ZeroToken","type":"error"},{"inputs":[],"name":"ZeroValue","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"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":"clearStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckSelf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax_","type":"uint256"},{"internalType":"uint256","name":"sellTax_","type":"uint256"}],"name":"lowerTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"isBot_","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

60806040526023600855602d6009556005600a556005600b556018600c55601e600d556014600e555f600f556009600a6200003b919062000374565b6200004b906302faf0806200038b565b6010556200005c6009600a62000374565b6200006c906302faf0806200038b565b6011556200007d6009600a62000374565b6200008c90629896806200038b565b6012556200009d6009600a62000374565b620000ac90629896806200038b565b6013556014805461ffff60a81b19169055348015620000c9575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b031916331790556200012a6009600a62000374565b6200013a90633b9aca006200038b565b335f818152600160208181526040808420959095553280845260038252858420805460ff1990811685179091557f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff80548216851790557f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c805482168517905530855286852080548216851790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba88054821685179055600490925285842080548316841790558352938220805490941617909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200023e6009600a62000374565b6200024e90633b9aca006200038b565b60405190815260200160405180910390a3620003a5565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002b957815f19048211156200029d576200029d62000265565b80851615620002ab57918102915b93841c93908002906200027e565b509250929050565b5f82620002d1575060016200036e565b81620002df57505f6200036e565b8160018114620002f85760028114620003035762000323565b60019150506200036e565b60ff84111562000317576200031762000265565b50506001821b6200036e565b5060208310610133831016604e8410600b841016171562000348575081810a6200036e565b62000354838362000279565b805f19048211156200036a576200036a62000265565b0290505b92915050565b5f6200038460ff841683620002c1565b9392505050565b80820281158282048414176200036e576200036e62000265565b6119fc80620003b35f395ff3fe60806040526004361061014a575f3560e01c80637437681e116100b35780639c0db5f31161006d5780639c0db5f3146103a8578063a9059cbb146103c7578063af8deddb146103e6578063d163364914610406578063dd62ed3e14610419578063f8b45b051461045d575f80fd5b80637437681e146102fb578063751039fc146103105780638da5cb5b146103245780638de5c0641461034a57806395d89b411461035e5780639be953b314610389575f80fd5b80633bbac579116101045780633bbac5791461023257806357d0a9821461026957806362997f8c1461028a5780636481f2011461029f57806370a08231146102b3578063715018a6146102e7575f80fd5b80630445b6671461015557806306fdde031461017d578063095ea7b3146101b557806318160ddd146101e457806323b872dd146101f8578063313ce56714610217575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016a60125481565b6040519081526020015b60405180910390f35b348015610188575f80fd5b5060408051808201909152600781526609edcca9acae6d60cb1b60208201525b60405161017491906114f4565b3480156101c0575f80fd5b506101d46101cf366004611564565b610472565b6040519015158152602001610174565b3480156101ef575f80fd5b5061016a610488565b348015610203575f80fd5b506101d461021236600461158e565b6104a8565b348015610222575f80fd5b5060405160098152602001610174565b34801561023d575f80fd5b506101d461024c3660046115cc565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610274575f80fd5b506102886102833660046115e7565b6104f6565b005b348015610295575f80fd5b5061016a60135481565b3480156102aa575f80fd5b50610288610571565b3480156102be575f80fd5b5061016a6102cd3660046115cc565b6001600160a01b03165f9081526001602052604090205490565b3480156102f2575f80fd5b506102886105c2565b348015610306575f80fd5b5061016a60105481565b34801561031b575f80fd5b50610288610634565b34801561032f575f80fd5b505f546040516001600160a01b039091168152602001610174565b348015610355575f80fd5b506102886106e6565b348015610369575f80fd5b5060408051808201909152600381526209e9a960eb1b60208201526101a8565b348015610394575f80fd5b506102886103a33660046115cc565b610745565b3480156103b3575f80fd5b506102886103c2366004611633565b610853565b3480156103d2575f80fd5b506101d46103e1366004611564565b6108dc565b3480156103f1575f80fd5b506014546101d490600160a01b900460ff1681565b610288610414366004611705565b6108e8565b348015610424575f80fd5b5061016a61043336600461171c565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610468575f80fd5b5061016a60115481565b5f61047e338484610cd8565b5060015b92915050565b5f6104956009600a611847565b6104a390633b9aca00611855565b905090565b6001600160a01b0383165f9081526002602090815260408083203380855292528220546104e19186916104dc90869061186c565b610cd8565b6104ec848484610d86565b5060019392505050565b5f546001600160a01b03163314610520576040516330cd747160e01b815260040160405180910390fd5b600a5482111561054357604051632bc7b84d60e21b815260040160405180910390fd5b600b5481111561056657604051632bc7b84d60e21b815260040160405180910390fd5b600a91909155600b55565b6006546001600160a01b0316331461059b576040516282b42960e81b815260040160405180910390fd5b600654305f818152600160205260409020546105c0926001600160a01b031690610d86565b565b5f546001600160a01b031633146105ec576040516330cd747160e01b815260040160405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461065e576040516330cd747160e01b815260040160405180910390fd5b61066a6009600a611847565b61067890633b9aca00611855565b6010556106876009600a611847565b61069590633b9aca00611855565b6011557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106c56009600a611847565b6106d390633b9aca00611855565b60405190815260200160405180910390a1565b6006546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610730576040519150601f19603f3d011682016040523d82523d5f602084013e610735565b606091505b5050905080610742575f80fd5b50565b306001600160a01b0382160361076e576040516314e1dbf760e11b815260040160405180910390fd5b6006546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa1580156107bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e3919061187f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561082b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084f9190611896565b5050565b5f546001600160a01b0316331461087d576040516330cd747160e01b815260040160405180910390fd5b5f5b82518110156108d7578160055f85848151811061089e5761089e6118b1565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161087f565b505050565b5f61047e338484610d86565b5f546001600160a01b03163314610912576040516330cd747160e01b815260040160405180910390fd5b601454600160a01b900460ff161561093d5760405163250856ab60e21b815260040160405180910390fd5b345f0361095d57604051637c946ed760e01b815260040160405180910390fd5b805f0361097d5760405163ad1991f560e01b815260040160405180910390fd5b610988333083610d86565b6109bb30737a250d5630b4cf539739df2c5dacb4c659f2488d6109ad6009600a611847565b6104dc90633b9aca00611855565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2f91906118c5565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab291906118c5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610afc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2091906118c5565b601480546001600160a01b03929092166001600160a01b0319909216821790555f908152600360205260409020805460ff19166001179055737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d7194730610b92816001600160a01b03165f9081526001602052604090205490565b5f80610ba55f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610c0b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c3091906118e0565b505060145460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b03909116915063095ea7b3906044016020604051808303815f875af1158015610c95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb99190611896565b50506014805462ff00ff60a01b19166201000160a01b17905543600755565b6001600160a01b038316610cff5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216610d265760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610dad5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216610dd45760405163d92e233d60e01b815260040160405180910390fd5b805f03610df457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b0383165f9081526005602052604090205460ff16158015610e3457506001600160a01b0382165f9081526005602052604090205460ff16155b610e725760405162461bcd60e51b8152600401610e699060208082526004908201526373686f6f60e01b604082015260600190565b60405180910390fd5b610e7e6009600a611847565b610e8c90633b9aca00611855565b60115414158015610eb557506001600160a01b0382165f9081526003602052604090205460ff16155b15610f2c5760115481610edc846001600160a01b03165f9081526001602052604090205490565b610ee6919061190b565b1115610f2c5760405162461bcd60e51b815260206004820152601560248201527445786365656473206d617857616c6c657453697a6560581b6044820152606401610e69565b610f386009600a611847565b610f4690633b9aca00611855565b60105414158015610f6f57506001600160a01b0383165f9081526003602052604090205460ff16155b15610fb657601054811115610fb65760405162461bcd60e51b815260206004820152600d60248201526c08af0c6cacac8e640dac2f0a8f609b1b6044820152606401610e69565b305f90815260016020526040902054601454600160a81b900460ff16158015610fe157506012548110155b8015610ff65750601454600160b01b900460ff165b80156110055750600e54600f54115b801561101e57506014546001600160a01b038481169116145b801561104257506001600160a01b0384165f9081526004602052604090205460ff16155b156110765761106461105f8361105a846013546112fd565b6112fd565b611314565b47801561107457611074816114bd565b505b6014545f90600160a81b900460ff161580156110aa57506001600160a01b0385165f9081526004602052604090205460ff16155b80156110ce57506001600160a01b0384165f9081526004602052604090205460ff16155b156111c5576014546001600160a01b039081169085160361111d576064600d54600f54116110fe57600954611102565b600b545b61110c9085611855565b611116919061191e565b90506111c5565b6014546001600160a01b03908116908616036111c557436007546019611143919061190b565b111561118357833b156111835760405162461bcd60e51b815260206004820152600860248201526718dbdb9d1c9858dd60c21b6044820152606401610e69565b6064600c54600f54116111985760085461119c565b600a545b6111a69085611855565b6111b0919061191e565b9050600f5f81546111c09061193d565b909155505b801561123e57305f908152600160205260409020546111e590829061190b565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112359085815260200190565b60405180910390a35b6001600160a01b0385165f9081526001602052604090205461126190849061186c565b6001600160a01b038087165f908152600160205260408082209390935590861681522054819061129290859061190b565b61129c919061186c565b6001600160a01b038086165f8181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112e5848761186c565b60405190815260200160405180910390a35050505050565b5f81831161130b578261130d565b815b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061135a5761135a6118b1565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ee91906118c5565b81600181518110611401576114016118b1565b60200260200101906001600160a01b031690816001600160a01b03168152505061144030737a250d5630b4cf539739df2c5dacb4c659f2488d84610cd8565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac9479061147f9085905f90869030904290600401611955565b5f604051808303815f87803b158015611496575f80fd5b505af11580156114a8573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b6006546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561084f573d5f803e3d5ffd5b5f602080835283518060208501525f5b8181101561152057858101830151858201604001528201611504565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610742575f80fd5b803561155f81611540565b919050565b5f8060408385031215611575575f80fd5b823561158081611540565b946020939093013593505050565b5f805f606084860312156115a0575f80fd5b83356115ab81611540565b925060208401356115bb81611540565b929592945050506040919091013590565b5f602082840312156115dc575f80fd5b813561130d81611540565b5f80604083850312156115f8575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b8015158114610742575f80fd5b803561155f8161161b565b5f8060408385031215611644575f80fd5b823567ffffffffffffffff8082111561165b575f80fd5b818501915085601f83011261166e575f80fd5b813560208282111561168257611682611607565b8160051b604051601f19603f830116810181811086821117156116a7576116a7611607565b6040529283528183019350848101820192898411156116c4575f80fd5b948201945b838610156116e9576116da86611554565b855294820194938201936116c9565b96506116f89050878201611628565b9450505050509250929050565b5f60208284031215611715575f80fd5b5035919050565b5f806040838503121561172d575f80fd5b823561173881611540565b9150602083013561174881611540565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156117a157815f190482111561178757611787611753565b8085161561179457918102915b93841c939080029061176c565b509250929050565b5f826117b757506001610482565b816117c357505f610482565b81600181146117d957600281146117e3576117ff565b6001915050610482565b60ff8411156117f4576117f4611753565b50506001821b610482565b5060208310610133831016604e8410600b8410161715611822575081810a610482565b61182c8383611767565b805f190482111561183f5761183f611753565b029392505050565b5f61130d60ff8416836117a9565b808202811582820484141761048257610482611753565b8181038181111561048257610482611753565b5f6020828403121561188f575f80fd5b5051919050565b5f602082840312156118a6575f80fd5b815161130d8161161b565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156118d5575f80fd5b815161130d81611540565b5f805f606084860312156118f2575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561048257610482611753565b5f8261193857634e487b7160e01b5f52601260045260245ffd5b500490565b5f6001820161194e5761194e611753565b5060010190565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119a55784516001600160a01b031683529383019391830191600101611980565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209b9c1d891dc60e2f9eaa8ddf1c2c5f5642faead2dd45cd3e86c702cc53070abd64736f6c63430008170033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c80637437681e116100b35780639c0db5f31161006d5780639c0db5f3146103a8578063a9059cbb146103c7578063af8deddb146103e6578063d163364914610406578063dd62ed3e14610419578063f8b45b051461045d575f80fd5b80637437681e146102fb578063751039fc146103105780638da5cb5b146103245780638de5c0641461034a57806395d89b411461035e5780639be953b314610389575f80fd5b80633bbac579116101045780633bbac5791461023257806357d0a9821461026957806362997f8c1461028a5780636481f2011461029f57806370a08231146102b3578063715018a6146102e7575f80fd5b80630445b6671461015557806306fdde031461017d578063095ea7b3146101b557806318160ddd146101e457806323b872dd146101f8578063313ce56714610217575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016a60125481565b6040519081526020015b60405180910390f35b348015610188575f80fd5b5060408051808201909152600781526609edcca9acae6d60cb1b60208201525b60405161017491906114f4565b3480156101c0575f80fd5b506101d46101cf366004611564565b610472565b6040519015158152602001610174565b3480156101ef575f80fd5b5061016a610488565b348015610203575f80fd5b506101d461021236600461158e565b6104a8565b348015610222575f80fd5b5060405160098152602001610174565b34801561023d575f80fd5b506101d461024c3660046115cc565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610274575f80fd5b506102886102833660046115e7565b6104f6565b005b348015610295575f80fd5b5061016a60135481565b3480156102aa575f80fd5b50610288610571565b3480156102be575f80fd5b5061016a6102cd3660046115cc565b6001600160a01b03165f9081526001602052604090205490565b3480156102f2575f80fd5b506102886105c2565b348015610306575f80fd5b5061016a60105481565b34801561031b575f80fd5b50610288610634565b34801561032f575f80fd5b505f546040516001600160a01b039091168152602001610174565b348015610355575f80fd5b506102886106e6565b348015610369575f80fd5b5060408051808201909152600381526209e9a960eb1b60208201526101a8565b348015610394575f80fd5b506102886103a33660046115cc565b610745565b3480156103b3575f80fd5b506102886103c2366004611633565b610853565b3480156103d2575f80fd5b506101d46103e1366004611564565b6108dc565b3480156103f1575f80fd5b506014546101d490600160a01b900460ff1681565b610288610414366004611705565b6108e8565b348015610424575f80fd5b5061016a61043336600461171c565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610468575f80fd5b5061016a60115481565b5f61047e338484610cd8565b5060015b92915050565b5f6104956009600a611847565b6104a390633b9aca00611855565b905090565b6001600160a01b0383165f9081526002602090815260408083203380855292528220546104e19186916104dc90869061186c565b610cd8565b6104ec848484610d86565b5060019392505050565b5f546001600160a01b03163314610520576040516330cd747160e01b815260040160405180910390fd5b600a5482111561054357604051632bc7b84d60e21b815260040160405180910390fd5b600b5481111561056657604051632bc7b84d60e21b815260040160405180910390fd5b600a91909155600b55565b6006546001600160a01b0316331461059b576040516282b42960e81b815260040160405180910390fd5b600654305f818152600160205260409020546105c0926001600160a01b031690610d86565b565b5f546001600160a01b031633146105ec576040516330cd747160e01b815260040160405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461065e576040516330cd747160e01b815260040160405180910390fd5b61066a6009600a611847565b61067890633b9aca00611855565b6010556106876009600a611847565b61069590633b9aca00611855565b6011557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106c56009600a611847565b6106d390633b9aca00611855565b60405190815260200160405180910390a1565b6006546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610730576040519150601f19603f3d011682016040523d82523d5f602084013e610735565b606091505b5050905080610742575f80fd5b50565b306001600160a01b0382160361076e576040516314e1dbf760e11b815260040160405180910390fd5b6006546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa1580156107bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e3919061187f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561082b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084f9190611896565b5050565b5f546001600160a01b0316331461087d576040516330cd747160e01b815260040160405180910390fd5b5f5b82518110156108d7578160055f85848151811061089e5761089e6118b1565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161087f565b505050565b5f61047e338484610d86565b5f546001600160a01b03163314610912576040516330cd747160e01b815260040160405180910390fd5b601454600160a01b900460ff161561093d5760405163250856ab60e21b815260040160405180910390fd5b345f0361095d57604051637c946ed760e01b815260040160405180910390fd5b805f0361097d5760405163ad1991f560e01b815260040160405180910390fd5b610988333083610d86565b6109bb30737a250d5630b4cf539739df2c5dacb4c659f2488d6109ad6009600a611847565b6104dc90633b9aca00611855565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2f91906118c5565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab291906118c5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610afc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2091906118c5565b601480546001600160a01b03929092166001600160a01b0319909216821790555f908152600360205260409020805460ff19166001179055737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d7194730610b92816001600160a01b03165f9081526001602052604090205490565b5f80610ba55f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610c0b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c3091906118e0565b505060145460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201526001600160a01b03909116915063095ea7b3906044016020604051808303815f875af1158015610c95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb99190611896565b50506014805462ff00ff60a01b19166201000160a01b17905543600755565b6001600160a01b038316610cff5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216610d265760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610dad5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216610dd45760405163d92e233d60e01b815260040160405180910390fd5b805f03610df457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b0383165f9081526005602052604090205460ff16158015610e3457506001600160a01b0382165f9081526005602052604090205460ff16155b610e725760405162461bcd60e51b8152600401610e699060208082526004908201526373686f6f60e01b604082015260600190565b60405180910390fd5b610e7e6009600a611847565b610e8c90633b9aca00611855565b60115414158015610eb557506001600160a01b0382165f9081526003602052604090205460ff16155b15610f2c5760115481610edc846001600160a01b03165f9081526001602052604090205490565b610ee6919061190b565b1115610f2c5760405162461bcd60e51b815260206004820152601560248201527445786365656473206d617857616c6c657453697a6560581b6044820152606401610e69565b610f386009600a611847565b610f4690633b9aca00611855565b60105414158015610f6f57506001600160a01b0383165f9081526003602052604090205460ff16155b15610fb657601054811115610fb65760405162461bcd60e51b815260206004820152600d60248201526c08af0c6cacac8e640dac2f0a8f609b1b6044820152606401610e69565b305f90815260016020526040902054601454600160a81b900460ff16158015610fe157506012548110155b8015610ff65750601454600160b01b900460ff165b80156110055750600e54600f54115b801561101e57506014546001600160a01b038481169116145b801561104257506001600160a01b0384165f9081526004602052604090205460ff16155b156110765761106461105f8361105a846013546112fd565b6112fd565b611314565b47801561107457611074816114bd565b505b6014545f90600160a81b900460ff161580156110aa57506001600160a01b0385165f9081526004602052604090205460ff16155b80156110ce57506001600160a01b0384165f9081526004602052604090205460ff16155b156111c5576014546001600160a01b039081169085160361111d576064600d54600f54116110fe57600954611102565b600b545b61110c9085611855565b611116919061191e565b90506111c5565b6014546001600160a01b03908116908616036111c557436007546019611143919061190b565b111561118357833b156111835760405162461bcd60e51b815260206004820152600860248201526718dbdb9d1c9858dd60c21b6044820152606401610e69565b6064600c54600f54116111985760085461119c565b600a545b6111a69085611855565b6111b0919061191e565b9050600f5f81546111c09061193d565b909155505b801561123e57305f908152600160205260409020546111e590829061190b565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112359085815260200190565b60405180910390a35b6001600160a01b0385165f9081526001602052604090205461126190849061186c565b6001600160a01b038087165f908152600160205260408082209390935590861681522054819061129290859061190b565b61129c919061186c565b6001600160a01b038086165f8181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112e5848761186c565b60405190815260200160405180910390a35050505050565b5f81831161130b578261130d565b815b9392505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061135a5761135a6118b1565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ee91906118c5565b81600181518110611401576114016118b1565b60200260200101906001600160a01b031690816001600160a01b03168152505061144030737a250d5630b4cf539739df2c5dacb4c659f2488d84610cd8565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac9479061147f9085905f90869030904290600401611955565b5f604051808303815f87803b158015611496575f80fd5b505af11580156114a8573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b6006546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561084f573d5f803e3d5ffd5b5f602080835283518060208501525f5b8181101561152057858101830151858201604001528201611504565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610742575f80fd5b803561155f81611540565b919050565b5f8060408385031215611575575f80fd5b823561158081611540565b946020939093013593505050565b5f805f606084860312156115a0575f80fd5b83356115ab81611540565b925060208401356115bb81611540565b929592945050506040919091013590565b5f602082840312156115dc575f80fd5b813561130d81611540565b5f80604083850312156115f8575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b8015158114610742575f80fd5b803561155f8161161b565b5f8060408385031215611644575f80fd5b823567ffffffffffffffff8082111561165b575f80fd5b818501915085601f83011261166e575f80fd5b813560208282111561168257611682611607565b8160051b604051601f19603f830116810181811086821117156116a7576116a7611607565b6040529283528183019350848101820192898411156116c4575f80fd5b948201945b838610156116e9576116da86611554565b855294820194938201936116c9565b96506116f89050878201611628565b9450505050509250929050565b5f60208284031215611715575f80fd5b5035919050565b5f806040838503121561172d575f80fd5b823561173881611540565b9150602083013561174881611540565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156117a157815f190482111561178757611787611753565b8085161561179457918102915b93841c939080029061176c565b509250929050565b5f826117b757506001610482565b816117c357505f610482565b81600181146117d957600281146117e3576117ff565b6001915050610482565b60ff8411156117f4576117f4611753565b50506001821b610482565b5060208310610133831016604e8410600b8410161715611822575081810a610482565b61182c8383611767565b805f190482111561183f5761183f611753565b029392505050565b5f61130d60ff8416836117a9565b808202811582820484141761048257610482611753565b8181038181111561048257610482611753565b5f6020828403121561188f575f80fd5b5051919050565b5f602082840312156118a6575f80fd5b815161130d8161161b565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156118d5575f80fd5b815161130d81611540565b5f805f606084860312156118f2575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561048257610482611753565b5f8261193857634e487b7160e01b5f52601260045260245ffd5b500490565b5f6001820161194e5761194e611753565b5060010190565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119a55784516001600160a01b031683529383019391830191600101611980565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209b9c1d891dc60e2f9eaa8ddf1c2c5f5642faead2dd45cd3e86c702cc53070abd64736f6c63430008170033

Deployed Bytecode Sourcemap

4029:10482:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:57;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5445:57:0;;;;;;;;6579:83;;;;;;;;;;-1:-1:-1;6649:5:0;;;;;;;;;;;;-1:-1:-1;;;6649:5:0;;;;6579:83;;;;;;;:::i;7409:159::-;;;;;;;;;;-1:-1:-1;7409:159:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;7409:159:0;1344:187:1;6856:94:0;;;;;;;;;;;;;:::i;7576:262::-;;;;;;;;;;-1:-1:-1;7576:262:0;;;;;:::i;:::-;;:::i;6765:83::-;;;;;;;;;;-1:-1:-1;6765:83:0;;5144:1;2139:36:1;;2127:2;2112:18;6765:83:0;1997:184:1;12841:86:0;;;;;;;;;;-1:-1:-1;12841:86:0;;;;;:::i;:::-;-1:-1:-1;;;;;12912:7:0;12888:4;12912:7;;;:4;:7;;;;;;;;;12841:86;11790:278;;;;;;;;;;-1:-1:-1;11790:278:0;;;;;:::i;:::-;;:::i;:::-;;5509:54;;;;;;;;;;;;;;;;12228:182;;;;;;;;;;;;;:::i;6958:119::-;;;;;;;;;;-1:-1:-1;6958:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7051:18:0;7024:7;7051:18;;;:9;:18;;;;;;;6958:119;3046:148;;;;;;;;;;;;;:::i;5329:49::-;;;;;;;;;;;;;;;;10478:147;;;;;;;;;;;;;:::i;2856:79::-;;;;;;;;;;-1:-1:-1;2894:7:0;2921:6;2856:79;;-1:-1:-1;;;;;2921:6:0;;;2837:51:1;;2825:2;2810:18;2856:79:0;2691:203:1;12076:144:0;;;;;;;;;;;;;:::i;6670:87::-;;;;;;;;;;-1:-1:-1;6742:7:0;;;;;;;;;;;;-1:-1:-1;;;6742:7:0;;;;6670:87;;12418:225;;;;;;;;;;-1:-1:-1;12418:225:0;;;;;:::i;:::-;;:::i;10633:182::-;;;;;;;;;;-1:-1:-1;10633:182:0;;;;;:::i;:::-;;:::i;7085:165::-;;;;;;;;;;-1:-1:-1;7085:165:0;;;;;:::i;:::-;;:::i;5779:19::-;;;;;;;;;;-1:-1:-1;5779:19:0;;;;-1:-1:-1;;;5779:19:0;;;;;;10885:897;;;;;;:::i;:::-;;:::i;7258:143::-;;;;;;;;;;-1:-1:-1;7258:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7366:18:0;;;7339:7;7366:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7258:143;5385:53;;;;;;;;;;;;;;;;7409:159;7484:4;7501:37;7510:10;7522:7;7531:6;7501:8;:37::i;:::-;-1:-1:-1;7556:4:0;7409:159;;;;;:::o;6856:94::-;6909:7;5199:15;5144:1;5199:2;:15;:::i;:::-;5186:28;;:10;:28;:::i;:::-;6929:13;;6856:94;:::o;7576:262::-;-1:-1:-1;;;;;7720:19:0;;7674:4;7720:19;;;:11;:19;;;;;;;;7708:10;7720:31;;;;;;;;7691:70;;7700:6;;7720:40;;7754:6;;7720:40;:::i;:::-;7691:8;:70::i;:::-;7772:36;7782:6;7790:9;7801:6;7772:9;:36::i;:::-;-1:-1:-1;7826:4:0;7576:262;;;;;:::o;11790:278::-;2979:6;;-1:-1:-1;;;;;2979:6:0;2989:10;2979:20;2975:43;;3008:10;;-1:-1:-1;;;3008:10:0;;;;;;;;;;;2975:43;11889:12:::1;;11879:7;:22;11875:52;;;11912:12;;-1:-1:-1::0;;;11912:12:0::1;;;;;;;;;;;11875:52;11952:13;;11941:8;:24;11937:54;;;11976:12;;-1:-1:-1::0;;;11976:12:0::1;;;;;;;;;;;11937:54;12003:12;:22:::0;;;;12036:13:::1;:24:::0;11790:278::o;12228:182::-;12292:10;;-1:-1:-1;;;;;12292:10:0;12278;:24;12274:56;;12313:14;;-1:-1:-1;;;12313:14:0;;;;;;;;;;;12274:56;12365:10;;12358:4;7024:7;7051:18;;;:9;:18;;;;;;12340:62;;-1:-1:-1;;;;;12365:10:0;;12340:9;:62::i;:::-;12228:182::o;3046:148::-;2979:6;;-1:-1:-1;;;;;2979:6:0;2989:10;2979:20;2975:43;;3008:10;;-1:-1:-1;;;3008:10:0;;;;;;;;;;;2975:43;3153:1:::1;3137:6:::0;;3116:40:::1;::::0;-1:-1:-1;;;;;3137:6:0;;::::1;::::0;3116:40:::1;::::0;3153:1;;3116:40:::1;3184:1;3167:19:::0;;-1:-1:-1;;;;;;3167:19:0::1;::::0;;3046:148::o;10478:147::-;2979:6;;-1:-1:-1;;;;;2979:6:0;2989:10;2979:20;2975:43;;3008:10;;-1:-1:-1;;;3008:10:0;;;;;;;;;;;2975:43;5199:15:::1;5144:1;5199:2;:15;:::i;:::-;5186:28;::::0;:10:::1;:28;:::i;:::-;10532:5;:14:::0;5199:15:::1;5144:1;5199:2;:15;:::i;:::-;5186:28;::::0;:10:::1;:28;:::i;:::-;10557:9;:18:::0;10591:26:::1;5199:15;5144:1;5199:2;:15;:::i;:::-;5186:28;::::0;:10:::1;:28;:::i;:::-;10591:26;::::0;160:25:1;;;148:2;133:18;10591:26:0::1;;;;;;;10478:147::o:0;12076:144::-;12136:10;;:49;;12119:12;;-1:-1:-1;;;;;12136:10:0;;12159:21;;12119:12;12136:49;12119:12;12136:49;12159:21;12136:10;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12118:67;;;12204:7;12196:16;;;;;;12107:113;12076:144::o;12418:225::-;12499:4;-1:-1:-1;;;;;12482:22:0;;;12478:71;;12528:9;;-1:-1:-1;;;12528:9:0;;;;;;;;;;;12478:71;12584:10;;12596:38;;-1:-1:-1;;;12596:38:0;;12628:4;12596:38;;;2837:51:1;-1:-1:-1;;;;;12561:22:0;;;;;;12584:10;;;12561:22;;12596:23;;2810:18:1;;12596:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12561:74;;-1:-1:-1;;;;;;12561:74:0;;;;;;;-1:-1:-1;;;;;7475:32:1;;;12561:74:0;;;7457:51:1;7524:18;;;7517:34;7430:18;;12561:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12418:225;:::o;10633:182::-;2979:6;;-1:-1:-1;;;;;2979:6:0;2989:10;2979:20;2975:43;;3008:10;;-1:-1:-1;;;3008:10:0;;;;;;;;;;;2975:43;10720:9:::1;10715:93;10739:5;:12;10735:1;:16;10715:93;;;10790:6;10773:4;:14;10778:5;10784:1;10778:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;10773:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;10773:14:0;:23;;-1:-1:-1;;10773:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;10753:3:0::1;10715:93;;;;10633:182:::0;;:::o;7085:165::-;7163:4;7180:40;7190:10;7202:9;7213:6;7180:9;:40::i;10885:897::-;2979:6;;-1:-1:-1;;;;;2979:6:0;2989:10;2979:20;2975:43;;3008:10;;-1:-1:-1;;;3008:10:0;;;;;;;;;;;2975:43;10964:7:::1;::::0;-1:-1:-1;;;10964:7:0;::::1;;;10960:40;;;10980:20;;-1:-1:-1::0;;;10980:20:0::1;;;;;;;;;;;10960:40;11015:9;11028:1;11015:14:::0;11011:38:::1;;11038:11;;-1:-1:-1::0;;;11038:11:0::1;;;;;;;;;;;11011:38;11064:6;11074:1;11064:11:::0;11060:35:::1;;11084:11;;-1:-1:-1::0;;;11084:11:0::1;;;;;;;;;;;11060:35;11106:44;11116:10;11136:4;11143:6;11106:9;:44::i;:::-;11161:60;11178:4;5692:42;5199:15;5144:1;5199:2;:15;:::i;:::-;5186:28;::::0;:10:::1;:28;:::i;11161:60::-;5692:42;-1:-1:-1::0;;;;;11282:26:0::1;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11264:58:0::1;;11331:4;5692:42;-1:-1:-1::0;;;;;11338:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11264:100;::::0;-1:-1:-1;;;;;;11264:100:0::1;::::0;;;;;;-1:-1:-1;;;;;8430:15:1;;;11264:100:0::1;::::0;::::1;8412:34:1::0;8482:15;;8462:18;;;8455:43;8347:18;;11264:100:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11234:14;:130:::0;;-1:-1:-1;;;;;11234:130:0;;;::::1;-1:-1:-1::0;;;;;;11234:130:0;;::::1;::::0;::::1;::::0;;:14:::1;11375:37:::0;;;:21:::1;:37;::::0;;;;:44;;-1:-1:-1;;11375:44:0::1;11234:130:::0;11375:44:::1;::::0;;5692:42:::1;11432:34;11474:21;11519:4;11526:24;11519:4:::0;-1:-1:-1;;;;;7051:18:0;7024:7;7051:18;;;:9;:18;;;;;;;6958:119;11526:24:::1;11552:1;11555::::0;11558:7:::1;2894::::0;2921:6;-1:-1:-1;;;;;2921:6:0;;2856:79;11558:7:::1;11432:161;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11432:161:0;;;-1:-1:-1;;;;;8868:15:1;;;11432:161:0::1;::::0;::::1;8850:34:1::0;8900:18;;;8893:34;;;;8943:18;;;8936:34;;;;8986:18;;;8979:34;9050:15;;;9029:19;;;9022:44;11567:15:0::1;9082:19:1::0;;;9075:35;8784:19;;11432:161:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11611:14:0::1;::::0;11604:78:::1;::::0;-1:-1:-1;;;11604:78:0;;5692:42:::1;11604:78;::::0;::::1;7457:51:1::0;-1:-1:-1;;7524:18:1;;;7517:34;-1:-1:-1;;;;;11611:14:0;;::::1;::::0;-1:-1:-1;11604:30:0::1;::::0;7430:18:1;;11604:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11693:12:0::1;:19:::0;;-1:-1:-1;;;;11723:14:0;-1:-1:-1;;;11723:14:0;;;11762:12:::1;11748:11;:26:::0;10885:897::o;7846:291::-;-1:-1:-1;;;;;7935:19:0;;7931:45;;7963:13;;-1:-1:-1;;;7963:13:0;;;;;;;;;;;7931:45;-1:-1:-1;;;;;7991:21:0;;7987:47;;8021:13;;-1:-1:-1;;;8021:13:0;;;;;;;;;;;7987:47;-1:-1:-1;;;;;8045:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8097:32;;160:25:1;;;8097:32:0;;133:18:1;8097:32:0;;;;;;;7846:291;;;:::o;8145:2325::-;-1:-1:-1;;;;;8229:18:0;;8225:44;;8256:13;;-1:-1:-1;;;8256:13:0;;;;;;;;;;;8225:44;-1:-1:-1;;;;;8284:16:0;;8280:42;;8309:13;;-1:-1:-1;;;8309:13:0;;;;;;;;;;;8280:42;8337:6;8347:1;8337:11;8333:36;;8357:12;;-1:-1:-1;;;8357:12:0;;;;;;;;;;;8333:36;-1:-1:-1;;;;;8391:10:0;;;;;;:4;:10;;;;;;;;8390:11;:24;;;;-1:-1:-1;;;;;;8406:8:0;;;;;;:4;:8;;;;;;;;8405:9;8390:24;8382:41;;;;-1:-1:-1;;;8382:41:0;;;;;;9913:2:1;9895:21;;;9952:1;9932:18;;;9925:29;-1:-1:-1;;;9985:2:1;9970:18;;9963:34;10029:2;10014:18;;9711:327;8382:41:0;;;;;;;;;5199:15;5144:1;5199:2;:15;:::i;:::-;5186:28;;:10;:28;:::i;:::-;8482:9;;:19;;:49;;;;-1:-1:-1;;;;;;8506:25:0;;;;;;:21;:25;;;;;;;;8505:26;8482:49;8478:151;;;8582:9;;8572:6;8556:13;8566:2;-1:-1:-1;;;;;7051:18:0;7024:7;7051:18;;;:9;:18;;;;;;;6958:119;8556:13;:22;;;;:::i;:::-;:35;;8548:69;;;;-1:-1:-1;;;8548:69:0;;10375:2:1;8548:69:0;;;10357:21:1;10414:2;10394:18;;;10387:30;-1:-1:-1;;;10433:18:1;;;10426:51;10494:18;;8548:69:0;10173:345:1;8548:69:0;5199:15;5144:1;5199:2;:15;:::i;:::-;5186:28;;:10;:28;:::i;:::-;8692:5;;:15;;:47;;;;-1:-1:-1;;;;;;8712:27:0;;;;;;:21;:27;;;;;;;;8711:28;8692:47;8688:121;;;8774:5;;8764:6;:15;;8756:41;;;;-1:-1:-1;;;8756:41:0;;10725:2:1;8756:41:0;;;10707:21:1;10764:2;10744:18;;;10737:30;-1:-1:-1;;;10783:18:1;;;10776:43;10836:18;;8756:41:0;10523:337:1;8756:41:0;8912:4;8863:28;7051:18;;;:9;:18;;;;;;8948:7;;-1:-1:-1;;;8948:7:0;;;;8947:8;:49;;;;;8983:13;;8959:20;:37;;8947:49;:65;;;;-1:-1:-1;9000:12:0;;-1:-1:-1;;;9000:12:0;;;;8947:65;:99;;;;;9028:18;;9016:9;;:30;8947:99;:140;;;;-1:-1:-1;9073:14:0;;-1:-1:-1;;;;;9067:20:0;;;9073:14;;9067:20;8947:140;:169;;;;-1:-1:-1;;;;;;9092:24:0;;;;;;:18;:24;;;;;;;;9091:25;8947:169;8929:472;;;9143:71;9161:52;9166:6;9174:38;9179:20;9201:10;;9174:4;:38::i;:::-;9161:4;:52::i;:::-;9143:17;:71::i;:::-;9258:21;9298:22;;9294:96;;9341:33;9355:18;9341:13;:33::i;:::-;9128:273;8929:472;9486:7;;9449:17;;-1:-1:-1;;;9486:7:0;;;;9485:8;:37;;;;-1:-1:-1;;;;;;9498:24:0;;;;;;:18;:24;;;;;;;;9497:25;9485:37;:64;;;;-1:-1:-1;;;;;;9527:22:0;;;;;;:18;:22;;;;;;;;9526:23;9485:64;9481:591;;;9576:14;;-1:-1:-1;;;;;9576:14:0;;;9570:20;;;;9566:495;;9703:3;9647:16;;9635:9;;:28;9634:64;;9683:15;;9634:64;;;9667:13;;9634:64;9624:75;;:6;:75;:::i;:::-;9623:83;;;;:::i;:::-;9611:95;;9566:495;;;9753:14;;-1:-1:-1;;;;;9753:14:0;;;9745:22;;;;9741:320;;9811:12;9792:11;;9806:2;9792:16;;;;:::i;:::-;:31;9788:117;;;13582:20;;13630:8;9848:37;;;;-1:-1:-1;;;9848:37:0;;11289:2:1;9848:37:0;;;11271:21:1;11328:1;11308:18;;;11301:29;-1:-1:-1;;;11346:18:1;;;11339:38;11394:18;;9848:37:0;11087:331:1;9848:37:0;10012:3;9959:15;;9947:9;;:27;9946:61;;9993:14;;9946:61;;;9978:12;;9946:61;9936:72;;:6;:72;:::i;:::-;9935:80;;;;:::i;:::-;9923:92;;10036:9;;10034:11;;;;;:::i;:::-;;;;-1:-1:-1;9741:320:0;10130:13;;10126:169;;10205:4;10187:24;;;;:9;:24;;;;;;:36;;10214:9;;10187:36;:::i;:::-;10178:4;10160:24;;;;:9;:24;;;;;;;:63;;;;10243:40;;-1:-1:-1;;;;;10243:40:0;;;;;;;10273:9;160:25:1;;148:2;133:18;;14:177;10243:40:0;;;;;;;;10126:169;-1:-1:-1;;;;;10323:15:0;;;;;;:9;:15;;;;;;:24;;10341:6;;10323:24;:::i;:::-;-1:-1:-1;;;;;10305:15:0;;;;;;;:9;:15;;;;;;:42;;;;10374:13;;;;;;;10399:9;;10374:22;;10390:6;;10374:22;:::i;:::-;:34;;;;:::i;:::-;-1:-1:-1;;;;;10358:13:0;;;;;;;:9;:13;;;;;:50;;;;10424:38;;;10443:18;10452:9;10443:6;:18;:::i;:::-;10424:38;;160:25:1;;;148:2;133:18;10424:38:0;;;;;;;8214:2256;;8145:2325;;;:::o;13134:108::-;13192:7;13224:1;13220;:5;13219:15;;13233:1;13219:15;;;13229:1;13219:15;13212:22;13134:108;-1:-1:-1;;;13134:108:0:o;13798:480::-;13865:7;:14;;-1:-1:-1;;;;13865:14:0;-1:-1:-1;;;13865:14:0;;;13914:16;;;13928:1;13914:16;;;;;;;;-1:-1:-1;;13914:16:0;;;;;;;;;;-1:-1:-1;13914:16:0;13890:40;;13959:4;13941;13946:1;13941:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;13941:23:0;;;-1:-1:-1;;;;;13941:23:0;;;;;5692:42;-1:-1:-1;;;;;13985:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13975:4;13980:1;13975:7;;;;;;;;:::i;:::-;;;;;;:35;-1:-1:-1;;;;;13975:35:0;;;-1:-1:-1;;;;;13975:35:0;;;;;14021:65;14038:4;5692:42;14074:11;14021:8;:65::i;:::-;14097:147;;-1:-1:-1;;;14097:147:0;;5692:42;;14097:69;;:147;;14181:11;;14194:1;;14197:4;;14211;;14218:15;;14097:147;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14255:7:0;:15;;-1:-1:-1;;;;14255:15:0;;;-1:-1:-1;;;;13798:480:0:o;14415:93::-;14473:10;;:27;;-1:-1:-1;;;;;14473:10:0;;;;:27;;;;;14493:6;;14473:10;:27;:10;:27;14493:6;14473:10;:27;;;;;;;;;;;;;;;;;;;196:548:1;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:134;953:20;;982:31;953:20;982:31;:::i;:::-;885:134;;;:::o;1024:315::-;1092:6;1100;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1208:9;1195:23;1227:31;1252:5;1227:31;:::i;:::-;1277:5;1329:2;1314:18;;;;1301:32;;-1:-1:-1;;;1024:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;2186:247::-;2245:6;2298:2;2286:9;2277:7;2273:23;2269:32;2266:52;;;2314:1;2311;2304:12;2266:52;2353:9;2340:23;2372:31;2397:5;2372:31;:::i;2438:248::-;2506:6;2514;2567:2;2555:9;2546:7;2542:23;2538:32;2535:52;;;2583:1;2580;2573:12;2535:52;-1:-1:-1;;2606:23:1;;;2676:2;2661:18;;;2648:32;;-1:-1:-1;2438:248:1:o;2899:127::-;2960:10;2955:3;2951:20;2948:1;2941:31;2991:4;2988:1;2981:15;3015:4;3012:1;3005:15;3031:118;3117:5;3110:13;3103:21;3096:5;3093:32;3083:60;;3139:1;3136;3129:12;3154:128;3219:20;;3248:28;3219:20;3248:28;:::i;3287:1191::-;3377:6;3385;3438:2;3426:9;3417:7;3413:23;3409:32;3406:52;;;3454:1;3451;3444:12;3406:52;3494:9;3481:23;3523:18;3564:2;3556:6;3553:14;3550:34;;;3580:1;3577;3570:12;3550:34;3618:6;3607:9;3603:22;3593:32;;3663:7;3656:4;3652:2;3648:13;3644:27;3634:55;;3685:1;3682;3675:12;3634:55;3721:2;3708:16;3743:4;3766:2;3762;3759:10;3756:36;;;3772:18;;:::i;:::-;3818:2;3815:1;3811:10;3850:2;3844:9;3913:2;3909:7;3904:2;3900;3896:11;3892:25;3884:6;3880:38;3968:6;3956:10;3953:22;3948:2;3936:10;3933:18;3930:46;3927:72;;;3979:18;;:::i;:::-;4015:2;4008:22;4065:18;;;4099:15;;;;-1:-1:-1;4141:11:1;;;4137:20;;;4169:19;;;4166:39;;;4201:1;4198;4191:12;4166:39;4225:11;;;;4245:148;4261:6;4256:3;4253:15;4245:148;;;4327:23;4346:3;4327:23;:::i;:::-;4315:36;;4278:12;;;;4371;;;;4245:148;;;4412:6;-1:-1:-1;4437:35:1;;-1:-1:-1;4453:18:1;;;4437:35;:::i;:::-;4427:45;;;;;;3287:1191;;;;;:::o;4483:180::-;4542:6;4595:2;4583:9;4574:7;4570:23;4566:32;4563:52;;;4611:1;4608;4601:12;4563:52;-1:-1:-1;4634:23:1;;4483:180;-1:-1:-1;4483:180:1:o;4668:388::-;4736:6;4744;4797:2;4785:9;4776:7;4772:23;4768:32;4765:52;;;4813:1;4810;4803:12;4765:52;4852:9;4839:23;4871:31;4896:5;4871:31;:::i;:::-;4921:5;-1:-1:-1;4978:2:1;4963:18;;4950:32;4991:33;4950:32;4991:33;:::i;:::-;5043:7;5033:17;;;4668:388;;;;;:::o;5061:127::-;5122:10;5117:3;5113:20;5110:1;5103:31;5153:4;5150:1;5143:15;5177:4;5174:1;5167:15;5193:416;5282:1;5319:5;5282:1;5333:270;5354:7;5344:8;5341:21;5333:270;;;5413:4;5409:1;5405:6;5401:17;5395:4;5392:27;5389:53;;;5422:18;;:::i;:::-;5472:7;5462:8;5458:22;5455:55;;;5492:16;;;;5455:55;5571:22;;;;5531:15;;;;5333:270;;;5337:3;5193:416;;;;;:::o;5614:806::-;5663:5;5693:8;5683:80;;-1:-1:-1;5734:1:1;5748:5;;5683:80;5782:4;5772:76;;-1:-1:-1;5819:1:1;5833:5;;5772:76;5864:4;5882:1;5877:59;;;;5950:1;5945:130;;;;5857:218;;5877:59;5907:1;5898:10;;5921:5;;;5945:130;5982:3;5972:8;5969:17;5966:43;;;5989:18;;:::i;:::-;-1:-1:-1;;6045:1:1;6031:16;;6060:5;;5857:218;;6159:2;6149:8;6146:16;6140:3;6134:4;6131:13;6127:36;6121:2;6111:8;6108:16;6103:2;6097:4;6094:12;6090:35;6087:77;6084:159;;;-1:-1:-1;6196:19:1;;;6228:5;;6084:159;6275:34;6300:8;6294:4;6275:34;:::i;:::-;6345:6;6341:1;6337:6;6333:19;6324:7;6321:32;6318:58;;;6356:18;;:::i;:::-;6394:20;;5614:806;-1:-1:-1;;;5614:806:1:o;6425:140::-;6483:5;6512:47;6553:4;6543:8;6539:19;6533:4;6512:47;:::i;6570:168::-;6643:9;;;6674;;6691:15;;;6685:22;;6671:37;6661:71;;6712:18;;:::i;6743:128::-;6810:9;;;6831:11;;;6828:37;;;6845:18;;:::i;7086:184::-;7156:6;7209:2;7197:9;7188:7;7184:23;7180:32;7177:52;;;7225:1;7222;7215:12;7177:52;-1:-1:-1;7248:16:1;;7086:184;-1:-1:-1;7086:184:1:o;7562:245::-;7629:6;7682:2;7670:9;7661:7;7657:23;7653:32;7650:52;;;7698:1;7695;7688:12;7650:52;7730:9;7724:16;7749:28;7771:5;7749:28;:::i;7812:127::-;7873:10;7868:3;7864:20;7861:1;7854:31;7904:4;7901:1;7894:15;7928:4;7925:1;7918:15;7944:251;8014:6;8067:2;8055:9;8046:7;8042:23;8038:32;8035:52;;;8083:1;8080;8073:12;8035:52;8115:9;8109:16;8134:31;8159:5;8134:31;:::i;9121:306::-;9209:6;9217;9225;9278:2;9266:9;9257:7;9253:23;9249:32;9246:52;;;9294:1;9291;9284:12;9246:52;9323:9;9317:16;9307:26;;9373:2;9362:9;9358:18;9352:25;9342:35;;9417:2;9406:9;9402:18;9396:25;9386:35;;9121:306;;;;;:::o;10043:125::-;10108:9;;;10129:10;;;10126:36;;;10142:18;;:::i;10865:217::-;10905:1;10931;10921:132;;10975:10;10970:3;10966:20;10963:1;10956:31;11010:4;11007:1;11000:15;11038:4;11035:1;11028:15;10921:132;-1:-1:-1;11067:9:1;;10865:217::o;11423:135::-;11462:3;11483:17;;;11480:43;;11503:18;;:::i;:::-;-1:-1:-1;11550:1:1;11539:13;;11423:135::o;11563:980::-;11825:4;11873:3;11862:9;11858:19;11904:6;11893:9;11886:25;11930:2;11968:6;11963:2;11952:9;11948:18;11941:34;12011:3;12006:2;11995:9;11991:18;11984:31;12035:6;12070;12064:13;12101:6;12093;12086:22;12139:3;12128:9;12124:19;12117:26;;12178:2;12170:6;12166:15;12152:29;;12199:1;12209:195;12223:6;12220:1;12217:13;12209:195;;;12288:13;;-1:-1:-1;;;;;12284:39:1;12272:52;;12379:15;;;;12344:12;;;;12320:1;12238:9;12209:195;;;-1:-1:-1;;;;;;;12460:32:1;;;;12455:2;12440:18;;12433:60;-1:-1:-1;;;12524:3:1;12509:19;12502:35;12421:3;11563:980;-1:-1:-1;;;11563:980:1:o

Swarm Source

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