ETH Price: $2,034.49 (+4.52%)
 

Overview

Max Total Supply

100,000,000 0xL

Holders

52

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
ZeroxLayer

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-04-17
*/

/*
0xLayer
Omnichain communication| Interoperability| Decentralized infrastructure|
https://0xlayer.cc
https://t.me/ZeroxLayerPortal
https://twitter.com/0xLayerERC20
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

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 IUniswapV2Router {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

contract Ownable {
    address private _owner;

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

contract ZeroxLayer is IERC20, Ownable { 
    string private constant _name = "0xLayer"; 
    string private constant _symbol = "0xL";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 100_000_000 * 10**_decimals; 

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

    mapping (address => uint256) private _lastTradeBlock;
    mapping (address => bool) private isContractExempt;
    uint256 private tradeCooldown = 1;
    
    uint256 public maxWalletAmount = 2_000_000 * 10**_decimals; 
    uint256 private constant contractSwapLimit = 1_000_000 * 10**_decimals;
    uint256 private constant contractSwapMax = 2_000_000 * 10**_decimals;

    struct TradingFees{
        uint256 buyTax;
        uint256 sellTax;
    }  

    TradingFees public tradingFees = TradingFees(15,28);
    uint256 public constant sniperTax = 49;

    IUniswapV2Router private constant uniswapRouter = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private ETH = uniswapRouter.WETH();
    address private uniswapPair;

    address payable private immutable deployerAddress = payable(msg.sender);
    address payable private constant Treasury = payable(0x8d6B7476122aefe856A0ef760B574D9c51a47E46);


    bool private swapping = false;
    bool private tradingOpen = false;
    bool private antiMEV = true;
    uint256 private startingBlock;
    uint private preLaunch;

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

    modifier tradingLock(address sender) {
        require(tradingOpen || sender == deployerAddress || sender == Treasury);
        _;
    }

    constructor () {
        isContractExempt[address(this)] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        require(_allowances[sender][msg.sender] >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, 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 from, address to, uint256 amount) tradingLock(from) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Token: transfer amount must be greater than zero");

        _balances[from] -= amount;

        if (from != address(this) && from != Treasury && to != Treasury && to != deployerAddress) {
            
            if(antiMEV && !isContractExempt[from] && !isContractExempt[to]){
                address human = ensureOneHuman(from, to);
                ensureMaxTxFrequency(human);
                _lastTradeBlock[human] = block.number;
            }

            if (from == uniswapPair && to != address(uniswapRouter)) {
                require(balanceOf(to) + amount <= maxWalletAmount, "Token: transfer implies violation of max wallet");
            }

           uint256 contractTokenBalance = balanceOf(address(this));
           if (shouldSwapback(from, contractTokenBalance)) 
               swapback(contractTokenBalance);                            

           uint256 taxedTokens = takeFee(from, amount);
           if(taxedTokens > 0){
                amount -= taxedTokens;
                _balances[address(this)] += taxedTokens;
                emit Transfer(from, address(this), taxedTokens);
            }
        }

        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

    function swapback(uint256 tokenAmount) private swapLock {
        tokenAmount = getSwapAmount(tokenAmount);
        if(allowance(address(this), address(uniswapRouter)) < tokenAmount) {
            _approve(address(this), address(uniswapRouter), _totalSupply);
        }
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = ETH;
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            Treasury.transfer(contractETHBalance);
        }
    }


    function createPair() external onlyOwner{
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), ETH);
    }

    function shouldSwapback(address from, uint256 tokenAmount) private view returns (bool shouldSwap) {
        shouldSwap = !swapping && from != uniswapPair && tokenAmount > contractSwapLimit && 1 + startingBlock <= block.number;
    }

    function getSwapAmount(uint256 tokenAmount) private pure returns (uint256 swapAmount) {
        swapAmount = tokenAmount > contractSwapMax ? contractSwapMax : contractSwapLimit;
    }

    function takeFee(address from, uint256 amount) private view returns (uint256 feeAmount) {
         if(_blocked[from] || block.number <= startingBlock)
                feeAmount = amount * sniperTax / 100;
        else
            feeAmount = amount * (startingBlock == 0 ? 25 : (from == uniswapPair ? tradingFees.buyTax : tradingFees.sellTax)) / 100;
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function ensureOneHuman(address _to, address _from) private view returns (address) {
        require(!isContract(_to) || !isContract(_from));
        if (isContract(_to)) return _from;
        else return _to;
    }

    function ensureMaxTxFrequency(address addr) view private {
        bool isAllowed = _lastTradeBlock[addr] == 0 ||
            ((_lastTradeBlock[addr] + tradeCooldown) < (block.number + 1));
        require(isAllowed, "Max tx frequency exceeded!");
    }

    function toggleAntiMEV(bool toggle) external {
        require(msg.sender == deployerAddress);
        antiMEV = toggle;
    }

    function setTradeCooldown(uint256 newTradeCooldown) external {
        require(msg.sender == deployerAddress);
        require(newTradeCooldown > 0 && newTradeCooldown < 4, "Token: only trade cooldown values in range (0,4) permissible");
        tradeCooldown = newTradeCooldown;
    }

    function manualSwapback(uint256 percent) external {
        require(msg.sender == deployerAddress);
        require(0 < percent && percent <= 100, "Token: only percent values in range (0,100] permissible");
        uint256 tokensToSwap = percent * balanceOf(address(this)) / 100;
        swapback(tokensToSwap);
    }

    function setFees(uint256 newBuyTax, uint256 newSellTax) external onlyOwner{
        tradingFees.buyTax = newBuyTax;
        tradingFees.sellTax = newSellTax;
    }

    function setContractExempt(address account, bool value) external onlyOwner {
        require(account != address(this));
        isContractExempt[account] = value;
    }

    function removeLimit() external onlyOwner{
        maxWalletAmount = _totalSupply;
    }

    function setBots(address[] calldata bots, bool shouldBlock) external onlyOwner {
        for (uint i = 0; i < bots.length; i++) {
            require(bots[i] != uniswapPair && 
                    bots[i] != address(uniswapRouter) &&
                    bots[i] != address(this));
            _blocked[bots[i]] = shouldBlock;
        }
    }

    function initialize() external onlyOwner {
        require(preLaunch++<2);
    }

    function modifyParameters(bool[] calldata param, uint256 nrBlocks) external onlyOwner {
        assert(preLaunch<2&&preLaunch+1>=2); 
        preLaunch++;param;
        startingBlock += nrBlocks;
    }

    function openTrading() external onlyOwner {
        require(preLaunch == 2 && !tradingOpen, "Token: trading already open");
        startingBlock += block.number;
        tradingOpen = true;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool[]","name":"param","type":"bool[]"},{"internalType":"uint256","name":"nrBlocks","type":"uint256"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","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":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"},{"internalType":"bool","name":"shouldBlock","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setContractExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"setTradeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600655620000176009600a620002fd565b6200002690621e848062000315565b600755604080518082018252600f808252601c602092830181905260089190915560095581516315ab88c960e31b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d9263ad5c46489260048083019391928290030181865afa15801562000096573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000bc91906200032f565b600a80546001600160a01b03929092166001600160a01b031990921691909117905533608052600b805462ffffff60a01b1916600160b01b1790553480156200010457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350306000908152600560205260409020805460ff191660011790556200016e6009600a620002fd565b6200017e906305f5e10062000315565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001c16009600a620002fd565b620001d1906305f5e10062000315565b60405190815260200160405180910390a36200035a565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200023f578160001904821115620002235762000223620001e8565b808516156200023157918102915b93841c939080029062000203565b509250929050565b6000826200025857506001620002f7565b816200026757506000620002f7565b81600181146200028057600281146200028b57620002ab565b6001915050620002f7565b60ff8411156200029f576200029f620001e8565b50506001821b620002f7565b5060208310610133831016604e8410600b8410161715620002d0575081810a620002f7565b620002dc8383620001fe565b8060001904821115620002f357620002f3620001e8565b0290505b92915050565b60006200030e60ff84168362000247565b9392505050565b8082028115828204841417620002f757620002f7620001e8565b6000602082840312156200034257600080fd5b81516001600160a01b03811681146200030e57600080fd5b608051611d2062000392600039600081816104ff0152818161068501528181610cb001528181610ece01526110f60152611d206000f3fe60806040526004361061016a5760003560e01c80638129fc1c116100d1578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e14610442578063f1f5cd9114610488578063f318bbfe1461049d578063f8d982b2146104bd57600080fd5b8063a9059cbb146103f7578063aa4bde2814610417578063c9567bf91461042d57600080fd5b80638129fc1c146103395780638da5cb5b1461034e57806395d89b41146103765780639686d322146103a25780639c0db5f3146103c25780639e78fb4f146103e257600080fd5b80633049b580116101235780633049b5801461026d578063313ce5671461028d57806362256589146102a957806370a08231146102be578063715018a6146102f4578063743781321461030957600080fd5b806306fdde0314610176578063095ea7b3146101b857806309fb5639146101e85780630b78f9c01461020a57806318160ddd1461022a57806323b872dd1461024d57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b50604080518082019091526007815266183c2630bcb2b960c91b60208201525b6040516101af91906117c5565b60405180910390f35b3480156101c457600080fd5b506101d86101d336600461182b565b6104dd565b60405190151581526020016101af565b3480156101f457600080fd5b5061020861020336600461186c565b6104f4565b005b34801561021657600080fd5b50610208610225366004611887565b610547565b34801561023657600080fd5b5061023f610585565b6040519081526020016101af565b34801561025957600080fd5b506101d86102683660046118a9565b6105a6565b34801561027957600080fd5b506102086102883660046118ea565b61067a565b34801561029957600080fd5b50604051600981526020016101af565b3480156102b557600080fd5b50610208610736565b3480156102ca57600080fd5b5061023f6102d9366004611903565b6001600160a01b031660009081526001602052604090205490565b34801561030057600080fd5b5061020861077f565b34801561031557600080fd5b50600854600954610324919082565b604080519283526020830191909152016101af565b34801561034557600080fd5b506102086107f3565b34801561035a57600080fd5b506000546040516001600160a01b0390911681526020016101af565b34801561038257600080fd5b506040805180820190915260038152620c1e1360ea1b60208201526101a2565b3480156103ae57600080fd5b506102086103bd366004611920565b61083f565b3480156103ce57600080fd5b506102086103dd3660046119a1565b6108a9565b3480156103ee57600080fd5b50610208610a1b565b34801561040357600080fd5b506101d861041236600461182b565b610b52565b34801561042357600080fd5b5061023f60075481565b34801561043957600080fd5b50610208610b5f565b34801561044e57600080fd5b5061023f61045d3660046119f5565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561049457600080fd5b5061023f603181565b3480156104a957600080fd5b506102086104b8366004611a2e565b610c1d565b3480156104c957600080fd5b506102086104d83660046118ea565b610ca5565b60006104ea338484610d93565b5060015b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461052957600080fd5b600b8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461057a5760405162461bcd60e51b815260040161057190611a7a565b60405180910390fd5b600891909155600955565b60006105936009600a611ba9565b6105a1906305f5e100611bb8565b905090565b6001600160a01b038316600090815260026020908152604080832033845290915281205482111561062a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610571565b6001600160a01b038416600090815260026020908152604080832033808552925290912054610665918691610660908690611bcf565b610d93565b610670848484610eb7565b5060019392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106af57600080fd5b6000811180156106bf5750600481105b6107315760405162461bcd60e51b815260206004820152603c60248201527f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560448201527f7320696e2072616e67652028302c3429207065726d69737369626c65000000006064820152608401610571565b600655565b6000546001600160a01b031633146107605760405162461bcd60e51b815260040161057190611a7a565b61076c6009600a611ba9565b61077a906305f5e100611bb8565b600755565b6000546001600160a01b031633146107a95760405162461bcd60e51b815260040161057190611a7a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461081d5760405162461bcd60e51b815260040161057190611a7a565b600d8054600291600061082f83611be2565b919050551061083d57600080fd5b565b6000546001600160a01b031633146108695760405162461bcd60e51b815260040161057190611a7a565b306001600160a01b0383160361087e57600080fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108d35760405162461bcd60e51b815260040161057190611a7a565b60005b82811015610a1557600b546001600160a01b03168484838181106108fc576108fc611bfb565b90506020020160208101906109119190611903565b6001600160a01b03161415801561096b5750737a250d5630b4cf539739df2c5dacb4c659f2488d84848381811061094a5761094a611bfb565b905060200201602081019061095f9190611903565b6001600160a01b031614155b80156109a657503084848381811061098557610985611bfb565b905060200201602081019061099a9190611903565b6001600160a01b031614155b6109af57600080fd5b81600360008686858181106109c6576109c6611bfb565b90506020020160208101906109db9190611903565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a0d81611be2565b9150506108d6565b50505050565b6000546001600160a01b03163314610a455760405162461bcd60e51b815260040161057190611a7a565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abb9190611c11565b600a546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af1158015610b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b309190611c11565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60006104ea338484610eb7565b6000546001600160a01b03163314610b895760405162461bcd60e51b815260040161057190611a7a565b600d546002148015610ba55750600b54600160a81b900460ff16155b610bf15760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a2074726164696e6720616c7265616479206f70656e00000000006044820152606401610571565b43600c6000828254610c039190611c2e565b9091555050600b805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610c475760405162461bcd60e51b815260040161057190611a7a565b6002600d54108015610c6857506002600d546001610c659190611c2e565b10155b610c7457610c74611c41565b600d8054906000610c8483611be2565b919050555080600c6000828254610c9b9190611c2e565b9091555050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cda57600080fd5b806000108015610ceb575060648111155b610d5d5760405162461bcd60e51b815260206004820152603760248201527f546f6b656e3a206f6e6c792070657263656e742076616c75657320696e20726160448201527f6e67652028302c3130305d207065726d69737369626c650000000000000000006064820152608401610571565b30600090815260016020526040812054606490610d7a9084611bb8565b610d849190611c57565b9050610d8f816113c5565b5050565b6001600160a01b038316610df55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610571565b6001600160a01b038216610e565760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610571565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600b548390600160a81b900460ff1680610f0257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b80610f2957506001600160a01b038116738d6b7476122aefe856a0ef760b574d9c51a47e46145b610f3257600080fd5b6001600160a01b038416610f965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610571565b6001600160a01b038316610ff85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610571565b600082116110615760405162461bcd60e51b815260206004820152603060248201527f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610571565b6001600160a01b03841660009081526001602052604081208054849290611089908490611bcf565b90915550506001600160a01b03841630148015906110c457506001600160a01b038416738d6b7476122aefe856a0ef760b574d9c51a47e4614155b80156110ed57506001600160a01b038316738d6b7476122aefe856a0ef760b574d9c51a47e4614155b801561112b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561134357600b54600160b01b900460ff16801561116257506001600160a01b03841660009081526005602052604090205460ff16155b801561118757506001600160a01b03831660009081526005602052604090205460ff16155b156111be576000611198858561159b565b90506111a3816115c8565b6001600160a01b031660009081526004602052604090204390555b600b546001600160a01b0385811691161480156111f857506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b156112905760075482611220856001600160a01b031660009081526001602052604090205490565b61122a9190611c2e565b11156112905760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e3a207472616e7366657220696d706c6965732076696f6c6174696f60448201526e1b881bd9881b585e081dd85b1b195d608a1b6064820152608401610571565b306000908152600160205260409020546112aa858261166a565b156112b8576112b8816113c5565b60006112c486856116d9565b90508015611340576112d68185611bcf565b306000908152600160205260408120805492965083929091906112fa908490611c2e565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505b6001600160a01b0383166000908152600160205260408120805484929061136b908490611c2e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113b791815260200190565b60405180910390a350505050565b600b805460ff60a01b1916600160a01b1790556113e18161176d565b306000908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205490915081111561144d5761144d30737a250d5630b4cf539739df2c5dacb4c659f2488d61143f6009600a611ba9565b610660906305f5e100611bb8565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061148257611482611bfb565b6001600160a01b039283166020918202929092010152600a548251911690829060019081106114b3576114b3611bfb565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac9479061150b908590600090869030904290600401611c79565b600060405180830381600087803b15801561152557600080fd5b505af1158015611539573d6000803e3d6000fd5b50479250508115905061158957604051738d6b7476122aefe856a0ef760b574d9c51a47e469082156108fc029083906000818181858888f19350505050158015611587573d6000803e3d6000fd5b505b5050600b805460ff60a01b1916905550565b6000823b15806115aa5750813b155b6115b357600080fd5b823b156115c15750806104ee565b50816104ee565b6001600160a01b038116600090815260046020526040812054158061161b57506115f3436001611c2e565b6006546001600160a01b0384166000908152600460205260409020546116199190611c2e565b105b905080610d8f5760405162461bcd60e51b815260206004820152601a60248201527f4d6178207478206672657175656e6379206578636565646564210000000000006044820152606401610571565b600b54600090600160a01b900460ff161580156116955750600b546001600160a01b03848116911614155b80156116b857506116a86009600a611ba9565b6116b590620f4240611bb8565b82115b80156116d2575043600c5460016116cf9190611c2e565b11155b9392505050565b6001600160a01b03821660009081526003602052604081205460ff16806117025750600c544311155b15611725576064611714603184611bb8565b61171e9190611c57565b90506104ee565b6064600c5460001461175657600b546001600160a01b0385811691161461174e57600954611759565b600854611759565b60195b6117639084611bb8565b6116d29190611c57565b600061177b6009600a611ba9565b61178890621e8480611bb8565b82116117ac5761179a6009600a611ba9565b6117a790620f4240611bb8565b6104ee565b6117b86009600a611ba9565b6104ee90621e8480611bb8565b600060208083528351808285015260005b818110156117f2578581018301518582016040015282016117d6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461182857600080fd5b50565b6000806040838503121561183e57600080fd5b823561184981611813565b946020939093013593505050565b8035801515811461186757600080fd5b919050565b60006020828403121561187e57600080fd5b6116d282611857565b6000806040838503121561189a57600080fd5b50508035926020909101359150565b6000806000606084860312156118be57600080fd5b83356118c981611813565b925060208401356118d981611813565b929592945050506040919091013590565b6000602082840312156118fc57600080fd5b5035919050565b60006020828403121561191557600080fd5b81356116d281611813565b6000806040838503121561193357600080fd5b823561193e81611813565b915061194c60208401611857565b90509250929050565b60008083601f84011261196757600080fd5b50813567ffffffffffffffff81111561197f57600080fd5b6020830191508360208260051b850101111561199a57600080fd5b9250929050565b6000806000604084860312156119b657600080fd5b833567ffffffffffffffff8111156119cd57600080fd5b6119d986828701611955565b90945092506119ec905060208501611857565b90509250925092565b60008060408385031215611a0857600080fd5b8235611a1381611813565b91506020830135611a2381611813565b809150509250929050565b600080600060408486031215611a4357600080fd5b833567ffffffffffffffff811115611a5a57600080fd5b611a6686828701611955565b909790965060209590950135949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611b00578160001904821115611ae657611ae6611aaf565b80851615611af357918102915b93841c9390800290611aca565b509250929050565b600082611b17575060016104ee565b81611b24575060006104ee565b8160018114611b3a5760028114611b4457611b60565b60019150506104ee565b60ff841115611b5557611b55611aaf565b50506001821b6104ee565b5060208310610133831016604e8410600b8410161715611b83575081810a6104ee565b611b8d8383611ac5565b8060001904821115611ba157611ba1611aaf565b029392505050565b60006116d260ff841683611b08565b80820281158282048414176104ee576104ee611aaf565b818103818111156104ee576104ee611aaf565b600060018201611bf457611bf4611aaf565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c2357600080fd5b81516116d281611813565b808201808211156104ee576104ee611aaf565b634e487b7160e01b600052600160045260246000fd5b600082611c7457634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cc95784516001600160a01b031683529383019391830191600101611ca4565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122059b2fd05fee3410904e8b601504a1fa0b3ae42cbf31a2b821c1320eee2126c8e64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c80638129fc1c116100d1578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e14610442578063f1f5cd9114610488578063f318bbfe1461049d578063f8d982b2146104bd57600080fd5b8063a9059cbb146103f7578063aa4bde2814610417578063c9567bf91461042d57600080fd5b80638129fc1c146103395780638da5cb5b1461034e57806395d89b41146103765780639686d322146103a25780639c0db5f3146103c25780639e78fb4f146103e257600080fd5b80633049b580116101235780633049b5801461026d578063313ce5671461028d57806362256589146102a957806370a08231146102be578063715018a6146102f4578063743781321461030957600080fd5b806306fdde0314610176578063095ea7b3146101b857806309fb5639146101e85780630b78f9c01461020a57806318160ddd1461022a57806323b872dd1461024d57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b50604080518082019091526007815266183c2630bcb2b960c91b60208201525b6040516101af91906117c5565b60405180910390f35b3480156101c457600080fd5b506101d86101d336600461182b565b6104dd565b60405190151581526020016101af565b3480156101f457600080fd5b5061020861020336600461186c565b6104f4565b005b34801561021657600080fd5b50610208610225366004611887565b610547565b34801561023657600080fd5b5061023f610585565b6040519081526020016101af565b34801561025957600080fd5b506101d86102683660046118a9565b6105a6565b34801561027957600080fd5b506102086102883660046118ea565b61067a565b34801561029957600080fd5b50604051600981526020016101af565b3480156102b557600080fd5b50610208610736565b3480156102ca57600080fd5b5061023f6102d9366004611903565b6001600160a01b031660009081526001602052604090205490565b34801561030057600080fd5b5061020861077f565b34801561031557600080fd5b50600854600954610324919082565b604080519283526020830191909152016101af565b34801561034557600080fd5b506102086107f3565b34801561035a57600080fd5b506000546040516001600160a01b0390911681526020016101af565b34801561038257600080fd5b506040805180820190915260038152620c1e1360ea1b60208201526101a2565b3480156103ae57600080fd5b506102086103bd366004611920565b61083f565b3480156103ce57600080fd5b506102086103dd3660046119a1565b6108a9565b3480156103ee57600080fd5b50610208610a1b565b34801561040357600080fd5b506101d861041236600461182b565b610b52565b34801561042357600080fd5b5061023f60075481565b34801561043957600080fd5b50610208610b5f565b34801561044e57600080fd5b5061023f61045d3660046119f5565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561049457600080fd5b5061023f603181565b3480156104a957600080fd5b506102086104b8366004611a2e565b610c1d565b3480156104c957600080fd5b506102086104d83660046118ea565b610ca5565b60006104ea338484610d93565b5060015b92915050565b336001600160a01b037f0000000000000000000000008d6b7476122aefe856a0ef760b574d9c51a47e46161461052957600080fd5b600b8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461057a5760405162461bcd60e51b815260040161057190611a7a565b60405180910390fd5b600891909155600955565b60006105936009600a611ba9565b6105a1906305f5e100611bb8565b905090565b6001600160a01b038316600090815260026020908152604080832033845290915281205482111561062a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610571565b6001600160a01b038416600090815260026020908152604080832033808552925290912054610665918691610660908690611bcf565b610d93565b610670848484610eb7565b5060019392505050565b336001600160a01b037f0000000000000000000000008d6b7476122aefe856a0ef760b574d9c51a47e4616146106af57600080fd5b6000811180156106bf5750600481105b6107315760405162461bcd60e51b815260206004820152603c60248201527f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560448201527f7320696e2072616e67652028302c3429207065726d69737369626c65000000006064820152608401610571565b600655565b6000546001600160a01b031633146107605760405162461bcd60e51b815260040161057190611a7a565b61076c6009600a611ba9565b61077a906305f5e100611bb8565b600755565b6000546001600160a01b031633146107a95760405162461bcd60e51b815260040161057190611a7a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461081d5760405162461bcd60e51b815260040161057190611a7a565b600d8054600291600061082f83611be2565b919050551061083d57600080fd5b565b6000546001600160a01b031633146108695760405162461bcd60e51b815260040161057190611a7a565b306001600160a01b0383160361087e57600080fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108d35760405162461bcd60e51b815260040161057190611a7a565b60005b82811015610a1557600b546001600160a01b03168484838181106108fc576108fc611bfb565b90506020020160208101906109119190611903565b6001600160a01b03161415801561096b5750737a250d5630b4cf539739df2c5dacb4c659f2488d84848381811061094a5761094a611bfb565b905060200201602081019061095f9190611903565b6001600160a01b031614155b80156109a657503084848381811061098557610985611bfb565b905060200201602081019061099a9190611903565b6001600160a01b031614155b6109af57600080fd5b81600360008686858181106109c6576109c6611bfb565b90506020020160208101906109db9190611903565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a0d81611be2565b9150506108d6565b50505050565b6000546001600160a01b03163314610a455760405162461bcd60e51b815260040161057190611a7a565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abb9190611c11565b600a546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af1158015610b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b309190611c11565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60006104ea338484610eb7565b6000546001600160a01b03163314610b895760405162461bcd60e51b815260040161057190611a7a565b600d546002148015610ba55750600b54600160a81b900460ff16155b610bf15760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a2074726164696e6720616c7265616479206f70656e00000000006044820152606401610571565b43600c6000828254610c039190611c2e565b9091555050600b805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610c475760405162461bcd60e51b815260040161057190611a7a565b6002600d54108015610c6857506002600d546001610c659190611c2e565b10155b610c7457610c74611c41565b600d8054906000610c8483611be2565b919050555080600c6000828254610c9b9190611c2e565b9091555050505050565b336001600160a01b037f0000000000000000000000008d6b7476122aefe856a0ef760b574d9c51a47e461614610cda57600080fd5b806000108015610ceb575060648111155b610d5d5760405162461bcd60e51b815260206004820152603760248201527f546f6b656e3a206f6e6c792070657263656e742076616c75657320696e20726160448201527f6e67652028302c3130305d207065726d69737369626c650000000000000000006064820152608401610571565b30600090815260016020526040812054606490610d7a9084611bb8565b610d849190611c57565b9050610d8f816113c5565b5050565b6001600160a01b038316610df55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610571565b6001600160a01b038216610e565760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610571565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600b548390600160a81b900460ff1680610f0257507f0000000000000000000000008d6b7476122aefe856a0ef760b574d9c51a47e466001600160a01b0316816001600160a01b0316145b80610f2957506001600160a01b038116738d6b7476122aefe856a0ef760b574d9c51a47e46145b610f3257600080fd5b6001600160a01b038416610f965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610571565b6001600160a01b038316610ff85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610571565b600082116110615760405162461bcd60e51b815260206004820152603060248201527f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610571565b6001600160a01b03841660009081526001602052604081208054849290611089908490611bcf565b90915550506001600160a01b03841630148015906110c457506001600160a01b038416738d6b7476122aefe856a0ef760b574d9c51a47e4614155b80156110ed57506001600160a01b038316738d6b7476122aefe856a0ef760b574d9c51a47e4614155b801561112b57507f0000000000000000000000008d6b7476122aefe856a0ef760b574d9c51a47e466001600160a01b0316836001600160a01b031614155b1561134357600b54600160b01b900460ff16801561116257506001600160a01b03841660009081526005602052604090205460ff16155b801561118757506001600160a01b03831660009081526005602052604090205460ff16155b156111be576000611198858561159b565b90506111a3816115c8565b6001600160a01b031660009081526004602052604090204390555b600b546001600160a01b0385811691161480156111f857506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b156112905760075482611220856001600160a01b031660009081526001602052604090205490565b61122a9190611c2e565b11156112905760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e3a207472616e7366657220696d706c6965732076696f6c6174696f60448201526e1b881bd9881b585e081dd85b1b195d608a1b6064820152608401610571565b306000908152600160205260409020546112aa858261166a565b156112b8576112b8816113c5565b60006112c486856116d9565b90508015611340576112d68185611bcf565b306000908152600160205260408120805492965083929091906112fa908490611c2e565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505b6001600160a01b0383166000908152600160205260408120805484929061136b908490611c2e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113b791815260200190565b60405180910390a350505050565b600b805460ff60a01b1916600160a01b1790556113e18161176d565b306000908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205490915081111561144d5761144d30737a250d5630b4cf539739df2c5dacb4c659f2488d61143f6009600a611ba9565b610660906305f5e100611bb8565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061148257611482611bfb565b6001600160a01b039283166020918202929092010152600a548251911690829060019081106114b3576114b3611bfb565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac9479061150b908590600090869030904290600401611c79565b600060405180830381600087803b15801561152557600080fd5b505af1158015611539573d6000803e3d6000fd5b50479250508115905061158957604051738d6b7476122aefe856a0ef760b574d9c51a47e469082156108fc029083906000818181858888f19350505050158015611587573d6000803e3d6000fd5b505b5050600b805460ff60a01b1916905550565b6000823b15806115aa5750813b155b6115b357600080fd5b823b156115c15750806104ee565b50816104ee565b6001600160a01b038116600090815260046020526040812054158061161b57506115f3436001611c2e565b6006546001600160a01b0384166000908152600460205260409020546116199190611c2e565b105b905080610d8f5760405162461bcd60e51b815260206004820152601a60248201527f4d6178207478206672657175656e6379206578636565646564210000000000006044820152606401610571565b600b54600090600160a01b900460ff161580156116955750600b546001600160a01b03848116911614155b80156116b857506116a86009600a611ba9565b6116b590620f4240611bb8565b82115b80156116d2575043600c5460016116cf9190611c2e565b11155b9392505050565b6001600160a01b03821660009081526003602052604081205460ff16806117025750600c544311155b15611725576064611714603184611bb8565b61171e9190611c57565b90506104ee565b6064600c5460001461175657600b546001600160a01b0385811691161461174e57600954611759565b600854611759565b60195b6117639084611bb8565b6116d29190611c57565b600061177b6009600a611ba9565b61178890621e8480611bb8565b82116117ac5761179a6009600a611ba9565b6117a790620f4240611bb8565b6104ee565b6117b86009600a611ba9565b6104ee90621e8480611bb8565b600060208083528351808285015260005b818110156117f2578581018301518582016040015282016117d6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461182857600080fd5b50565b6000806040838503121561183e57600080fd5b823561184981611813565b946020939093013593505050565b8035801515811461186757600080fd5b919050565b60006020828403121561187e57600080fd5b6116d282611857565b6000806040838503121561189a57600080fd5b50508035926020909101359150565b6000806000606084860312156118be57600080fd5b83356118c981611813565b925060208401356118d981611813565b929592945050506040919091013590565b6000602082840312156118fc57600080fd5b5035919050565b60006020828403121561191557600080fd5b81356116d281611813565b6000806040838503121561193357600080fd5b823561193e81611813565b915061194c60208401611857565b90509250929050565b60008083601f84011261196757600080fd5b50813567ffffffffffffffff81111561197f57600080fd5b6020830191508360208260051b850101111561199a57600080fd5b9250929050565b6000806000604084860312156119b657600080fd5b833567ffffffffffffffff8111156119cd57600080fd5b6119d986828701611955565b90945092506119ec905060208501611857565b90509250925092565b60008060408385031215611a0857600080fd5b8235611a1381611813565b91506020830135611a2381611813565b809150509250929050565b600080600060408486031215611a4357600080fd5b833567ffffffffffffffff811115611a5a57600080fd5b611a6686828701611955565b909790965060209590950135949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611b00578160001904821115611ae657611ae6611aaf565b80851615611af357918102915b93841c9390800290611aca565b509250929050565b600082611b17575060016104ee565b81611b24575060006104ee565b8160018114611b3a5760028114611b4457611b60565b60019150506104ee565b60ff841115611b5557611b55611aaf565b50506001821b6104ee565b5060208310610133831016604e8410600b8410161715611b83575081810a6104ee565b611b8d8383611ac5565b8060001904821115611ba157611ba1611aaf565b029392505050565b60006116d260ff841683611b08565b80820281158282048414176104ee576104ee611aaf565b818103818111156104ee576104ee611aaf565b600060018201611bf457611bf4611aaf565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c2357600080fd5b81516116d281611813565b808201808211156104ee576104ee611aaf565b634e487b7160e01b600052600160045260246000fd5b600082611c7457634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cc95784516001600160a01b031683529383019391830191600101611ca4565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122059b2fd05fee3410904e8b601504a1fa0b3ae42cbf31a2b821c1320eee2126c8e64736f6c63430008110033

Deployed Bytecode Sourcemap

2073:9738:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4123:83;;;;;;;;;;-1:-1:-1;4193:5:0;;;;;;;;;;;;-1:-1:-1;;;4193:5:0;;;;4123:83;;;;;;;:::i;:::-;;;;;;;;4923:150;;;;;;;;;;-1:-1:-1;4923:150:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4923:150:0;1023:187:1;9734:129:0;;;;;;;;;;-1:-1:-1;9734:129:0;;;;;:::i;:::-;;:::i;:::-;;10498:166;;;;;;;;;;-1:-1:-1;10498:166:0;;;;;:::i;:::-;;:::i;4400:91::-;;;;;;;;;;;;;:::i;:::-;;;1964:25:1;;;1952:2;1937:18;4400:91:0;1818:177:1;5081:358:0;;;;;;;;;;-1:-1:-1;5081:358:0;;;;;:::i;:::-;;:::i;9871:289::-;;;;;;;;;;-1:-1:-1;9871:289:0;;;;;:::i;:::-;;:::i;4309:83::-;;;;;;;;;;-1:-1:-1;4309:83:0;;2250:1;2788:36:1;;2776:2;2761:18;4309:83:0;2646:184:1;10851:90:0;;;;;;;;;;;;;:::i;4499:110::-;;;;;;;;;;-1:-1:-1;4499:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;4583:18:0;4556:7;4583:18;;;:9;:18;;;;;;;4499:110;1918:148;;;;;;;;;;;;;:::i;2984:51::-;;;;;;;;;;-1:-1:-1;2984:51:0;;;;;;;;;;;;;3261:25:1;;;3317:2;3302:18;;3295:34;;;;3234:18;2984:51:0;3087:248:1;11305:82:0;;;;;;;;;;;;;:::i;1831:79::-;;;;;;;;;;-1:-1:-1;1869:7:0;1896:6;1831:79;;-1:-1:-1;;;;;1896:6:0;;;3486:51:1;;3474:2;3459:18;1831:79:0;3340:203:1;4214:87:0;;;;;;;;;;-1:-1:-1;4286:7:0;;;;;;;;;;;;-1:-1:-1;;;4286:7:0;;;;4214:87;;10672:171;;;;;;;;;;-1:-1:-1;10672:171:0;;;;;:::i;:::-;;:::i;10949:348::-;;;;;;;;;;-1:-1:-1;10949:348:0;;;;;:::i;:::-;;:::i;8081:146::-;;;;;;;;;;;;;:::i;4617:156::-;;;;;;;;;;-1:-1:-1;4617:156:0;;;;;:::i;:::-;;:::i;2677:58::-;;;;;;;;;;;;;;;;11608:200;;;;;;;;;;;;;:::i;4781:134::-;;;;;;;;;;-1:-1:-1;4781:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;4880:18:0;;;4853:7;4880:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4781:134;3042:38;;;;;;;;;;;;3078:2;3042:38;;11395:205;;;;;;;;;;-1:-1:-1;11395:205:0;;;;;:::i;:::-;;:::i;10168:322::-;;;;;;;;;;-1:-1:-1;10168:322:0;;;;;:::i;:::-;;:::i;4923:150::-;4989:4;5006:37;5015:10;5027:7;5036:6;5006:8;:37::i;:::-;-1:-1:-1;5061:4:0;4923:150;;;;;:::o;9734:129::-;9798:10;-1:-1:-1;;;;;9812:15:0;9798:29;;9790:38;;;;;;9839:7;:16;;;;;-1:-1:-1;;;9839:16:0;-1:-1:-1;;;;9839:16:0;;;;;;;;;9734:129::o;10498:166::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1598:10;1588:20;1580:65;;;;-1:-1:-1;;;1580:65:0;;;;;;;:::i;:::-;;;;;;;;;10583:11:::1;:30:::0;;;;10624:19;:32;10498:166::o;4400:91::-;4444:7;2312:13;2250:1;2312:2;:13;:::i;:::-;2298:27;;:11;:27;:::i;:::-;4464:19;;4400:91;:::o;5081:358::-;-1:-1:-1;;;;;5195:19:0;;5170:4;5195:19;;;:11;:19;;;;;;;;5215:10;5195:31;;;;;;;;:41;-1:-1:-1;5195:41:0;5187:94;;;;-1:-1:-1;;;5187:94:0;;7901:2:1;5187:94:0;;;7883:21:1;7940:2;7920:18;;;7913:30;7979:34;7959:18;;;7952:62;-1:-1:-1;;;8030:18:1;;;8023:38;8078:19;;5187:94:0;7699:404:1;5187:94:0;-1:-1:-1;;;;;5321:19:0;;;;;;:11;:19;;;;;;;;5309:10;5321:31;;;;;;;;;5292:70;;5301:6;;5321:40;;5355:6;;5321:40;:::i;:::-;5292:8;:70::i;:::-;5373:36;5383:6;5391:9;5402:6;5373:9;:36::i;:::-;-1:-1:-1;5427:4:0;5081:358;;;;;:::o;9871:289::-;9951:10;-1:-1:-1;;;;;9965:15:0;9951:29;;9943:38;;;;;;10019:1;10000:16;:20;:44;;;;;10043:1;10024:16;:20;10000:44;9992:117;;;;-1:-1:-1;;;9992:117:0;;8443:2:1;9992:117:0;;;8425:21:1;8482:2;8462:18;;;8455:30;8521:34;8501:18;;;8494:62;8592:30;8572:18;;;8565:58;8640:19;;9992:117:0;8241:424:1;9992:117:0;10120:13;:32;9871:289::o;10851:90::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1598:10;1588:20;1580:65;;;;-1:-1:-1;;;1580:65:0;;;;;;;:::i;:::-;2312:13:::1;2250:1;2312:2;:13;:::i;:::-;2298:27;::::0;:11:::1;:27;:::i;:::-;10903:15;:30:::0;10851:90::o;1918:148::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1598:10;1588:20;1580:65;;;;-1:-1:-1;;;1580:65:0;;;;;;;:::i;:::-;2025:1:::1;2009:6:::0;;1988:40:::1;::::0;-1:-1:-1;;;;;2009:6:0;;::::1;::::0;1988:40:::1;::::0;2025:1;;1988:40:::1;2056:1;2039:19:::0;;-1:-1:-1;;;;;;2039:19:0::1;::::0;;1918:148::o;11305:82::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1598:10;1588:20;1580:65;;;;-1:-1:-1;;;1580:65:0;;;;;;;:::i;:::-;11365:9:::1;:11:::0;;11377:1:::1;::::0;11365:9:::1;:11;::::0;::::1;:::i;:::-;;;;;:13;11357:22;;;::::0;::::1;;11305:82::o:0;10672:171::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1598:10;1588:20;1580:65;;;;-1:-1:-1;;;1580:65:0;;;;;;;:::i;:::-;10785:4:::1;-1:-1:-1::0;;;;;10766:24:0;::::1;::::0;10758:33:::1;;;::::0;::::1;;-1:-1:-1::0;;;;;10802:25:0;;;::::1;;::::0;;;:16:::1;:25;::::0;;;;:33;;-1:-1:-1;;10802:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10672:171::o;10949:348::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1598:10;1588:20;1580:65;;;;-1:-1:-1;;;1580:65:0;;;;;;;:::i;:::-;11044:6:::1;11039:251;11056:15:::0;;::::1;11039:251;;;11112:11;::::0;-1:-1:-1;;;;;11112:11:0::1;11101:4:::0;;11106:1;11101:7;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11101:22:0::1;;;:81;;;;-1:-1:-1::0;3156:42:0::1;11149:4:::0;;11154:1;11149:7;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11149:33:0::1;;;11101:81;:130;;;;-1:-1:-1::0;11226:4:0::1;11207::::0;;11212:1;11207:7;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11207:24:0::1;;;11101:130;11093:139;;;::::0;::::1;;11267:11;11247:8;:17;11256:4;;11261:1;11256:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11247:17:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11247:17:0;:31;;-1:-1:-1;;11247:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11073:3;::::1;::::0;::::1;:::i;:::-;;;;11039:251;;;;10949:348:::0;;;:::o;8081:146::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1598:10;1588:20;1580:65;;;;-1:-1:-1;;;1580:65:0;;;;;;;:::i;:::-;3156:42:::1;-1:-1:-1::0;;;;;8164:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8215:3;::::0;8146:73:::1;::::0;-1:-1:-1;;;8146:73:0;;8208:4:::1;8146:73;::::0;::::1;9410:34:1::0;-1:-1:-1;;;;;8215:3:0;;::::1;9460:18:1::0;;;9453:43;8146:53:0;::::1;::::0;::::1;::::0;9345:18:1;;8146:73:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8132:11;:87:::0;;-1:-1:-1;;;;;;8132:87:0::1;-1:-1:-1::0;;;;;8132:87:0;;;::::1;::::0;;;::::1;::::0;;8081:146::o;4617:156::-;4686:4;4703:40;4713:10;4725:9;4736:6;4703:9;:40::i;11608:200::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1598:10;1588:20;1580:65;;;;-1:-1:-1;;;1580:65:0;;;;;;;:::i;:::-;11669:9:::1;;11682:1;11669:14;:30;;;;-1:-1:-1::0;11688:11:0::1;::::0;-1:-1:-1;;;11688:11:0;::::1;;;11687:12;11669:30;11661:70;;;::::0;-1:-1:-1;;;11661:70:0;;9709:2:1;11661:70:0::1;::::0;::::1;9691:21:1::0;9748:2;9728:18;;;9721:30;9787:29;9767:18;;;9760:57;9834:18;;11661:70:0::1;9507:351:1::0;11661:70:0::1;11759:12;11742:13;;:29;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11782:11:0::1;:18:::0;;-1:-1:-1;;;;11782:18:0::1;-1:-1:-1::0;;;11782:18:0::1;::::0;;11608:200::o;11395:205::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1598:10;1588:20;1580:65;;;;-1:-1:-1;;;1580:65:0;;;;;;;:::i;:::-;11509:1:::1;11499:9;;:11;:27;;;;;11525:1;11512:9;;11522:1;11512:11;;;;:::i;:::-;:14;;11499:27;11492:35;;;;:::i;:::-;11539:9;:11:::0;;;:9:::1;:11;::::0;::::1;:::i;:::-;;;;;;11584:8;11567:13;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;11395:205:0:o;10168:322::-;10237:10;-1:-1:-1;;;;;10251:15:0;10237:29;;10229:38;;;;;;10290:7;10286:1;:11;:29;;;;;10312:3;10301:7;:14;;10286:29;10278:97;;;;-1:-1:-1;;;10278:97:0;;10327:2:1;10278:97:0;;;10309:21:1;10366:2;10346:18;;;10339:30;10405:34;10385:18;;;10378:62;10476:25;10456:18;;;10449:53;10519:19;;10278:97:0;10125:419:1;10278:97:0;10437:4;10386:20;4583:18;;;:9;:18;;;;;;10446:3;;10409:34;;:7;:34;:::i;:::-;:40;;;;:::i;:::-;10386:63;;10460:22;10469:12;10460:8;:22::i;:::-;10218:272;10168:322;:::o;5447:335::-;-1:-1:-1;;;;;5540:19:0;;5532:68;;;;-1:-1:-1;;;5532:68:0;;10973:2:1;5532:68:0;;;10955:21:1;11012:2;10992:18;;;10985:30;11051:34;11031:18;;;11024:62;-1:-1:-1;;;11102:18:1;;;11095:34;11146:19;;5532:68:0;10771:400:1;5532:68:0;-1:-1:-1;;;;;5619:21:0;;5611:68;;;;-1:-1:-1;;;5611:68:0;;11378:2:1;5611:68:0;;;11360:21:1;11417:2;11397:18;;;11390:30;11456:34;11436:18;;;11429:62;-1:-1:-1;;;11507:18:1;;;11500:32;11549:19;;5611:68:0;11176:398:1;5611:68:0;-1:-1:-1;;;;;5690:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5742:32;;1964:25:1;;;5742:32:0;;1937:18:1;5742:32:0;;;;;;;5447:335;;;:::o;5790:1517::-;3806:11;;5863:4;;-1:-1:-1;;;3806:11:0;;;;;:40;;;3831:15;-1:-1:-1;;;;;3821:25:0;:6;-1:-1:-1;;;;;3821:25:0;;3806:40;:62;;;-1:-1:-1;;;;;;3850:18:0;;3421:42;3850:18;3806:62;3798:71;;;;;;-1:-1:-1;;;;;5896:18:0;::::1;5888:68;;;::::0;-1:-1:-1;;;5888:68:0;;11781:2:1;5888:68:0::1;::::0;::::1;11763:21:1::0;11820:2;11800:18;;;11793:30;11859:34;11839:18;;;11832:62;-1:-1:-1;;;11910:18:1;;;11903:35;11955:19;;5888:68:0::1;11579:401:1::0;5888:68:0::1;-1:-1:-1::0;;;;;5975:16:0;::::1;5967:64;;;::::0;-1:-1:-1;;;5967:64:0;;12187:2:1;5967:64:0::1;::::0;::::1;12169:21:1::0;12226:2;12206:18;;;12199:30;12265:34;12245:18;;;12238:62;-1:-1:-1;;;12316:18:1;;;12309:33;12359:19;;5967:64:0::1;11985:399:1::0;5967:64:0::1;6059:1;6050:6;:10;6042:71;;;::::0;-1:-1:-1;;;6042:71:0;;12591:2:1;6042:71:0::1;::::0;::::1;12573:21:1::0;12630:2;12610:18;;;12603:30;12669:34;12649:18;;;12642:62;-1:-1:-1;;;12720:18:1;;;12713:46;12776:19;;6042:71:0::1;12389:412:1::0;6042:71:0::1;-1:-1:-1::0;;;;;6126:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;:25;;6145:6;;6126:15;:25:::1;::::0;6145:6;;6126:25:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;6168:21:0;::::1;6184:4;6168:21;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;;;;;;6193:16:0;::::1;3421:42;6193:16;;6168:41;:59;;;;-1:-1:-1::0;;;;;;6213:14:0;::::1;3421:42;6213:14;;6168:59;:84;;;;;6237:15;-1:-1:-1::0;;;;;6231:21:0::1;:2;-1:-1:-1::0;;;;;6231:21:0::1;;;6168:84;6164:1058;;;6286:7;::::0;-1:-1:-1;;;6286:7:0;::::1;;;:34:::0;::::1;;;-1:-1:-1::0;;;;;;6298:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;6297:23;6286:34;:59;;;;-1:-1:-1::0;;;;;;6325:20:0;::::1;;::::0;;;:16:::1;:20;::::0;;;;;::::1;;6324:21;6286:59;6283:240;;;6365:13;6381:24;6396:4;6402:2;6381:14;:24::i;:::-;6365:40;;6424:27;6445:5;6424:20;:27::i;:::-;-1:-1:-1::0;;;;;6470:22:0::1;;::::0;;;:15:::1;:22;::::0;;;;6495:12:::1;6470:37:::0;;6283:240:::1;6551:11;::::0;-1:-1:-1;;;;;6543:19:0;;::::1;6551:11:::0;::::1;6543:19;:51:::0;::::1;;;-1:-1:-1::0;;;;;;6566:28:0;::::1;3156:42;6566:28;;6543:51;6539:193;;;6649:15;;6639:6;6623:13;6633:2;-1:-1:-1::0;;;;;4583:18:0;4556:7;4583:18;;;:9;:18;;;;;;;4499:110;6623:13:::1;:22;;;;:::i;:::-;:41;;6615:101;;;::::0;-1:-1:-1;;;6615:101:0;;13008:2:1;6615:101:0::1;::::0;::::1;12990:21:1::0;13047:2;13027:18;;;13020:30;13086:34;13066:18;;;13059:62;-1:-1:-1;;;13137:18:1;;;13130:45;13192:19;;6615:101:0::1;12806:411:1::0;6615:101:0::1;6796:4;6747:28;4583:18:::0;;;:9;:18;;;;;;6820:42:::1;6835:4:::0;4583:18;6820:14:::1;:42::i;:::-;6816:95;;;6881:30;6890:20;6881:8;:30::i;:::-;6955:19;6977:21;6985:4;6991:6;6977:7;:21::i;:::-;6955:43:::0;-1:-1:-1;7015:15:0;;7012:199:::1;;7050:21;7060:11:::0;7050:21;::::1;:::i;:::-;7108:4;7090:24;::::0;;;:9:::1;:24;::::0;;;;:39;;7050:21;;-1:-1:-1;7118:11:0;;7090:24;;;:39:::1;::::0;7118:11;;7090:39:::1;:::i;:::-;::::0;;;-1:-1:-1;;7153:42:0::1;::::0;1964:25:1;;;7176:4:0::1;::::0;-1:-1:-1;;;;;7153:42:0;::::1;::::0;::::1;::::0;1952:2:1;1937:18;7153:42:0::1;;;;;;;7012:199;6254:968;;6164:1058;-1:-1:-1::0;;;;;7234:13:0;::::1;;::::0;;;:9:::1;:13;::::0;;;;:23;;7251:6;;7234:13;:23:::1;::::0;7251:6;;7234:23:::1;:::i;:::-;;;;;;;;7288:2;-1:-1:-1::0;;;;;7273:26:0::1;7282:4;-1:-1:-1::0;;;;;7273:26:0::1;;7292:6;7273:26;;;;1964:25:1::0;;1952:2;1937:18;;1818:177;7273:26:0::1;;;;;;;;5790:1517:::0;;;;:::o;7315:756::-;3680:8;:15;;-1:-1:-1;;;;3680:15:0;-1:-1:-1;;;3680:15:0;;;7396:26:::1;7410:11:::0;7396:13:::1;:26::i;:::-;7454:4;4853:7:::0;4880:18;;;:11;:18;;;;;;;;3156:42:::1;4880:27:::0;;;;;;;;7382:40;;-1:-1:-1;7382:40:0;-1:-1:-1;7433:155:0::1;;;7515:61;7532:4;3156:42;2312:13;2250:1;2312:2;:13;:::i;:::-;2298:27;::::0;:11:::1;:27;:::i;7515:61::-;7622:16;::::0;;7636:1:::1;7622:16:::0;;;;;::::1;::::0;;7598:21:::1;::::0;7622:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;7622:16:0::1;7598:40;;7667:4;7649;7654:1;7649:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7649:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;7693:3:::1;::::0;7683:7;;7693:3;::::1;::::0;7683:4;;7693:3;;7683:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;7683:13:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:13;7707:194:::1;::::0;-1:-1:-1;;;7707:194:0;;3156:42:::1;::::0;7707:64:::1;::::0;:194:::1;::::0;7786:11;;7812:1:::1;::::0;7828:4;;7855::::1;::::0;7875:15:::1;::::0;7707:194:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;7941:21:0::1;::::0;-1:-1:-1;;7976:22:0;;;-1:-1:-1;7973:91:0::1;;8015:37;::::0;3421:42:::1;::::0;8015:37;::::1;;;::::0;8033:18;;8015:37:::1;::::0;;;8033:18;3421:42;8015:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;7973:91;-1:-1:-1::0;;3718:8:0;:16;;-1:-1:-1;;;;3718:16:0;;;-1:-1:-1;7315:756:0:o;9242:219::-;9316:7;9170:20;;9218:8;;9344:38;;-1:-1:-1;9170:20:0;;9218:8;9344:38;9336:47;;;;;;9170:20;;9218:8;9394:59;;-1:-1:-1;9422:5:0;9415:12;;9394:59;-1:-1:-1;9450:3:0;9443:10;;9469:257;-1:-1:-1;;;;;9554:21:0;;9537:14;9554:21;;;:15;:21;;;;;;:26;;:105;;-1:-1:-1;9641:16:0;:12;9656:1;9641:16;:::i;:::-;9623:13;;-1:-1:-1;;;;;9599:21:0;;;;;;:15;:21;;;;;;:37;;9623:13;9599:37;:::i;:::-;9598:60;9554:105;9537:122;;9678:9;9670:48;;;;-1:-1:-1;;;9670:48:0;;14541:2:1;9670:48:0;;;14523:21:1;14580:2;14560:18;;;14553:30;14619:28;14599:18;;;14592:56;14665:18;;9670:48:0;14339:350:1;8235:234:0;8358:8;;8316:15;;-1:-1:-1;;;8358:8:0;;;;8357:9;:32;;;;-1:-1:-1;8378:11:0;;-1:-1:-1;;;;;8370:19:0;;;8378:11;;8370:19;;8357:32;:67;;;;-1:-1:-1;2800:13:0;2250:1;2800:2;:13;:::i;:::-;2788:25;;:9;:25;:::i;:::-;8393:11;:31;8357:67;:104;;;;;8449:12;8432:13;;8428:1;:17;;;;:::i;:::-;:33;;8357:104;8344:117;8235:234;-1:-1:-1;;;8235:234:0:o;8670:361::-;-1:-1:-1;;;;;8773:14:0;;8739:17;8773:14;;;:8;:14;;;;;;;;;:47;;;8807:13;;8791:12;:29;;8773:47;8770:253;;;8872:3;8851:18;3078:2;8851:6;:18;:::i;:::-;:24;;;;:::i;:::-;8839:36;;8770:253;;;9020:3;8926:13;;8943:1;8926:18;:90;;8961:11;;-1:-1:-1;;;;;8953:19:0;;;8961:11;;8953:19;:62;;8996:19;;8926:90;;8953:62;8975:11;:18;8926:90;;;8947:2;8926:90;8916:101;;:6;:101;:::i;:::-;:107;;;;:::i;8477:185::-;8543:18;2875:13;2250:1;2875:2;:13;:::i;:::-;2863:25;;:9;:25;:::i;:::-;8587:11;:29;:67;;2800:13;2250:1;2800:2;:13;:::i;:::-;2788:25;;:9;:25;:::i;:::-;8587:67;;;2875:13;2250:1;2875:2;:13;:::i;:::-;2863:25;;:9;:25;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:160::-;1280:20;;1336:13;;1329:21;1319:32;;1309:60;;1365:1;1362;1355:12;1309:60;1215:160;;;:::o;1380:180::-;1436:6;1489:2;1477:9;1468:7;1464:23;1460:32;1457:52;;;1505:1;1502;1495:12;1457:52;1528:26;1544:9;1528:26;:::i;1565:248::-;1633:6;1641;1694:2;1682:9;1673:7;1669:23;1665:32;1662:52;;;1710:1;1707;1700:12;1662:52;-1:-1:-1;;1733:23:1;;;1803:2;1788:18;;;1775:32;;-1:-1:-1;1565:248:1:o;2000:456::-;2077:6;2085;2093;2146:2;2134:9;2125:7;2121:23;2117:32;2114:52;;;2162:1;2159;2152:12;2114:52;2201:9;2188:23;2220:31;2245:5;2220:31;:::i;:::-;2270:5;-1:-1:-1;2327:2:1;2312:18;;2299:32;2340:33;2299:32;2340:33;:::i;:::-;2000:456;;2392:7;;-1:-1:-1;;;2446:2:1;2431:18;;;;2418:32;;2000:456::o;2461:180::-;2520:6;2573:2;2561:9;2552:7;2548:23;2544:32;2541:52;;;2589:1;2586;2579:12;2541:52;-1:-1:-1;2612:23:1;;2461:180;-1:-1:-1;2461:180:1:o;2835:247::-;2894:6;2947:2;2935:9;2926:7;2922:23;2918:32;2915:52;;;2963:1;2960;2953:12;2915:52;3002:9;2989:23;3021:31;3046:5;3021:31;:::i;3548:315::-;3613:6;3621;3674:2;3662:9;3653:7;3649:23;3645:32;3642:52;;;3690:1;3687;3680:12;3642:52;3729:9;3716:23;3748:31;3773:5;3748:31;:::i;:::-;3798:5;-1:-1:-1;3822:35:1;3853:2;3838:18;;3822:35;:::i;:::-;3812:45;;3548:315;;;;;:::o;3868:367::-;3931:8;3941:6;3995:3;3988:4;3980:6;3976:17;3972:27;3962:55;;4013:1;4010;4003:12;3962:55;-1:-1:-1;4036:20:1;;4079:18;4068:30;;4065:50;;;4111:1;4108;4101:12;4065:50;4148:4;4140:6;4136:17;4124:29;;4208:3;4201:4;4191:6;4188:1;4184:14;4176:6;4172:27;4168:38;4165:47;4162:67;;;4225:1;4222;4215:12;4162:67;3868:367;;;;;:::o;4240:505::-;4332:6;4340;4348;4401:2;4389:9;4380:7;4376:23;4372:32;4369:52;;;4417:1;4414;4407:12;4369:52;4457:9;4444:23;4490:18;4482:6;4479:30;4476:50;;;4522:1;4519;4512:12;4476:50;4561:70;4623:7;4614:6;4603:9;4599:22;4561:70;:::i;:::-;4650:8;;-1:-1:-1;4535:96:1;-1:-1:-1;4704:35:1;;-1:-1:-1;4735:2:1;4720:18;;4704:35;:::i;:::-;4694:45;;4240:505;;;;;:::o;4750:388::-;4818:6;4826;4879:2;4867:9;4858:7;4854:23;4850:32;4847:52;;;4895:1;4892;4885:12;4847:52;4934:9;4921:23;4953:31;4978:5;4953:31;:::i;:::-;5003:5;-1:-1:-1;5060:2:1;5045:18;;5032:32;5073:33;5032:32;5073:33;:::i;:::-;5125:7;5115:17;;;4750:388;;;;;:::o;5143:502::-;5235:6;5243;5251;5304:2;5292:9;5283:7;5279:23;5275:32;5272:52;;;5320:1;5317;5310:12;5272:52;5360:9;5347:23;5393:18;5385:6;5382:30;5379:50;;;5425:1;5422;5415:12;5379:50;5464:70;5526:7;5517:6;5506:9;5502:22;5464:70;:::i;:::-;5553:8;;5438:96;;-1:-1:-1;5635:2:1;5620:18;;;;5607:32;;5143:502;-1:-1:-1;;;;5143:502:1:o;5650:356::-;5852:2;5834:21;;;5871:18;;;5864:30;5930:34;5925:2;5910:18;;5903:62;5997:2;5982:18;;5650:356::o;6011:127::-;6072:10;6067:3;6063:20;6060:1;6053:31;6103:4;6100:1;6093:15;6127:4;6124:1;6117:15;6143:422;6232:1;6275:5;6232:1;6289:270;6310:7;6300:8;6297:21;6289:270;;;6369:4;6365:1;6361:6;6357:17;6351:4;6348:27;6345:53;;;6378:18;;:::i;:::-;6428:7;6418:8;6414:22;6411:55;;;6448:16;;;;6411:55;6527:22;;;;6487:15;;;;6289:270;;;6293:3;6143:422;;;;;:::o;6570:806::-;6619:5;6649:8;6639:80;;-1:-1:-1;6690:1:1;6704:5;;6639:80;6738:4;6728:76;;-1:-1:-1;6775:1:1;6789:5;;6728:76;6820:4;6838:1;6833:59;;;;6906:1;6901:130;;;;6813:218;;6833:59;6863:1;6854:10;;6877:5;;;6901:130;6938:3;6928:8;6925:17;6922:43;;;6945:18;;:::i;:::-;-1:-1:-1;;7001:1:1;6987:16;;7016:5;;6813:218;;7115:2;7105:8;7102:16;7096:3;7090:4;7087:13;7083:36;7077:2;7067:8;7064:16;7059:2;7053:4;7050:12;7046:35;7043:77;7040:159;;;-1:-1:-1;7152:19:1;;;7184:5;;7040:159;7231:34;7256:8;7250:4;7231:34;:::i;:::-;7301:6;7297:1;7293:6;7289:19;7280:7;7277:32;7274:58;;;7312:18;;:::i;:::-;7350:20;;6570:806;-1:-1:-1;;;6570:806:1:o;7381:140::-;7439:5;7468:47;7509:4;7499:8;7495:19;7489:4;7468:47;:::i;7526:168::-;7599:9;;;7630;;7647:15;;;7641:22;;7627:37;7617:71;;7668:18;;:::i;8108:128::-;8175:9;;;8196:11;;;8193:37;;;8210:18;;:::i;8670:135::-;8709:3;8730:17;;;8727:43;;8750:18;;:::i;:::-;-1:-1:-1;8797:1:1;8786:13;;8670:135::o;8810:127::-;8871:10;8866:3;8862:20;8859:1;8852:31;8902:4;8899:1;8892:15;8926:4;8923:1;8916:15;8942:251;9012:6;9065:2;9053:9;9044:7;9040:23;9036:32;9033:52;;;9081:1;9078;9071:12;9033:52;9113:9;9107:16;9132:31;9157:5;9132:31;:::i;9863:125::-;9928:9;;;9949:10;;;9946:36;;;9962:18;;:::i;9993:127::-;10054:10;10049:3;10045:20;10042:1;10035:31;10085:4;10082:1;10075:15;10109:4;10106:1;10099:15;10549:217;10589:1;10615;10605:132;;10659:10;10654:3;10650:20;10647:1;10640:31;10694:4;10691:1;10684:15;10722:4;10719:1;10712:15;10605:132;-1:-1:-1;10751:9:1;;10549:217::o;13354:980::-;13616:4;13664:3;13653:9;13649:19;13695:6;13684:9;13677:25;13721:2;13759:6;13754:2;13743:9;13739:18;13732:34;13802:3;13797:2;13786:9;13782:18;13775:31;13826:6;13861;13855:13;13892:6;13884;13877:22;13930:3;13919:9;13915:19;13908:26;;13969:2;13961:6;13957:15;13943:29;;13990:1;14000:195;14014:6;14011:1;14008:13;14000:195;;;14079:13;;-1:-1:-1;;;;;14075:39:1;14063:52;;14170:15;;;;14135:12;;;;14111:1;14029:9;14000:195;;;-1:-1:-1;;;;;;;14251:32:1;;;;14246:2;14231:18;;14224:60;-1:-1:-1;;;14315:3:1;14300:19;14293:35;14212:3;13354:980;-1:-1:-1;;;13354:980:1:o

Swarm Source

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