ETH Price: $3,270.92 (+0.61%)
Gas: 1 Gwei

Token

Secret AI (SECAI)
 

Overview

Max Total Supply

1,000,000,000 SECAI

Holders

60

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 SECAI

Value
$0.00
0xaf0dc0c39c88c5ee473e2bf57dfc08ccd1afd1dc
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:
SECAI

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-21
*/

// SPDX-License-Identifier: MIT

/**

A complete privacy trading and liquidity
leasing solutions for crypto users

Website: https://www.secretai.pro
Telegram: https://t.me/secretai_erc
Twitter: https://twitter.com/secretai_erc

**/

pragma solidity 0.8.22;

interface IFactory01 {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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 IRouter02 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    )
        external
        payable
        returns (uint amountToken, uint amountETH, uint liquidity);
}

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract SECAI is Context, IERC20, Ownable {
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private feesExcluded;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = unicode"Secret AI";
    string private constant _symbol = unicode"SECAI";
    uint256 public maxTxAmount = 20_000_000 * 10 ** _decimals;
    uint256 private swapMinValues = 10_000 * 10 ** _decimals;
    uint256 private swapMaxValues = 10_000_000 * 10 ** _decimals;
    uint256 private _buyTAX = 20;
    uint256 private _sellTAX = 25;
    uint256 private buyCount = 0;

    IRouter02 public uniswapV2Router;
    address private uniswapV2Pair;
    bool public tradeOpened = false;
    bool private swapEnabled = false;
    bool private inSwapBack = false;

    event ExcludeFromFeeUpdated(address indexed account);
    event includeFromFeeUpdated(address indexed account);
    event ERC20TokensRecovered(uint256 indexed _amount);
    event TradingOpenUpdated();
    event ETHBalanceRecovered();

    address public constant deadWallet =
        0x000000000000000000000000000000000000dEaD;
    address payable private gptReceipt;
    address payable private taxReceipt;

    modifier lockTheSwap() {
        inSwapBack = true;
        _;
        inSwapBack = false;
    }

    constructor() {
        _tOwned[_msgSender()] = _tTotal;
        taxReceipt = payable(0x5F0D7B2E3151d582675aFd0ddFbf96Fd6988Ae87);
        gptReceipt = payable(0x093a0C2c199Ce8907790fbB7F749577B334C93B3);
        feesExcluded[gptReceipt] = true;
        feesExcluded[taxReceipt] = true;
        feesExcluded[deadWallet] = true;
        feesExcluded[_msgSender()] = true;
        feesExcluded[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(
        address owner,
        address spender
    ) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function addLiquidityETH() external payable onlyOwner {
        uniswapV2Router = IRouter02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IFactory01(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        _approve(address(this), address(uniswapV2Router), ~uint256(0));

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function openTrading() external onlyOwner {
        require(!tradeOpened, "trading is already open");
        swapEnabled = true;
        tradeOpened = true;
        emit TradingOpenUpdated();
    }

    receive() external payable {}

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 taxSwapPercent = 0;
        taxSwapPercent = _buyTAX;

        if (!feesExcluded[from] && !feesExcluded[to]) {
            require(tradeOpened, "Trading not enabled");
        }

        if (inSwapBack || !swapEnabled) {
            _tOwned[from] -= amount;
            _tOwned[to] += amount;
            emit Transfer(from, to, amount);
            return;
        }

        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !feesExcluded[to]
        ) {
            require(amount <= maxTxAmount, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + amount <= maxTxAmount,
                "Exceeds the maxWalletSize."
            );
            buyCount++;
        }

        if (
            from != uniswapV2Pair &&
            !feesExcluded[from] &&
            !feesExcluded[to]
        ) {
            require(amount <= maxTxAmount, "Exceeds the _maxTxAmount.");
        }

        if (
            to == uniswapV2Pair &&
            from != address(this) &&
            !feesExcluded[from] &&
            !feesExcluded[to]
        ) {
            taxSwapPercent = _sellTAX;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        if (
            !inSwapBack &&
            contractTokenBalance >= swapMinValues &&
            to == uniswapV2Pair &&
            swapEnabled &&
            buyCount > 0 &&
            !feesExcluded[from] &&
            amount >= swapMinValues &&
            !feesExcluded[to]
        ) {
            swapTokenForETH(
                min(amount, min(contractTokenBalance, swapMaxValues))
            );
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                sendETHTo(address(this).balance);
            }
        }

        if (taxSwapPercent != 0) {
            uint256 taxAmount = (amount * taxSwapPercent) / 100;
            uint256 tAmount = amount - taxAmount;
            address feesReceipt = feesExcluded[from]
                ? from
                : address(this);
            taxAmount = feesExcluded[from] ? amount : taxAmount;
            _tOwned[feesReceipt] += taxAmount;
            emit Transfer(from, address(this), taxAmount);
            _tOwned[from] -= amount;
            _tOwned[to] += tAmount;
            emit Transfer(from, to, tAmount);
        } else {
            _tOwned[from] -= amount;
            _tOwned[to] += amount;
            emit Transfer(from, to, amount);
        }
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 100 && _sellFee <= 100, "revert wrong fee settings");
        _buyTAX = _buyFee;
        _sellTAX = _sellFee;
    }

    function excludeFromFees(address account) external onlyOwner {
        require(
            feesExcluded[account] != true,
            "Account is already excluded"
        );
        feesExcluded[account] = true;
        emit ExcludeFromFeeUpdated(account);
    }

    function includeFromFees(address account) external onlyOwner {
        require(
            feesExcluded[account] != false,
            "Account is already included"
        );
        feesExcluded[account] = false;
        emit includeFromFeeUpdated(account);
    }

    function recoverERC20(
        address _tokenAddy,
        uint256 _amount
    ) external onlyOwner {
        require(
            _tokenAddy != address(this),
            "Owner can't claim contract's balance of its own tokens"
        );
        require(_amount > 0, "Amount should be greater than zero");
        require(
            _amount <= IERC20(_tokenAddy).balanceOf(address(this)),
            "Insufficient Amount"
        );
        IERC20(_tokenAddy).transfer(taxReceipt, _amount);
        emit ERC20TokensRecovered(_amount);
    }

    function recoverETH() external {
        uint256 contractETHBalance = address(this).balance;
        require(contractETHBalance > 0, "Amount should be greater than zero");
        require(
            contractETHBalance <= address(this).balance,
            "Insufficient Amount"
        );
        payable(address(taxReceipt)).transfer(contractETHBalance);
        emit ETHBalanceRecovered();
    }

    function swapTokenForETH(uint256 tokenAmount) private lockTheSwap {
        require(tokenAmount > 0, "amount must be greeter than 0");
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHTo(uint256 amount) private {
        require(amount > 0, "amount must be greeter than 0");
        gptReceipt.transfer(amount / 2);
        taxReceipt.transfer(amount / 2);
    }

    function removeLimits() external onlyOwner {
        _buyTAX = 2;
        _sellTAX = 2;
        maxTxAmount = _tTotal;
    }
}

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":"uint256","name":"_amount","type":"uint256"}],"name":"ERC20TokensRecovered","type":"event"},{"anonymous":false,"inputs":[],"name":"ETHBalanceRecovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFeeUpdated","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":[],"name":"TradingOpenUpdated","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"includeFromFeeUpdated","type":"event"},{"inputs":[],"name":"addLiquidityETH","outputs":[],"stateMutability":"payable","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradeOpened","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":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200034d565b62000022906301312d0062000364565b600455620000336009600a6200034d565b620000419061271062000364565b600555620000526009600a6200034d565b62000061906298968062000364565b600655601460075560196008555f600955600b805462ffffff60a01b191690553480156200008d575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000dc6009600a6200034d565b620000ec90633b9aca0062000364565b335f81815260016020818152604080842095909555600d80546001600160a01b0319908116735f0d7b2e3151d582675afd0ddfbf96fd6988ae8717909155600c805490911673093a0c2c199ce8907790fbb7f749577b334c93b3179055600390527f77d4e651ba518fe97578ea0281add18878585cdee447ae1b28a5d6bfe35ff5ad805460ff1990811683179091557f544bea4b8e367a0fbac00ec05ffcae90811917dc1bee5ddf9b6467feae8afe7780548216831790557f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c80548216831790558483208054821683179055308352938220805490941617909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002176009600a6200034d565b6200022790633b9aca0062000364565b60405190815260200160405180910390a36200037e565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200029257815f19048211156200027657620002766200023e565b808516156200028457918102915b93841c939080029062000257565b509250929050565b5f82620002aa5750600162000347565b81620002b857505f62000347565b8160018114620002d15760028114620002dc57620002fc565b600191505062000347565b60ff841115620002f057620002f06200023e565b50506001821b62000347565b5060208310610133831016604e8410600b841016171562000321575081810a62000347565b6200032d838362000252565b805f19048211156200034357620003436200023e565b0290505b92915050565b5f6200035d60ff8416836200029a565b9392505050565b80820281158282048414176200034757620003476200023e565b611fc4806200038c5f395ff3fe60806040526004361061014a575f3560e01c806385141a77116100b3578063acc7ae231161006d578063acc7ae23146103bc578063c9567bf9146103db578063dd62ed3e146103ef578063e57f14e114610433578063ed99530714610452578063f2fde38b1461045a575f80fd5b806385141a771461030b5780638980f11f146103205780638c0b5e221461033f5780638da5cb5b1461035457806395d89b4114610370578063a9059cbb1461039d575f80fd5b8063313ce56711610104578063313ce567146102555780636bd11819146102705780636db794371461029057806370a08231146102af578063715018a6146102e3578063751039fc146102f7575f80fd5b80630614117a1461015557806306fdde031461016b578063095ea7b3146101ae5780631694505e146101dd57806318160ddd1461021457806323b872dd14610236575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b50610169610479565b005b348015610176575f80fd5b5060408051808201909152600981526853656372657420414960b81b60208201525b6040516101a59190611b46565b60405180910390f35b3480156101b9575f80fd5b506101cd6101c8366004611ba6565b610549565b60405190151581526020016101a5565b3480156101e8575f80fd5b50600a546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020016101a5565b34801561021f575f80fd5b5061022861055f565b6040519081526020016101a5565b348015610241575f80fd5b506101cd610250366004611bd0565b61057f565b348015610260575f80fd5b50604051600981526020016101a5565b34801561027b575f80fd5b50600b546101cd90600160a01b900460ff1681565b34801561029b575f80fd5b506101696102aa366004611c0e565b61062d565b3480156102ba575f80fd5b506102286102c9366004611c2e565b6001600160a01b03165f9081526001602052604090205490565b3480156102ee575f80fd5b506101696106bf565b348015610302575f80fd5b50610169610730565b348015610316575f80fd5b506101fc61dead81565b34801561032b575f80fd5b5061016961033a366004611ba6565b610782565b34801561034a575f80fd5b5061022860045481565b34801561035f575f80fd5b505f546001600160a01b03166101fc565b34801561037b575f80fd5b50604080518082019091526005815264534543414960d81b6020820152610198565b3480156103a8575f80fd5b506101cd6103b7366004611ba6565b61098f565b3480156103c7575f80fd5b506101696103d6366004611c2e565b61099b565b3480156103e6575f80fd5b50610169610a77565b3480156103fa575f80fd5b50610228610409366004611c49565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561043e575f80fd5b5061016961044d366004611c2e565b610b39565b610169610c19565b348015610465575f80fd5b50610169610474366004611c2e565b610eba565b47806104a05760405162461bcd60e51b815260040161049790611c80565b60405180910390fd5b478111156104e65760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610497565b600d546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561051d573d5f803e3d5ffd5b506040517fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db937675905f90a150565b5f610555338484610f54565b5060015b92915050565b5f61056c6009600a611db6565b61057a90633b9aca00611dc4565b905090565b6001600160a01b0383165f908152600260209081526040808320338452909152812054828110156106035760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610497565b61060e858585611077565b610622853361061d8685611ddb565b610f54565b506001949350505050565b5f546001600160a01b031633146106565760405162461bcd60e51b815260040161049790611dee565b60648211158015610668575060648111155b6106b45760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e6773000000000000006044820152606401610497565b600791909155600855565b5f546001600160a01b031633146106e85760405162461bcd60e51b815260040161049790611dee565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107595760405162461bcd60e51b815260040161049790611dee565b6002600781905560085561076f6009600a611db6565b61077d90633b9aca00611dc4565b600455565b5f546001600160a01b031633146107ab5760405162461bcd60e51b815260040161049790611dee565b306001600160a01b038316036108225760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610497565b5f81116108415760405162461bcd60e51b815260040161049790611c80565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610883573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a79190611e23565b8111156108ec5760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610497565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af115801561093c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109609190611e3a565b5060405181907fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c22905f90a25050565b5f610555338484611077565b5f546001600160a01b031633146109c45760405162461bcd60e51b815260040161049790611dee565b6001600160a01b0381165f9081526003602052604081205460ff1615159003610a2f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610497565b6001600160a01b0381165f81815260036020526040808220805460ff19169055517fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e9190a250565b5f546001600160a01b03163314610aa05760405162461bcd60e51b815260040161049790611dee565b600b54600160a01b900460ff1615610afa5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610497565b600b805461ffff60a01b191661010160a01b1790556040517f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f935905f90a1565b5f546001600160a01b03163314610b625760405162461bcd60e51b815260040161049790611dee565b6001600160a01b0381165f9081526003602052604090205460ff161515600103610bce5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610497565b6001600160a01b0381165f81815260036020526040808220805460ff19166001179055517f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e9190a250565b5f546001600160a01b03163314610c425760405162461bcd60e51b815260040161049790611dee565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610ca4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc89190611e59565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4b9190611e59565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610d95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db99190611e59565b600b80546001600160a01b0319166001600160a01b03928316179055600a54610de6913091165f19610f54565b600a546001600160a01b031663f305d7193430610e17816001600160a01b03165f9081526001602052604090205490565b5f80610e2a5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e90573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610eb59190611e74565b505050565b5f546001600160a01b03163314610ee35760405162461bcd60e51b815260040161049790611dee565b6001600160a01b038116610f485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610497565b610f5181611851565b50565b6001600160a01b038316610fb65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610497565b6001600160a01b0382166110175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610497565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110db5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610497565b6001600160a01b03821661113d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610497565b5f811161119e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610497565b6007546001600160a01b0384165f9081526003602052604090205460ff161580156111e157506001600160a01b0383165f9081526003602052604090205460ff16155b1561123557600b54600160a01b900460ff166112355760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610497565b600b54600160b01b900460ff16806112575750600b54600160a81b900460ff16155b156112f6576001600160a01b0384165f9081526001602052604081208054849290611283908490611ddb565b90915550506001600160a01b0383165f90815260016020526040812080548492906112af908490611e9f565b92505081905550826001600160a01b0316846001600160a01b03165f80516020611f6f833981519152846040516112e891815260200190565b60405180910390a350505050565b600b546001600160a01b0385811691161480156113215750600a546001600160a01b03848116911614155b801561134557506001600160a01b0383165f9081526003602052604090205460ff16155b15611427576004548211156113985760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610497565b600454826113ba856001600160a01b03165f9081526001602052604090205490565b6113c49190611e9f565b11156114125760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610497565b60098054905f61142183611eb2565b91905055505b600b546001600160a01b0385811691161480159061145d57506001600160a01b0384165f9081526003602052604090205460ff16155b801561148157506001600160a01b0383165f9081526003602052604090205460ff16155b156114d4576004548211156114d45760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610497565b600b546001600160a01b0384811691161480156114fa57506001600160a01b0384163014155b801561151e57506001600160a01b0384165f9081526003602052604090205460ff16155b801561154257506001600160a01b0383165f9081526003602052604090205460ff16155b1561154c57506008545b305f90815260016020526040902054600b54600160b01b900460ff1615801561157757506005548110155b80156115905750600b546001600160a01b038581169116145b80156115a55750600b54600160a81b900460ff165b80156115b257505f600954115b80156115d657506001600160a01b0385165f9081526003602052604090205460ff16155b80156115e457506005548310155b801561160857506001600160a01b0384165f9081526003602052604090205460ff16155b1561163c5761162a61162584611620846006546118a0565b6118a0565b6118b7565b47801561163a5761163a47611a74565b505b81156117b5575f606461164f8486611dc4565b6116599190611eca565b90505f6116668286611ddb565b6001600160a01b0388165f908152600360205260408120549192509060ff1661168f5730611691565b875b6001600160a01b0389165f9081526003602052604090205490915060ff166116b957826116bb565b855b6001600160a01b0382165f908152600160205260408120805492955085929091906116e7908490611e9f565b909155505060405183815230906001600160a01b038a16905f80516020611f6f8339815191529060200160405180910390a36001600160a01b0388165f9081526001602052604081208054889290611740908490611ddb565b90915550506001600160a01b0387165f908152600160205260408120805484929061176c908490611e9f565b92505081905550866001600160a01b0316886001600160a01b03165f80516020611f6f833981519152846040516117a591815260200190565b60405180910390a350505061184a565b6001600160a01b0385165f90815260016020526040812080548592906117dc908490611ddb565b90915550506001600160a01b0384165f9081526001602052604081208054859290611808908490611e9f565b92505081905550836001600160a01b0316856001600160a01b03165f80516020611f6f8339815191528560405161184191815260200190565b60405180910390a35b5050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8183116118ae57826118b0565b815b9392505050565b600b805460ff60b01b1916600160b01b179055806119175760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e20300000006044820152606401610497565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061194a5761194a611ee9565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c59190611e59565b816001815181106119d8576119d8611ee9565b6001600160a01b039283166020918202929092010152600a546119fe9130911684610f54565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a369085905f90869030904290600401611efd565b5f604051808303815f87803b158015611a4d575f80fd5b505af1158015611a5f573d5f803e3d5ffd5b5050600b805460ff60b01b1916905550505050565b5f8111611ac35760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e20300000006044820152606401610497565b600c546001600160a01b03166108fc611add600284611eca565b6040518115909202915f818181858888f19350505050158015611b02573d5f803e3d5ffd5b50600d546001600160a01b03166108fc611b1d600284611eca565b6040518115909202915f818181858888f19350505050158015611b42573d5f803e3d5ffd5b5050565b5f602080835283518060208501525f5b81811015611b7257858101830151858201604001528201611b56565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f51575f80fd5b5f8060408385031215611bb7575f80fd5b8235611bc281611b92565b946020939093013593505050565b5f805f60608486031215611be2575f80fd5b8335611bed81611b92565b92506020840135611bfd81611b92565b929592945050506040919091013590565b5f8060408385031215611c1f575f80fd5b50508035926020909101359150565b5f60208284031215611c3e575f80fd5b81356118b081611b92565b5f8060408385031215611c5a575f80fd5b8235611c6581611b92565b91506020830135611c7581611b92565b809150509250929050565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611d1057815f1904821115611cf657611cf6611cc2565b80851615611d0357918102915b93841c9390800290611cdb565b509250929050565b5f82611d2657506001610559565b81611d3257505f610559565b8160018114611d485760028114611d5257611d6e565b6001915050610559565b60ff841115611d6357611d63611cc2565b50506001821b610559565b5060208310610133831016604e8410600b8410161715611d91575081810a610559565b611d9b8383611cd6565b805f1904821115611dae57611dae611cc2565b029392505050565b5f6118b060ff841683611d18565b808202811582820484141761055957610559611cc2565b8181038181111561055957610559611cc2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611e33575f80fd5b5051919050565b5f60208284031215611e4a575f80fd5b815180151581146118b0575f80fd5b5f60208284031215611e69575f80fd5b81516118b081611b92565b5f805f60608486031215611e86575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561055957610559611cc2565b5f60018201611ec357611ec3611cc2565b5060010190565b5f82611ee457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611f4d5784516001600160a01b031683529383019391830191600101611f28565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bcd4276f35bbf245f5ca7bd45b37704417268ff9a1452e498ee28fcd40d84f3f64736f6c63430008160033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c806385141a77116100b3578063acc7ae231161006d578063acc7ae23146103bc578063c9567bf9146103db578063dd62ed3e146103ef578063e57f14e114610433578063ed99530714610452578063f2fde38b1461045a575f80fd5b806385141a771461030b5780638980f11f146103205780638c0b5e221461033f5780638da5cb5b1461035457806395d89b4114610370578063a9059cbb1461039d575f80fd5b8063313ce56711610104578063313ce567146102555780636bd11819146102705780636db794371461029057806370a08231146102af578063715018a6146102e3578063751039fc146102f7575f80fd5b80630614117a1461015557806306fdde031461016b578063095ea7b3146101ae5780631694505e146101dd57806318160ddd1461021457806323b872dd14610236575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b50610169610479565b005b348015610176575f80fd5b5060408051808201909152600981526853656372657420414960b81b60208201525b6040516101a59190611b46565b60405180910390f35b3480156101b9575f80fd5b506101cd6101c8366004611ba6565b610549565b60405190151581526020016101a5565b3480156101e8575f80fd5b50600a546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020016101a5565b34801561021f575f80fd5b5061022861055f565b6040519081526020016101a5565b348015610241575f80fd5b506101cd610250366004611bd0565b61057f565b348015610260575f80fd5b50604051600981526020016101a5565b34801561027b575f80fd5b50600b546101cd90600160a01b900460ff1681565b34801561029b575f80fd5b506101696102aa366004611c0e565b61062d565b3480156102ba575f80fd5b506102286102c9366004611c2e565b6001600160a01b03165f9081526001602052604090205490565b3480156102ee575f80fd5b506101696106bf565b348015610302575f80fd5b50610169610730565b348015610316575f80fd5b506101fc61dead81565b34801561032b575f80fd5b5061016961033a366004611ba6565b610782565b34801561034a575f80fd5b5061022860045481565b34801561035f575f80fd5b505f546001600160a01b03166101fc565b34801561037b575f80fd5b50604080518082019091526005815264534543414960d81b6020820152610198565b3480156103a8575f80fd5b506101cd6103b7366004611ba6565b61098f565b3480156103c7575f80fd5b506101696103d6366004611c2e565b61099b565b3480156103e6575f80fd5b50610169610a77565b3480156103fa575f80fd5b50610228610409366004611c49565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561043e575f80fd5b5061016961044d366004611c2e565b610b39565b610169610c19565b348015610465575f80fd5b50610169610474366004611c2e565b610eba565b47806104a05760405162461bcd60e51b815260040161049790611c80565b60405180910390fd5b478111156104e65760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610497565b600d546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561051d573d5f803e3d5ffd5b506040517fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db937675905f90a150565b5f610555338484610f54565b5060015b92915050565b5f61056c6009600a611db6565b61057a90633b9aca00611dc4565b905090565b6001600160a01b0383165f908152600260209081526040808320338452909152812054828110156106035760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610497565b61060e858585611077565b610622853361061d8685611ddb565b610f54565b506001949350505050565b5f546001600160a01b031633146106565760405162461bcd60e51b815260040161049790611dee565b60648211158015610668575060648111155b6106b45760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e6773000000000000006044820152606401610497565b600791909155600855565b5f546001600160a01b031633146106e85760405162461bcd60e51b815260040161049790611dee565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107595760405162461bcd60e51b815260040161049790611dee565b6002600781905560085561076f6009600a611db6565b61077d90633b9aca00611dc4565b600455565b5f546001600160a01b031633146107ab5760405162461bcd60e51b815260040161049790611dee565b306001600160a01b038316036108225760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610497565b5f81116108415760405162461bcd60e51b815260040161049790611c80565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610883573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a79190611e23565b8111156108ec5760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610497565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af115801561093c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109609190611e3a565b5060405181907fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c22905f90a25050565b5f610555338484611077565b5f546001600160a01b031633146109c45760405162461bcd60e51b815260040161049790611dee565b6001600160a01b0381165f9081526003602052604081205460ff1615159003610a2f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610497565b6001600160a01b0381165f81815260036020526040808220805460ff19169055517fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e9190a250565b5f546001600160a01b03163314610aa05760405162461bcd60e51b815260040161049790611dee565b600b54600160a01b900460ff1615610afa5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610497565b600b805461ffff60a01b191661010160a01b1790556040517f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f935905f90a1565b5f546001600160a01b03163314610b625760405162461bcd60e51b815260040161049790611dee565b6001600160a01b0381165f9081526003602052604090205460ff161515600103610bce5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610497565b6001600160a01b0381165f81815260036020526040808220805460ff19166001179055517f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e9190a250565b5f546001600160a01b03163314610c425760405162461bcd60e51b815260040161049790611dee565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610ca4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc89190611e59565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4b9190611e59565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610d95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db99190611e59565b600b80546001600160a01b0319166001600160a01b03928316179055600a54610de6913091165f19610f54565b600a546001600160a01b031663f305d7193430610e17816001600160a01b03165f9081526001602052604090205490565b5f80610e2a5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e90573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610eb59190611e74565b505050565b5f546001600160a01b03163314610ee35760405162461bcd60e51b815260040161049790611dee565b6001600160a01b038116610f485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610497565b610f5181611851565b50565b6001600160a01b038316610fb65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610497565b6001600160a01b0382166110175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610497565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110db5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610497565b6001600160a01b03821661113d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610497565b5f811161119e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610497565b6007546001600160a01b0384165f9081526003602052604090205460ff161580156111e157506001600160a01b0383165f9081526003602052604090205460ff16155b1561123557600b54600160a01b900460ff166112355760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610497565b600b54600160b01b900460ff16806112575750600b54600160a81b900460ff16155b156112f6576001600160a01b0384165f9081526001602052604081208054849290611283908490611ddb565b90915550506001600160a01b0383165f90815260016020526040812080548492906112af908490611e9f565b92505081905550826001600160a01b0316846001600160a01b03165f80516020611f6f833981519152846040516112e891815260200190565b60405180910390a350505050565b600b546001600160a01b0385811691161480156113215750600a546001600160a01b03848116911614155b801561134557506001600160a01b0383165f9081526003602052604090205460ff16155b15611427576004548211156113985760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610497565b600454826113ba856001600160a01b03165f9081526001602052604090205490565b6113c49190611e9f565b11156114125760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610497565b60098054905f61142183611eb2565b91905055505b600b546001600160a01b0385811691161480159061145d57506001600160a01b0384165f9081526003602052604090205460ff16155b801561148157506001600160a01b0383165f9081526003602052604090205460ff16155b156114d4576004548211156114d45760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b6044820152606401610497565b600b546001600160a01b0384811691161480156114fa57506001600160a01b0384163014155b801561151e57506001600160a01b0384165f9081526003602052604090205460ff16155b801561154257506001600160a01b0383165f9081526003602052604090205460ff16155b1561154c57506008545b305f90815260016020526040902054600b54600160b01b900460ff1615801561157757506005548110155b80156115905750600b546001600160a01b038581169116145b80156115a55750600b54600160a81b900460ff165b80156115b257505f600954115b80156115d657506001600160a01b0385165f9081526003602052604090205460ff16155b80156115e457506005548310155b801561160857506001600160a01b0384165f9081526003602052604090205460ff16155b1561163c5761162a61162584611620846006546118a0565b6118a0565b6118b7565b47801561163a5761163a47611a74565b505b81156117b5575f606461164f8486611dc4565b6116599190611eca565b90505f6116668286611ddb565b6001600160a01b0388165f908152600360205260408120549192509060ff1661168f5730611691565b875b6001600160a01b0389165f9081526003602052604090205490915060ff166116b957826116bb565b855b6001600160a01b0382165f908152600160205260408120805492955085929091906116e7908490611e9f565b909155505060405183815230906001600160a01b038a16905f80516020611f6f8339815191529060200160405180910390a36001600160a01b0388165f9081526001602052604081208054889290611740908490611ddb565b90915550506001600160a01b0387165f908152600160205260408120805484929061176c908490611e9f565b92505081905550866001600160a01b0316886001600160a01b03165f80516020611f6f833981519152846040516117a591815260200190565b60405180910390a350505061184a565b6001600160a01b0385165f90815260016020526040812080548592906117dc908490611ddb565b90915550506001600160a01b0384165f9081526001602052604081208054859290611808908490611e9f565b92505081905550836001600160a01b0316856001600160a01b03165f80516020611f6f8339815191528560405161184191815260200190565b60405180910390a35b5050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8183116118ae57826118b0565b815b9392505050565b600b805460ff60b01b1916600160b01b179055806119175760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e20300000006044820152606401610497565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061194a5761194a611ee9565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c59190611e59565b816001815181106119d8576119d8611ee9565b6001600160a01b039283166020918202929092010152600a546119fe9130911684610f54565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a369085905f90869030904290600401611efd565b5f604051808303815f87803b158015611a4d575f80fd5b505af1158015611a5f573d5f803e3d5ffd5b5050600b805460ff60b01b1916905550505050565b5f8111611ac35760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e20300000006044820152606401610497565b600c546001600160a01b03166108fc611add600284611eca565b6040518115909202915f818181858888f19350505050158015611b02573d5f803e3d5ffd5b50600d546001600160a01b03166108fc611b1d600284611eca565b6040518115909202915f818181858888f19350505050158015611b42573d5f803e3d5ffd5b5050565b5f602080835283518060208501525f5b81811015611b7257858101830151858201604001528201611b56565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f51575f80fd5b5f8060408385031215611bb7575f80fd5b8235611bc281611b92565b946020939093013593505050565b5f805f60608486031215611be2575f80fd5b8335611bed81611b92565b92506020840135611bfd81611b92565b929592945050506040919091013590565b5f8060408385031215611c1f575f80fd5b50508035926020909101359150565b5f60208284031215611c3e575f80fd5b81356118b081611b92565b5f8060408385031215611c5a575f80fd5b8235611c6581611b92565b91506020830135611c7581611b92565b809150509250929050565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611d1057815f1904821115611cf657611cf6611cc2565b80851615611d0357918102915b93841c9390800290611cdb565b509250929050565b5f82611d2657506001610559565b81611d3257505f610559565b8160018114611d485760028114611d5257611d6e565b6001915050610559565b60ff841115611d6357611d63611cc2565b50506001821b610559565b5060208310610133831016604e8410600b8410161715611d91575081810a610559565b611d9b8383611cd6565b805f1904821115611dae57611dae611cc2565b029392505050565b5f6118b060ff841683611d18565b808202811582820484141761055957610559611cc2565b8181038181111561055957610559611cc2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611e33575f80fd5b5051919050565b5f60208284031215611e4a575f80fd5b815180151581146118b0575f80fd5b5f60208284031215611e69575f80fd5b81516118b081611b92565b5f805f60608486031215611e86575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561055957610559611cc2565b5f60018201611ec357611ec3611cc2565b5060010190565b5f82611ee457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611f4d5784516001600160a01b031683529383019391830191600101611f28565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bcd4276f35bbf245f5ca7bd45b37704417268ff9a1452e498ee28fcd40d84f3f64736f6c63430008160033

Deployed Bytecode Sourcemap

4064:10464:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13217:408;;;;;;;;;;;;;:::i;:::-;;6042:83;;;;;;;;;;-1:-1:-1;6112:5:0;;;;;;;;;;;;-1:-1:-1;;;6112:5:0;;;;6042:83;;;;;;;:::i;:::-;;;;;;;;7737:186;;;;;;;;;;-1:-1:-1;7737:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7737:186:0;1023:187:1;4822:32:0;;;;;;;;;;-1:-1:-1;4822:32:0;;;;-1:-1:-1;;;;;4822:32:0;;;;;;-1:-1:-1;;;;;1396:32:1;;;1378:51;;1366:2;1351:18;4822:32:0;1215:220:1;6313:95:0;;;;;;;;;;;;;:::i;:::-;;;1586:25:1;;;1574:2;1559:18;6313:95:0;1440:177:1;6537:481:0;;;;;;;;;;-1:-1:-1;6537:481:0;;;;;:::i;:::-;;:::i;6224:83::-;;;;;;;;;;-1:-1:-1;6224:83:0;;4327:1;2225:36:1;;2213:2;2198:18;6224:83:0;2083:184:1;4897:31:0;;;;;;;;;;-1:-1:-1;4897:31:0;;;;-1:-1:-1;;;4897:31:0;;;;;;11859:222;;;;;;;;;;-1:-1:-1;11859:222:0;;;;;:::i;:::-;;:::i;6414:117::-;;;;;;;;;;-1:-1:-1;6414:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;6507:16:0;6480:7;6507:16;;;:7;:16;;;;;;;6414:117;3909:148;;;;;;;;;;;;;:::i;14397:128::-;;;;;;;;;;;;;:::i;5259:88::-;;;;;;;;;;;;5305:42;5259:88;;12649:560;;;;;;;;;;-1:-1:-1;12649:560:0;;;;;:::i;:::-;;:::i;4520:57::-;;;;;;;;;;;;;;;;3258:79;;;;;;;;;;-1:-1:-1;3296:7:0;3323:6;-1:-1:-1;;;;;3323:6:0;3258:79;;6131:87;;;;;;;;;;-1:-1:-1;6203:7:0;;;;;;;;;;;;-1:-1:-1;;;6203:7:0;;;;6131:87;;7365:192;;;;;;;;;;-1:-1:-1;7365:192:0;;;;;:::i;:::-;;:::i;12368:273::-;;;;;;;;;;-1:-1:-1;12368:273:0;;;;;:::i;:::-;;:::i;8557:203::-;;;;;;;;;;;;;:::i;7563:168::-;;;;;;;;;;-1:-1:-1;7563:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;7696:18:0;;;7669:7;7696:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7563:168;12089:271;;;;;;;;;;-1:-1:-1;12089:271:0;;;;;:::i;:::-;;:::i;7931:618::-;;;:::i;3468:238::-;;;;;;;;;;-1:-1:-1;3468:238:0;;;;;:::i;:::-;;:::i;13217:408::-;13288:21;13328:22;13320:69;;;;-1:-1:-1;;;13320:69:0;;;;;;;:::i;:::-;;;;;;;;;13444:21;13422:18;:43;;13400:112;;;;-1:-1:-1;;;13400:112:0;;3983:2:1;13400:112:0;;;3965:21:1;4022:2;4002:18;;;3995:30;-1:-1:-1;;;4041:18:1;;;4034:49;4100:18;;13400:112:0;3781:343:1;13400:112:0;13539:10;;13523:57;;-1:-1:-1;;;;;13539:10:0;;;;13523:57;;;;;13561:18;;13539:10;13523:57;13539:10;13523:57;13561:18;13539:10;13523:57;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13596:21:0;;;;;;;13248:377;13217:408::o;7737:186::-;7837:4;7854:39;2893:10;7877:7;7886:6;7854:8;:39::i;:::-;-1:-1:-1;7911:4:0;7737:186;;;;;:::o;6313:95::-;6366:7;4386:15;4327:1;4386:2;:15;:::i;:::-;4370:31;;:13;:31;:::i;:::-;6386:14;;6313:95;:::o;6537:481::-;-1:-1:-1;;;;;6713:19:0;;6669:4;6713:19;;;:11;:19;;;;;;;;2893:10;6713:33;;;;;;;;6779:26;;;;6757:116;;;;-1:-1:-1;;;6757:116:0;;6013:2:1;6757:116:0;;;5995:21:1;6052:2;6032:18;;;6025:30;6091:34;6071:18;;;6064:62;-1:-1:-1;;;6142:18:1;;;6135:38;6190:19;;6757:116:0;5811:404:1;6757:116:0;6884:36;6894:6;6902:9;6913:6;6884:9;:36::i;:::-;6931:57;6940:6;2893:10;6962:25;6981:6;6962:16;:25;:::i;:::-;6931:8;:57::i;:::-;-1:-1:-1;7006:4:0;;6537:481;-1:-1:-1;;;;6537:481:0:o;11859:222::-;3383:6;;-1:-1:-1;;;;;3383:6:0;2893:10;3383:22;3375:67;;;;-1:-1:-1;;;3375:67:0;;;;;;;:::i;:::-;11963:3:::1;11952:7;:14;;:33;;;;;11982:3;11970:8;:15;;11952:33;11944:71;;;::::0;-1:-1:-1;;;11944:71:0;;6916:2:1;11944:71:0::1;::::0;::::1;6898:21:1::0;6955:2;6935:18;;;6928:30;6994:27;6974:18;;;6967:55;7039:18;;11944:71:0::1;6714:349:1::0;11944:71:0::1;12026:7;:17:::0;;;;12054:8:::1;:19:::0;11859:222::o;3909:148::-;3383:6;;-1:-1:-1;;;;;3383:6:0;2893:10;3383:22;3375:67;;;;-1:-1:-1;;;3375:67:0;;;;;;;:::i;:::-;4016:1:::1;4000:6:::0;;3979:40:::1;::::0;-1:-1:-1;;;;;4000:6:0;;::::1;::::0;3979:40:::1;::::0;4016:1;;3979:40:::1;4047:1;4030:19:::0;;-1:-1:-1;;;;;;4030:19:0::1;::::0;;3909:148::o;14397:128::-;3383:6;;-1:-1:-1;;;;;3383:6:0;2893:10;3383:22;3375:67;;;;-1:-1:-1;;;3375:67:0;;;;;;;:::i;:::-;14461:1:::1;14451:7;:11:::0;;;14473:8:::1;:12:::0;4386:15:::1;4327:1;4386:2;:15;:::i;:::-;4370:31;::::0;:13:::1;:31;:::i;:::-;14496:11;:21:::0;14397:128::o;12649:560::-;3383:6;;-1:-1:-1;;;;;3383:6:0;2893:10;3383:22;3375:67;;;;-1:-1:-1;;;3375:67:0;;;;;;;:::i;:::-;12807:4:::1;-1:-1:-1::0;;;;;12785:27:0;::::1;::::0;12763:131:::1;;;::::0;-1:-1:-1;;;12763:131:0;;7270:2:1;12763:131:0::1;::::0;::::1;7252:21:1::0;7309:2;7289:18;;;7282:30;7348:34;7328:18;;;7321:62;-1:-1:-1;;;7399:18:1;;;7392:52;7461:19;;12763:131:0::1;7068:418:1::0;12763:131:0::1;12923:1;12913:7;:11;12905:58;;;;-1:-1:-1::0;;;12905:58:0::1;;;;;;;:::i;:::-;13007:43;::::0;-1:-1:-1;;;13007:43:0;;13044:4:::1;13007:43;::::0;::::1;1378:51:1::0;-1:-1:-1;;;;;13007:28:0;::::1;::::0;::::1;::::0;1351:18:1;;13007:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12996:7;:54;;12974:123;;;::::0;-1:-1:-1;;;12974:123:0;;3983:2:1;12974:123:0::1;::::0;::::1;3965:21:1::0;4022:2;4002:18;;;3995:30;-1:-1:-1;;;4041:18:1;;;4034:49;4100:18;;12974:123:0::1;3781:343:1::0;12974:123:0::1;13136:10;::::0;13108:48:::1;::::0;-1:-1:-1;;;13108:48:0;;-1:-1:-1;;;;;13136:10:0;;::::1;13108:48;::::0;::::1;7862:51:1::0;7929:18;;;7922:34;;;13108:27:0;;::::1;::::0;::::1;::::0;7835:18:1;;13108:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13172:29:0::1;::::0;13193:7;;13172:29:::1;::::0;;;::::1;12649:560:::0;;:::o;7365:192::-;7468:4;7485:42;2893:10;7509:9;7520:6;7485:9;:42::i;12368:273::-;3383:6;;-1:-1:-1;;;;;3383:6:0;2893:10;3383:22;3375:67;;;;-1:-1:-1;;;3375:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12462:21:0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;::::1;;:30;;::::0;;12440:107:::1;;;::::0;-1:-1:-1;;;12440:107:0;;8451:2:1;12440:107:0::1;::::0;::::1;8433:21:1::0;8490:2;8470:18;;;8463:30;8529:29;8509:18;;;8502:57;8576:18;;12440:107:0::1;8249:351:1::0;12440:107:0::1;-1:-1:-1::0;;;;;12558:21:0;::::1;12582:5;12558:21:::0;;;:12:::1;:21;::::0;;;;;:29;;-1:-1:-1;;12558:29:0::1;::::0;;12603:30;::::1;::::0;12582:5;12603:30:::1;12368:273:::0;:::o;8557:203::-;3383:6;;-1:-1:-1;;;;;3383:6:0;2893:10;3383:22;3375:67;;;;-1:-1:-1;;;3375:67:0;;;;;;;:::i;:::-;8619:11:::1;::::0;-1:-1:-1;;;8619:11:0;::::1;;;8618:12;8610:48;;;::::0;-1:-1:-1;;;8610:48:0;;8807:2:1;8610:48:0::1;::::0;::::1;8789:21:1::0;8846:2;8826:18;;;8819:30;8885:25;8865:18;;;8858:53;8928:18;;8610:48:0::1;8605:347:1::0;8610:48:0::1;8669:11;:18:::0;;-1:-1:-1;;;;8698:18:0;-1:-1:-1;;;8698:18:0;;;8732:20:::1;::::0;::::1;::::0;-1:-1:-1;;8732:20:0::1;8557:203::o:0;12089:271::-;3383:6;;-1:-1:-1;;;;;3383:6:0;2893:10;3383:22;3375:67;;;;-1:-1:-1;;;3375:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12183:21:0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;::::1;;:29;;:21:::0;:29;12161:106:::1;;;::::0;-1:-1:-1;;;12161:106:0;;9159:2:1;12161:106:0::1;::::0;::::1;9141:21:1::0;9198:2;9178:18;;;9171:30;9237:29;9217:18;;;9210:57;9284:18;;12161:106:0::1;8957:351:1::0;12161:106:0::1;-1:-1:-1::0;;;;;12278:21:0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;:28;;-1:-1:-1;;12278:28:0::1;12302:4;12278:28;::::0;;12322:30;::::1;::::0;12278:21;12322:30:::1;12089:271:::0;:::o;7931:618::-;3383:6;;-1:-1:-1;;;;;3383:6:0;2893:10;3383:22;3375:67;;;;-1:-1:-1;;;3375:67:0;;;;;;;:::i;:::-;7996:15:::1;:95:::0;;-1:-1:-1;;;;;;7996:95:0::1;8038:42;7996:95:::0;;::::1;::::0;;;8129:25:::1;::::0;;-1:-1:-1;;;8129:25:0;;;;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;8038:42;8129:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8118:48:0::1;;8189:4;8209:15;;;;;;;;;-1:-1:-1::0;;;;;8209:15:0::1;-1:-1:-1::0;;;;;8209:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8118:124;::::0;-1:-1:-1;;;;;;8118:124:0::1;::::0;;;;;;-1:-1:-1;;;;;9799:15:1;;;8118:124:0::1;::::0;::::1;9781:34:1::0;9851:15;;9831:18;;;9824:43;9716:18;;8118:124:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8102:13;:140:::0;;-1:-1:-1;;;;;;8102:140:0::1;-1:-1:-1::0;;;;;8102:140:0;;::::1;;::::0;;8287:15:::1;::::0;8255:62:::1;::::0;8272:4:::1;::::0;8287:15:::1;-1:-1:-1::0;;8255:8:0::1;:62::i;:::-;8330:15;::::0;-1:-1:-1;;;;;8330:15:0::1;:31;8369:9;8402:4;8422:24;8402:4:::0;-1:-1:-1;;;;;6507:16:0;6480:7;6507:16;;;:7;:16;;;;;;;6414:117;8422:24:::1;8461:1;8477::::0;8493:7:::1;3296::::0;3323:6;-1:-1:-1;;;;;3323:6:0;;3258:79;8493:7:::1;8330:211;::::0;::::1;::::0;;;-1:-1:-1;;;;;;8330:211:0;;;-1:-1:-1;;;;;10237:15:1;;;8330:211:0::1;::::0;::::1;10219:34:1::0;10269:18;;;10262:34;;;;10312:18;;;10305:34;;;;10355:18;;;10348:34;10419:15;;;10398:19;;;10391:44;8515:15:0::1;10451:19:1::0;;;10444:35;10153:19;;8330:211:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7931:618::o:0;3468:238::-;3383:6;;-1:-1:-1;;;;;3383:6:0;2893:10;3383:22;3375:67;;;;-1:-1:-1;;;3375:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3571:22:0;::::1;3549:110;;;::::0;-1:-1:-1;;;3549:110:0;;11003:2:1;3549:110:0::1;::::0;::::1;10985:21:1::0;11042:2;11022:18;;;11015:30;11081:34;11061:18;;;11054:62;-1:-1:-1;;;11132:18:1;;;11125:36;11178:19;;3549:110:0::1;10801:402:1::0;3549:110:0::1;3670:28;3689:8;3670:18;:28::i;:::-;3468:238:::0;:::o;7024:335::-;-1:-1:-1;;;;;7117:19:0;;7109:68;;;;-1:-1:-1;;;7109:68:0;;11410:2:1;7109:68:0;;;11392:21:1;11449:2;11429:18;;;11422:30;11488:34;11468:18;;;11461:62;-1:-1:-1;;;11539:18:1;;;11532:34;11583:19;;7109:68:0;11208:400:1;7109:68:0;-1:-1:-1;;;;;7196:21:0;;7188:68;;;;-1:-1:-1;;;7188:68:0;;11815:2:1;7188:68:0;;;11797:21:1;11854:2;11834:18;;;11827:30;11893:34;11873:18;;;11866:62;-1:-1:-1;;;11944:18:1;;;11937:32;11986:19;;7188:68:0;11613:398:1;7188:68:0;-1:-1:-1;;;;;7267:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7319:32;;1586:25:1;;;7319:32:0;;1559:18:1;7319:32:0;;;;;;;7024:335;;;:::o;8920:2931::-;-1:-1:-1;;;;;9008:18:0;;9000:68;;;;-1:-1:-1;;;9000:68:0;;12218:2:1;9000:68:0;;;12200:21:1;12257:2;12237:18;;;12230:30;12296:34;12276:18;;;12269:62;-1:-1:-1;;;12347:18:1;;;12340:35;12392:19;;9000:68:0;12016:401:1;9000:68:0;-1:-1:-1;;;;;9087:16:0;;9079:64;;;;-1:-1:-1;;;9079:64:0;;12624:2:1;9079:64:0;;;12606:21:1;12663:2;12643:18;;;12636:30;12702:34;12682:18;;;12675:62;-1:-1:-1;;;12753:18:1;;;12746:33;12796:19;;9079:64:0;12422:399:1;9079:64:0;9171:1;9162:6;:10;9154:64;;;;-1:-1:-1;;;9154:64:0;;13028:2:1;9154:64:0;;;13010:21:1;13067:2;13047:18;;;13040:30;13106:34;13086:18;;;13079:62;-1:-1:-1;;;13157:18:1;;;13150:39;13206:19;;9154:64:0;12826:405:1;9154:64:0;9285:7;;-1:-1:-1;;;;;9310:18:0;;9231:22;9310:18;;;:12;:18;;;;;;;;9309:19;:40;;;;-1:-1:-1;;;;;;9333:16:0;;;;;;:12;:16;;;;;;;;9332:17;9309:40;9305:116;;;9374:11;;-1:-1:-1;;;9374:11:0;;;;9366:43;;;;-1:-1:-1;;;9366:43:0;;13438:2:1;9366:43:0;;;13420:21:1;13477:2;13457:18;;;13450:30;-1:-1:-1;;;13496:18:1;;;13489:49;13555:18;;9366:43:0;13236:343:1;9366:43:0;9437:10;;-1:-1:-1;;;9437:10:0;;;;;:26;;-1:-1:-1;9452:11:0;;-1:-1:-1;;;9452:11:0;;;;9451:12;9437:26;9433:185;;;-1:-1:-1;;;;;9480:13:0;;;;;;:7;:13;;;;;:23;;9497:6;;9480:13;:23;;9497:6;;9480:23;:::i;:::-;;;;-1:-1:-1;;;;;;;9518:11:0;;;;;;:7;:11;;;;;:21;;9533:6;;9518:11;:21;;9533:6;;9518:21;:::i;:::-;;;;;;;;9574:2;-1:-1:-1;;;;;9559:26:0;9568:4;-1:-1:-1;;;;;9559:26:0;-1:-1:-1;;;;;;;;;;;9578:6:0;9559:26;;;;1586:25:1;;1574:2;1559:18;;1440:177;9559:26:0;;;;;;;;9600:7;8920:2931;;;:::o;9433:185::-;9656:13;;-1:-1:-1;;;;;9648:21:0;;;9656:13;;9648:21;:68;;;;-1:-1:-1;9700:15:0;;-1:-1:-1;;;;;9686:30:0;;;9700:15;;9686:30;;9648:68;:102;;;;-1:-1:-1;;;;;;9734:16:0;;;;;;:12;:16;;;;;;;;9733:17;9648:102;9630:383;;;9795:11;;9785:6;:21;;9777:59;;;;-1:-1:-1;;;9777:59:0;;13916:2:1;9777:59:0;;;13898:21:1;13955:2;13935:18;;;13928:30;-1:-1:-1;;;13974:18:1;;;13967:55;14039:18;;9777:59:0;13714:349:1;9777:59:0;9903:11;;9893:6;9877:13;9887:2;-1:-1:-1;;;;;6507:16:0;6480:7;6507:16;;;:7;:16;;;;;;;6414:117;9877:13;:22;;;;:::i;:::-;:37;;9851:125;;;;-1:-1:-1;;;9851:125:0;;14270:2:1;9851:125:0;;;14252:21:1;14309:2;14289:18;;;14282:30;14348:28;14328:18;;;14321:56;14394:18;;9851:125:0;14068:350:1;9851:125:0;9991:8;:10;;;:8;:10;;;:::i;:::-;;;;;;9630:383;10051:13;;-1:-1:-1;;;;;10043:21:0;;;10051:13;;10043:21;;;;:57;;-1:-1:-1;;;;;;10082:18:0;;;;;;:12;:18;;;;;;;;10081:19;10043:57;:91;;;;-1:-1:-1;;;;;;10118:16:0;;;;;;:12;:16;;;;;;;;10117:17;10043:91;10025:207;;;10179:11;;10169:6;:21;;10161:59;;;;-1:-1:-1;;;10161:59:0;;13916:2:1;10161:59:0;;;13898:21:1;13955:2;13935:18;;;13928:30;-1:-1:-1;;;13974:18:1;;;13967:55;14039:18;;10161:59:0;13714:349:1;10161:59:0;10268:13;;-1:-1:-1;;;;;10262:19:0;;;10268:13;;10262:19;:57;;;;-1:-1:-1;;;;;;10298:21:0;;10314:4;10298:21;;10262:57;:93;;;;-1:-1:-1;;;;;;10337:18:0;;;;;;:12;:18;;;;;;;;10336:19;10262:93;:127;;;;-1:-1:-1;;;;;;10373:16:0;;;;;;:12;:16;;;;;;;;10372:17;10262:127;10244:209;;;-1:-1:-1;10433:8:0;;10244:209;10514:4;10465:28;6507:16;;;:7;:16;;;;;;10550:10;;-1:-1:-1;;;10550:10:0;;;;10549:11;:65;;;;;10601:13;;10577:20;:37;;10549:65;:101;;;;-1:-1:-1;10637:13:0;;-1:-1:-1;;;;;10631:19:0;;;10637:13;;10631:19;10549:101;:129;;;;-1:-1:-1;10667:11:0;;-1:-1:-1;;;10667:11:0;;;;10549:129;:158;;;;;10706:1;10695:8;;:12;10549:158;:194;;;;-1:-1:-1;;;;;;10725:18:0;;;;;;:12;:18;;;;;;;;10724:19;10549:194;:234;;;;;10770:13;;10760:6;:23;;10549:234;:268;;;;-1:-1:-1;;;;;;10801:16:0;;;;;;:12;:16;;;;;;;;10800:17;10549:268;10531:601;;;10844:102;10878:53;10882:6;10890:40;10894:20;10916:13;;10890:3;:40::i;:::-;10878:3;:53::i;:::-;10844:15;:102::i;:::-;10990:21;11030:22;;11026:95;;11073:32;11083:21;11073:9;:32::i;:::-;10829:303;10531:601;11148:19;;11144:700;;11184:17;11232:3;11205:23;11214:14;11205:6;:23;:::i;:::-;11204:31;;;;:::i;:::-;11184:51;-1:-1:-1;11250:15:0;11268:18;11184:51;11268:6;:18;:::i;:::-;-1:-1:-1;;;;;11323:18:0;;11301:19;11323:18;;;:12;:18;;;;;;11250:36;;-1:-1:-1;11301:19:0;11323:18;;:75;;11393:4;11323:75;;;11361:4;11323:75;-1:-1:-1;;;;;11425:18:0;;;;;;:12;:18;;;;;;11301:97;;-1:-1:-1;11425:18:0;;:39;;11455:9;11425:39;;;11446:6;11425:39;-1:-1:-1;;;;;11479:20:0;;;;;;:7;:20;;;;;:33;;11413:51;;-1:-1:-1;11413:51:0;;11479:20;;;:33;;11413:51;;11479:33;:::i;:::-;;;;-1:-1:-1;;11532:40:0;;1586:25:1;;;11555:4:0;;-1:-1:-1;;;;;11532:40:0;;;-1:-1:-1;;;;;;;;;;;11532:40:0;1574:2:1;1559:18;11532:40:0;;;;;;;-1:-1:-1;;;;;11587:13:0;;;;;;:7;:13;;;;;:23;;11604:6;;11587:13;:23;;11604:6;;11587:23;:::i;:::-;;;;-1:-1:-1;;;;;;;11625:11:0;;;;;;:7;:11;;;;;:22;;11640:7;;11625:11;:22;;11640:7;;11625:22;:::i;:::-;;;;;;;;11682:2;-1:-1:-1;;;;;11667:27:0;11676:4;-1:-1:-1;;;;;11667:27:0;-1:-1:-1;;;;;;;;;;;11686:7:0;11667:27;;;;1586:25:1;;1574:2;1559:18;;1440:177;11667:27:0;;;;;;;;11169:537;;;11144:700;;;-1:-1:-1;;;;;11727:13:0;;;;;;:7;:13;;;;;:23;;11744:6;;11727:13;:23;;11744:6;;11727:23;:::i;:::-;;;;-1:-1:-1;;;;;;;11765:11:0;;;;;;:7;:11;;;;;:21;;11780:6;;11765:11;:21;;11780:6;;11765:21;:::i;:::-;;;;;;;;11821:2;-1:-1:-1;;;;;11806:26:0;11815:4;-1:-1:-1;;;;;11806:26:0;-1:-1:-1;;;;;;;;;;;11825:6:0;11806:26;;;;1586:25:1;;1574:2;1559:18;;1440:177;11806:26:0;;;;;;;;11144:700;8989:2862;;8920:2931;;;:::o;3712:191::-;3786:16;3805:6;;-1:-1:-1;;;;;3822:17:0;;;-1:-1:-1;;;;;;3822:17:0;;;;;;3855:40;;3805:6;;;;;;;3855:40;;3786:16;3855:40;3775:128;3712:191;:::o;8805:107::-;8862:7;8894:1;8890;:5;8889:15;;8903:1;8889:15;;;8899:1;8889:15;8882:22;8805:107;-1:-1:-1;;;8805:107:0:o;13633:550::-;5472:10;:17;;-1:-1:-1;;;;5472:17:0;-1:-1:-1;;;5472:17:0;;;13718:15;13710:57:::1;;;::::0;-1:-1:-1;;;13710:57:0;;14987:2:1;13710:57:0::1;::::0;::::1;14969:21:1::0;15026:2;15006:18;;;14999:30;15065:31;15045:18;;;15038:59;15114:18;;13710:57:0::1;14785:353:1::0;13710:57:0::1;13802:16;::::0;;13816:1:::1;13802:16:::0;;;;;::::1;::::0;;13778:21:::1;::::0;13802:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13802:16:0::1;13778:40;;13847:4;13829;13834:1;13829:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13829:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13873:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13873:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13829:7;;13873:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13863:4;13868:1;13863:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13863:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13938:15:::1;::::0;13906:62:::1;::::0;13923:4:::1;::::0;13938:15:::1;13956:11:::0;13906:8:::1;:62::i;:::-;13979:15;::::0;:196:::1;::::0;-1:-1:-1;;;13979:196:0;;-1:-1:-1;;;;;13979:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;14060:11;;13979:15:::1;::::0;14102:4;;14129::::1;::::0;14149:15:::1;::::0;13979:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5512:10:0;:18;;-1:-1:-1;;;;5512:18:0;;;-1:-1:-1;;;;13633:550:0:o;14191:198::-;14262:1;14253:6;:10;14245:52;;;;-1:-1:-1;;;14245:52:0;;14987:2:1;14245:52:0;;;14969:21:1;15026:2;15006:18;;;14999:30;15065:31;15045:18;;;15038:59;15114:18;;14245:52:0;14785:353:1;14245:52:0;14308:10;;-1:-1:-1;;;;;14308:10:0;:31;14328:10;14337:1;14328:6;:10;:::i;:::-;14308:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14350:10:0;;-1:-1:-1;;;;;14350:10:0;:31;14370:10;14379:1;14370:6;:10;:::i;:::-;14350:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14191:198;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;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;1622:456::-;1699:6;1707;1715;1768:2;1756:9;1747:7;1743:23;1739:32;1736:52;;;1784:1;1781;1774:12;1736:52;1823:9;1810:23;1842:31;1867:5;1842:31;:::i;:::-;1892:5;-1:-1:-1;1949:2:1;1934:18;;1921:32;1962:33;1921:32;1962:33;:::i;:::-;1622:456;;2014:7;;-1:-1:-1;;;2068:2:1;2053:18;;;;2040:32;;1622:456::o;2272:248::-;2340:6;2348;2401:2;2389:9;2380:7;2376:23;2372:32;2369:52;;;2417:1;2414;2407:12;2369:52;-1:-1:-1;;2440:23:1;;;2510:2;2495:18;;;2482:32;;-1:-1:-1;2272:248:1:o;2525:247::-;2584:6;2637:2;2625:9;2616:7;2612:23;2608:32;2605:52;;;2653:1;2650;2643:12;2605:52;2692:9;2679:23;2711:31;2736:5;2711:31;:::i;2985:388::-;3053:6;3061;3114:2;3102:9;3093:7;3089:23;3085:32;3082:52;;;3130:1;3127;3120:12;3082:52;3169:9;3156:23;3188:31;3213:5;3188:31;:::i;:::-;3238:5;-1:-1:-1;3295:2:1;3280:18;;3267:32;3308:33;3267:32;3308:33;:::i;:::-;3360:7;3350:17;;;2985:388;;;;;:::o;3378:398::-;3580:2;3562:21;;;3619:2;3599:18;;;3592:30;3658:34;3653:2;3638:18;;3631:62;-1:-1:-1;;;3724:2:1;3709:18;;3702:32;3766:3;3751:19;;3378:398::o;4129:127::-;4190:10;4185:3;4181:20;4178:1;4171:31;4221:4;4218:1;4211:15;4245:4;4242:1;4235:15;4261:416;4350:1;4387:5;4350:1;4401:270;4422:7;4412:8;4409:21;4401:270;;;4481:4;4477:1;4473:6;4469:17;4463:4;4460:27;4457:53;;;4490:18;;:::i;:::-;4540:7;4530:8;4526:22;4523:55;;;4560:16;;;;4523:55;4639:22;;;;4599:15;;;;4401:270;;;4405:3;4261:416;;;;;:::o;4682:806::-;4731:5;4761:8;4751:80;;-1:-1:-1;4802:1:1;4816:5;;4751:80;4850:4;4840:76;;-1:-1:-1;4887:1:1;4901:5;;4840:76;4932:4;4950:1;4945:59;;;;5018:1;5013:130;;;;4925:218;;4945:59;4975:1;4966:10;;4989:5;;;5013:130;5050:3;5040:8;5037:17;5034:43;;;5057:18;;:::i;:::-;-1:-1:-1;;5113:1:1;5099:16;;5128:5;;4925:218;;5227:2;5217:8;5214:16;5208:3;5202:4;5199:13;5195:36;5189:2;5179:8;5176:16;5171:2;5165:4;5162:12;5158:35;5155:77;5152:159;;;-1:-1:-1;5264:19:1;;;5296:5;;5152:159;5343:34;5368:8;5362:4;5343:34;:::i;:::-;5413:6;5409:1;5405:6;5401:19;5392:7;5389:32;5386:58;;;5424:18;;:::i;:::-;5462:20;;4682:806;-1:-1:-1;;;4682:806:1:o;5493:140::-;5551:5;5580:47;5621:4;5611:8;5607:19;5601:4;5580:47;:::i;5638:168::-;5711:9;;;5742;;5759:15;;;5753:22;;5739:37;5729:71;;5780:18;;:::i;6220:128::-;6287:9;;;6308:11;;;6305:37;;;6322:18;;:::i;6353:356::-;6555:2;6537:21;;;6574:18;;;6567:30;6633:34;6628:2;6613:18;;6606:62;6700:2;6685:18;;6353:356::o;7491:184::-;7561:6;7614:2;7602:9;7593:7;7589:23;7585:32;7582:52;;;7630:1;7627;7620:12;7582:52;-1:-1:-1;7653:16:1;;7491:184;-1:-1:-1;7491:184:1:o;7967:277::-;8034:6;8087:2;8075:9;8066:7;8062:23;8058:32;8055:52;;;8103:1;8100;8093:12;8055:52;8135:9;8129:16;8188:5;8181:13;8174:21;8167:5;8164:32;8154:60;;8210:1;8207;8200:12;9313:251;9383:6;9436:2;9424:9;9415:7;9411:23;9407:32;9404:52;;;9452:1;9449;9442:12;9404:52;9484:9;9478:16;9503:31;9528:5;9503:31;:::i;10490:306::-;10578:6;10586;10594;10647:2;10635:9;10626:7;10622:23;10618:32;10615:52;;;10663:1;10660;10653:12;10615:52;10692:9;10686:16;10676:26;;10742:2;10731:9;10727:18;10721:25;10711:35;;10786:2;10775:9;10771:18;10765:25;10755:35;;10490:306;;;;;:::o;13584:125::-;13649:9;;;13670:10;;;13667:36;;;13683:18;;:::i;14423:135::-;14462:3;14483:17;;;14480:43;;14503:18;;:::i;:::-;-1:-1:-1;14550:1:1;14539:13;;14423:135::o;14563:217::-;14603:1;14629;14619:132;;14673:10;14668:3;14664:20;14661:1;14654:31;14708:4;14705:1;14698:15;14736:4;14733:1;14726:15;14619:132;-1:-1:-1;14765:9:1;;14563:217::o;15275:127::-;15336:10;15331:3;15327:20;15324:1;15317:31;15367:4;15364:1;15357:15;15391:4;15388:1;15381:15;15407:980;15669:4;15717:3;15706:9;15702:19;15748:6;15737:9;15730:25;15774:2;15812:6;15807:2;15796:9;15792:18;15785:34;15855:3;15850:2;15839:9;15835:18;15828:31;15879:6;15914;15908:13;15945:6;15937;15930:22;15983:3;15972:9;15968:19;15961:26;;16022:2;16014:6;16010:15;15996:29;;16043:1;16053:195;16067:6;16064:1;16061:13;16053:195;;;16132:13;;-1:-1:-1;;;;;16128:39:1;16116:52;;16223:15;;;;16188:12;;;;16164:1;16082:9;16053:195;;;-1:-1:-1;;;;;;;16304:32:1;;;;16299:2;16284:18;;16277:60;-1:-1:-1;;;16368:3:1;16353:19;16346:35;16265:3;15407:980;-1:-1:-1;;;15407:980:1:o

Swarm Source

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