ETH Price: $3,909.29 (+1.30%)

Token

ERC-20: FUDIT (FUDIT)
 

Overview

Max Total Supply

1,248,163,264,128 FUDIT

Holders

345

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,120,408,160 FUDIT

Value
$0.00
0x23e54d543be9b1689245465f5161ac120c42cd59
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:
FUDIT

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-22
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    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);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Protections {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract FUDIT is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromLimits;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 1_248_163_264_128;
    string constant private _name = "FUDIT";
    string constant private _symbol = "FUDIT";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    uint256 private _maxWalletSize = (_tTotal * 100) / 100;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Protections protections;

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);
        _liquidityHolders[_owner] = true;
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external pure override returns (uint8) { if (_tTotal == 0) { revert(); } return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveContractContingency() external onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!tradingEnabled);
        require(initializer != address(this), "Can't be self.");
        protections = Protections(initializer);
    }

    function isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

    function removeSniper(address account) external onlyOwner {
        protections.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        protections.setProtections(_antiSnipe, _antiBlock);
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    function getMaxWallet() external view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(protections)
            && to != address(protections);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        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");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
            if (to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        return finalizeTransfer(from, to, amount, other);
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if (address(protections) == address(0)){
                protections = Protections(address(this));
            }
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(protections) == address(0)){
            protections = Protections(address(this));
        }
        try protections.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
    }

    function sweepBalance() external onlyOwner {
        payable(_owner).transfer(address(this).balance);
    }
    
    function sweepExternalTokens(address token) external onlyOwner {
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try protections.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        _tOwned[from] -= amount;
        _tOwned[to] += amount;
        emit Transfer(from, to, amount);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sweepBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006002556007805460ff191660011790556064620000266009600a6200067a565b62000038906501229c53f68062000692565b6200004590606462000692565b620000519190620006ac565b600855600a805461ffff60a01b19168155600c80546001600160a01b0319163317905562000082906009906200067a565b62000094906501229c53f68062000692565b600c80546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620000e86009600a6200067a565b620000fa906501229c53f68062000692565b60405190815260200160405180910390a346603803620001425760098054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e0017905562000249565b46606103620001795760098054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d10017905562000249565b4660011480620001895750466004145b80620001955750466003145b80620001a15750466005145b15620001d55760098054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d0017905562000249565b4661a86a036200020d5760098054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d40017905562000249565b4660fa03620002445760098054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c290017905562000249565b600080fd5b600960019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c39190620006cf565b6001600160a01b031663c9c65396600960019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034b9190620006cf565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000398573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003be9190620006cf565b600a80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055600c546009546200041892918216916101009091041660001962000464565b6009546200043990309061010090046001600160a01b031660001962000464565b600c546001600160a01b03166000908152600460205260409020805460ff19166001179055620006fa565b6001600160a01b038316620004b65760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005045760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620004ad565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005bc578160001904821115620005a057620005a062000565565b80851615620005ae57918102915b93841c939080029062000580565b509250929050565b600082620005d55750600162000674565b81620005e45750600062000674565b8160018114620005fd5760028114620006085762000628565b600191505062000674565b60ff8411156200061c576200061c62000565565b50506001821b62000674565b5060208310610133831016604e8410600b84101617156200064d575081810a62000674565b6200065983836200057b565b806000190482111562000670576200067062000565565b0290505b92915050565b60006200068b60ff841683620005c4565b9392505050565b808202811582820484141762000674576200067462000565565b600082620006ca57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620006e257600080fd5b81516001600160a01b03811681146200068b57600080fd5b612370806200070a6000396000f3fe6080604052600436106101f25760003560e01c8063452ed4f11161010d578063893d20e8116100a0578063a9059cbb1161006f578063a9059cbb146105b1578063ab558e4d146105d1578063c3513f6d146105f1578063dd62ed3e14610606578063feadde9c1461064c57600080fd5b8063893d20e8146105695780638a63bd9b146105875780638a8c523c1461059c57806395d89b411461025357600080fd5b80635c24b074116100dc5780635c24b074146104c55780635cce86cd146104e557806370a082311461051e578063715018a61461055457600080fd5b8063452ed4f1146104435780634ada218b146104635780634fb2e45d1461048457806350a8e016146104a457600080fd5b806318160ddd116101855780632b112e49116101545780632b112e49146103c7578063313ce567146103dc57806333251a0b1461040357806336fddb041461042357600080fd5b806318160ddd1461035257806323b872dd1461036757806326003957146103875780632610eaca146103a757600080fd5b806307dd79e0116101c157806307dd79e0146102ac578063095ea7b3146102d65780630dcbcf1c146102f65780630fa604e41461032f57600080fd5b806303fd2a45146101fe578063044df7261461023157806306fdde03146102535780630758d9241461028757600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021461dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023d57600080fd5b5061025161024c366004611e3a565b61066c565b005b34801561025f57600080fd5b506040805180820182526005815264119551125560da1b602082015290516102289190611e73565b34801561029357600080fd5b506009546102149061010090046001600160a01b031681565b3480156102b857600080fd5b506009546102c69060ff1681565b6040519015158152602001610228565b3480156102e257600080fd5b506102c66102f1366004611edd565b61072a565b34801561030257600080fd5b506102c6610311366004611f07565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561033b57600080fd5b50610344610741565b604051908152602001610228565b34801561035e57600080fd5b50610344610761565b34801561037357600080fd5b506102c6610382366004611f22565b6107a7565b34801561039357600080fd5b506102516103a2366004611f5e565b61081f565b3480156103b357600080fd5b506102516103c2366004612056565b610974565b3480156103d357600080fd5b50610344610b2c565b3480156103e857600080fd5b506103f1610bac565b60405160ff9091168152602001610228565b34801561040f57600080fd5b5061025161041e366004611f07565b610bdc565b34801561042f57600080fd5b5061025161043e366004612116565b610c8c565b34801561044f57600080fd5b50600a54610214906001600160a01b031681565b34801561046f57600080fd5b50600a546102c690600160a01b900460ff1681565b34801561049057600080fd5b5061025161049f366004611f07565b610d05565b3480156104b057600080fd5b50600a546102c690600160a81b900460ff1681565b3480156104d157600080fd5b506102516104e0366004611f07565b610eeb565b3480156104f157600080fd5b506102c6610500366004611f07565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561052a57600080fd5b50610344610539366004611f07565b6001600160a01b031660009081526020819052604090205490565b34801561056057600080fd5b50610251610fca565b34801561057557600080fd5b50600c546001600160a01b0316610214565b34801561059357600080fd5b506102c66110e5565b3480156105a857600080fd5b5061025161115b565b3480156105bd57600080fd5b506102c66105cc366004611edd565b61131c565b3480156105dd57600080fd5b506102516105ec366004611f07565b611333565b3480156105fd57600080fd5b50610251611483565b34801561061257600080fd5b50610344610621366004612132565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561065857600080fd5b50610251610667366004612116565b61150d565b600c546001600160a01b031633146106bf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b600b5460405163efbdbabd60e01b8152831515600482015282151560248201526001600160a01b039091169063efbdbabd90604401600060405180830381600087803b15801561070e57600080fd5b505af1158015610722573d6000803e3d6000fd5b505050505050565b6000610737338484611586565b5060015b92915050565b600061074f6009600a61225f565b60085461075c919061226e565b905090565b600061076f6009600a61225f565b61077f906501229c53f680612290565b60000361078b57600080fd5b6107976009600a61225f565b61075c906501229c53f680612290565b6001600160a01b03831660009081526003602090815260408083203384529091528120546000191461080c576001600160a01b0384166000908152600360209081526040808320338452909152812080548492906108069084906122a7565b90915550505b61081784848461167f565b949350505050565b600c546001600160a01b0316331461086d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b606461087b6009600a61225f565b61088b906501229c53f680612290565b610895919061226e565b81836108a36009600a61225f565b6108b3906501229c53f680612290565b6108bd9190612290565b6108c7919061226e565b101561093b5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e0000000000000000000000000000000060648201526084016106b6565b80826109496009600a61225f565b610959906501229c53f680612290565b6109639190612290565b61096d919061226e565b6008555050565b600c546001600160a01b031633146109c25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b8051825114610a135760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e000000000000000000000060448201526064016106b6565b60005b82518161ffff161015610b2757610a2f6009600a61225f565b828261ffff1681518110610a4557610a456122ba565b6020026020010151610a579190612290565b336000908152602081905260409020541015610ab55760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e000000000000000000000000000060448201526064016106b6565b610b1433848361ffff1681518110610acf57610acf6122ba565b60200260200101516009600a610ae5919061225f565b858561ffff1681518110610afb57610afb6122ba565b6020026020010151610b0d9190612290565b6001611a02565b5080610b1f816122d0565b915050610a16565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610b8691906122f1565b610b926009600a61225f565b610ba2906501229c53f680612290565b61075c91906122a7565b6000610bba6009600a61225f565b610bca906501229c53f680612290565b600003610bd657600080fd5b50600990565b600c546001600160a01b03163314610c2a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600b546040516333251a0b60e01b81526001600160a01b038381166004830152909116906333251a0b90602401600060405180830381600087803b158015610c7157600080fd5b505af1158015610c85573d6000803e3d6000fd5b5050505050565b600c546001600160a01b03163314610cda5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600c546001600160a01b03163314610d535760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b6001600160a01b038116610dcf5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016106b6565b61deac196001600160a01b03821601610e505760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016106b6565b600c546001600160a01b031660009081526020819052604090205415610e9957600c546001600160a01b0316600081815260208190526040902054610e9791908390610b0d565b505b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c546001600160a01b03163314610f395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600a54600160a01b900460ff1615610f5057600080fd5b306001600160a01b03821603610fa85760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e00000000000000000000000000000000000060448201526064016106b6565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b031633146110185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600a54600160a01b900460ff166110975760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e000000000000000000000000000000000060648201526084016106b6565b600c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600c546000906001600160a01b031633146111365760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b60095461115590309061010090046001600160a01b0316600019611586565b50600190565b600c546001600160a01b031633146111a95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600a54600160a01b900460ff16156112035760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016106b6565b600a54600160a81b900460ff1661125c5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016106b6565b600b546001600160a01b031661127f57600b80546001600160a01b031916301790555b600b54600a54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152911690636c115c3490608401600060405180830381600087803b1580156112eb57600080fd5b505af19250505080156112fc575060015b50600a805460ff60a01b1916600160a01b1790556007805460ff19169055565b600061132933848461167f565b5060019392505050565b600c546001600160a01b031633146113815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600c546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa1580156113d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fc9190612304565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561145f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b27919061231d565b600c546001600160a01b031633146114d15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561150a573d6000803e3d6000fd5b50565b600c546001600160a01b0316331461155b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166115d25760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106b6565b6001600160a01b03821661161e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106b6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166116e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106b6565b6001600160a01b0383166117475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106b6565b600082116117a95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106b6565b6001600160a01b0384166000908152600160205260408120548190819060ff16156117d75760019250611805565b6001600160a01b03861660009081526001602052604090205460ff16156118015760019150611805565b5060015b61180f8787611c3c565b156119eb57600a54600160a01b900460ff1661191757806118725760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016106b6565b6001600160a01b03871660009081526005602052604090205460ff161580156118b457506001600160a01b03861660009081526005602052604090205460ff16155b156119175760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016106b6565b6009546001600160a01b038781166101009092041614801590611938575081155b156119eb576001600160a01b03861660009081526006602052604090205460ff166119eb5760085485611980886001600160a01b031660009081526020819052604090205490565b61198a91906122f1565b11156119eb5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016106b6565b6119f787878784611a02565b979650505050505050565b6000611a0e8585611c3c565b15611aa257600b5460405163ecd07a5360e01b81526001600160a01b038781166004830152868116602483015260448201869052600092169063ecd07a53906064016020604051808303816000875af1925050508015611a8b575060408051601f3d908101601f19168201909252611a889181019061231d565b60015b611a9457600080fd5b905080611aa057600080fd5b505b6001600160a01b03851660009081526020819052604081208054859290611aca9084906122a7565b90915550506001600160a01b03841660009081526020819052604081208054859290611af79084906122f1565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b4391815260200190565b60405180910390a3600a54600160a81b900460ff16611c3157611b668585611d47565b600a54600160a81b900460ff16158015611b855750611b858585611c3c565b8015611baa57506001600160a01b03851660009081526005602052604090205460ff16155b8015611bcf57506001600160a01b03841660009081526005602052604090205460ff16155b8015611bd9575081155b15611c315760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016106b6565b506001949350505050565b600c546000906001600160a01b03848116911614801590611c6b5750600c546001600160a01b03838116911614155b8015611c825750600c546001600160a01b03163214155b8015611ca757506001600160a01b03821660009081526004602052604090205460ff16155b8015611ccc57506001600160a01b03831660009081526004602052604090205460ff16155b8015611ce357506001600160a01b03821661dead14155b8015611cf757506001600160a01b03821615155b8015611d0c57506001600160a01b0383163014155b8015611d265750600b546001600160a01b03848116911614155b8015611d405750600b546001600160a01b03838116911614155b9392505050565b600a54600160a81b900460ff1615611dad5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016106b6565b611db78282611c3c565b158015611dd15750600a546001600160a01b038281169116145b15611e28576001600160a01b038083166000908152600460205260409020805460ff19166001179055600a805460ff60a81b1916600160a81b179055600b5416611e2857600b80546001600160a01b031916301790555b5050565b801515811461150a57600080fd5b60008060408385031215611e4d57600080fd5b8235611e5881611e2c565b91506020830135611e6881611e2c565b809150509250929050565b600060208083528351808285015260005b81811015611ea057858101830151858201604001528201611e84565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611ed857600080fd5b919050565b60008060408385031215611ef057600080fd5b611ef983611ec1565b946020939093013593505050565b600060208284031215611f1957600080fd5b611d4082611ec1565b600080600060608486031215611f3757600080fd5b611f4084611ec1565b9250611f4e60208501611ec1565b9150604084013590509250925092565b60008060408385031215611f7157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fbf57611fbf611f80565b604052919050565b600067ffffffffffffffff821115611fe157611fe1611f80565b5060051b60200190565b600082601f830112611ffc57600080fd5b8135602061201161200c83611fc7565b611f96565b82815260059290921b8401810191818101908684111561203057600080fd5b8286015b8481101561204b5780358352918301918301612034565b509695505050505050565b6000806040838503121561206957600080fd5b823567ffffffffffffffff8082111561208157600080fd5b818501915085601f83011261209557600080fd5b813560206120a561200c83611fc7565b82815260059290921b840181019181810190898411156120c457600080fd5b948201945b838610156120e9576120da86611ec1565b825294820194908201906120c9565b965050860135925050808211156120ff57600080fd5b5061210c85828601611feb565b9150509250929050565b6000806040838503121561212957600080fd5b611e5883611ec1565b6000806040838503121561214557600080fd5b61214e83611ec1565b915061215c60208401611ec1565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156121b657816000190482111561219c5761219c612165565b808516156121a957918102915b93841c9390800290612180565b509250929050565b6000826121cd5750600161073b565b816121da5750600061073b565b81600181146121f057600281146121fa57612216565b600191505061073b565b60ff84111561220b5761220b612165565b50506001821b61073b565b5060208310610133831016604e8410600b8410161715612239575081810a61073b565b612243838361217b565b806000190482111561225757612257612165565b029392505050565b6000611d4060ff8416836121be565b60008261228b57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761073b5761073b612165565b8181038181111561073b5761073b612165565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036122e7576122e7612165565b6001019392505050565b8082018082111561073b5761073b612165565b60006020828403121561231657600080fd5b5051919050565b60006020828403121561232f57600080fd5b8151611d4081611e2c56fea264697066735822122071b9a0bc8790a477cdfaf4034bd288e059b3764d93ce2f96a6c6f34e0094a62264736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c8063452ed4f11161010d578063893d20e8116100a0578063a9059cbb1161006f578063a9059cbb146105b1578063ab558e4d146105d1578063c3513f6d146105f1578063dd62ed3e14610606578063feadde9c1461064c57600080fd5b8063893d20e8146105695780638a63bd9b146105875780638a8c523c1461059c57806395d89b411461025357600080fd5b80635c24b074116100dc5780635c24b074146104c55780635cce86cd146104e557806370a082311461051e578063715018a61461055457600080fd5b8063452ed4f1146104435780634ada218b146104635780634fb2e45d1461048457806350a8e016146104a457600080fd5b806318160ddd116101855780632b112e49116101545780632b112e49146103c7578063313ce567146103dc57806333251a0b1461040357806336fddb041461042357600080fd5b806318160ddd1461035257806323b872dd1461036757806326003957146103875780632610eaca146103a757600080fd5b806307dd79e0116101c157806307dd79e0146102ac578063095ea7b3146102d65780630dcbcf1c146102f65780630fa604e41461032f57600080fd5b806303fd2a45146101fe578063044df7261461023157806306fdde03146102535780630758d9241461028757600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021461dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023d57600080fd5b5061025161024c366004611e3a565b61066c565b005b34801561025f57600080fd5b506040805180820182526005815264119551125560da1b602082015290516102289190611e73565b34801561029357600080fd5b506009546102149061010090046001600160a01b031681565b3480156102b857600080fd5b506009546102c69060ff1681565b6040519015158152602001610228565b3480156102e257600080fd5b506102c66102f1366004611edd565b61072a565b34801561030257600080fd5b506102c6610311366004611f07565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561033b57600080fd5b50610344610741565b604051908152602001610228565b34801561035e57600080fd5b50610344610761565b34801561037357600080fd5b506102c6610382366004611f22565b6107a7565b34801561039357600080fd5b506102516103a2366004611f5e565b61081f565b3480156103b357600080fd5b506102516103c2366004612056565b610974565b3480156103d357600080fd5b50610344610b2c565b3480156103e857600080fd5b506103f1610bac565b60405160ff9091168152602001610228565b34801561040f57600080fd5b5061025161041e366004611f07565b610bdc565b34801561042f57600080fd5b5061025161043e366004612116565b610c8c565b34801561044f57600080fd5b50600a54610214906001600160a01b031681565b34801561046f57600080fd5b50600a546102c690600160a01b900460ff1681565b34801561049057600080fd5b5061025161049f366004611f07565b610d05565b3480156104b057600080fd5b50600a546102c690600160a81b900460ff1681565b3480156104d157600080fd5b506102516104e0366004611f07565b610eeb565b3480156104f157600080fd5b506102c6610500366004611f07565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561052a57600080fd5b50610344610539366004611f07565b6001600160a01b031660009081526020819052604090205490565b34801561056057600080fd5b50610251610fca565b34801561057557600080fd5b50600c546001600160a01b0316610214565b34801561059357600080fd5b506102c66110e5565b3480156105a857600080fd5b5061025161115b565b3480156105bd57600080fd5b506102c66105cc366004611edd565b61131c565b3480156105dd57600080fd5b506102516105ec366004611f07565b611333565b3480156105fd57600080fd5b50610251611483565b34801561061257600080fd5b50610344610621366004612132565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561065857600080fd5b50610251610667366004612116565b61150d565b600c546001600160a01b031633146106bf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b600b5460405163efbdbabd60e01b8152831515600482015282151560248201526001600160a01b039091169063efbdbabd90604401600060405180830381600087803b15801561070e57600080fd5b505af1158015610722573d6000803e3d6000fd5b505050505050565b6000610737338484611586565b5060015b92915050565b600061074f6009600a61225f565b60085461075c919061226e565b905090565b600061076f6009600a61225f565b61077f906501229c53f680612290565b60000361078b57600080fd5b6107976009600a61225f565b61075c906501229c53f680612290565b6001600160a01b03831660009081526003602090815260408083203384529091528120546000191461080c576001600160a01b0384166000908152600360209081526040808320338452909152812080548492906108069084906122a7565b90915550505b61081784848461167f565b949350505050565b600c546001600160a01b0316331461086d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b606461087b6009600a61225f565b61088b906501229c53f680612290565b610895919061226e565b81836108a36009600a61225f565b6108b3906501229c53f680612290565b6108bd9190612290565b6108c7919061226e565b101561093b5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e0000000000000000000000000000000060648201526084016106b6565b80826109496009600a61225f565b610959906501229c53f680612290565b6109639190612290565b61096d919061226e565b6008555050565b600c546001600160a01b031633146109c25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b8051825114610a135760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e000000000000000000000060448201526064016106b6565b60005b82518161ffff161015610b2757610a2f6009600a61225f565b828261ffff1681518110610a4557610a456122ba565b6020026020010151610a579190612290565b336000908152602081905260409020541015610ab55760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e000000000000000000000000000060448201526064016106b6565b610b1433848361ffff1681518110610acf57610acf6122ba565b60200260200101516009600a610ae5919061225f565b858561ffff1681518110610afb57610afb6122ba565b6020026020010151610b0d9190612290565b6001611a02565b5080610b1f816122d0565b915050610a16565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610b8691906122f1565b610b926009600a61225f565b610ba2906501229c53f680612290565b61075c91906122a7565b6000610bba6009600a61225f565b610bca906501229c53f680612290565b600003610bd657600080fd5b50600990565b600c546001600160a01b03163314610c2a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600b546040516333251a0b60e01b81526001600160a01b038381166004830152909116906333251a0b90602401600060405180830381600087803b158015610c7157600080fd5b505af1158015610c85573d6000803e3d6000fd5b5050505050565b600c546001600160a01b03163314610cda5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600c546001600160a01b03163314610d535760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b6001600160a01b038116610dcf5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016106b6565b61deac196001600160a01b03821601610e505760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016106b6565b600c546001600160a01b031660009081526020819052604090205415610e9957600c546001600160a01b0316600081815260208190526040902054610e9791908390610b0d565b505b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c546001600160a01b03163314610f395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600a54600160a01b900460ff1615610f5057600080fd5b306001600160a01b03821603610fa85760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e00000000000000000000000000000000000060448201526064016106b6565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b031633146110185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600a54600160a01b900460ff166110975760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e000000000000000000000000000000000060648201526084016106b6565b600c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600c546000906001600160a01b031633146111365760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b60095461115590309061010090046001600160a01b0316600019611586565b50600190565b600c546001600160a01b031633146111a95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600a54600160a01b900460ff16156112035760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016106b6565b600a54600160a81b900460ff1661125c5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016106b6565b600b546001600160a01b031661127f57600b80546001600160a01b031916301790555b600b54600a54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152911690636c115c3490608401600060405180830381600087803b1580156112eb57600080fd5b505af19250505080156112fc575060015b50600a805460ff60a01b1916600160a01b1790556007805460ff19169055565b600061132933848461167f565b5060019392505050565b600c546001600160a01b031633146113815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600c546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa1580156113d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fc9190612304565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561145f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b27919061231d565b600c546001600160a01b031633146114d15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561150a573d6000803e3d6000fd5b50565b600c546001600160a01b0316331461155b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106b6565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166115d25760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106b6565b6001600160a01b03821661161e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106b6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166116e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106b6565b6001600160a01b0383166117475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106b6565b600082116117a95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106b6565b6001600160a01b0384166000908152600160205260408120548190819060ff16156117d75760019250611805565b6001600160a01b03861660009081526001602052604090205460ff16156118015760019150611805565b5060015b61180f8787611c3c565b156119eb57600a54600160a01b900460ff1661191757806118725760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016106b6565b6001600160a01b03871660009081526005602052604090205460ff161580156118b457506001600160a01b03861660009081526005602052604090205460ff16155b156119175760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016106b6565b6009546001600160a01b038781166101009092041614801590611938575081155b156119eb576001600160a01b03861660009081526006602052604090205460ff166119eb5760085485611980886001600160a01b031660009081526020819052604090205490565b61198a91906122f1565b11156119eb5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016106b6565b6119f787878784611a02565b979650505050505050565b6000611a0e8585611c3c565b15611aa257600b5460405163ecd07a5360e01b81526001600160a01b038781166004830152868116602483015260448201869052600092169063ecd07a53906064016020604051808303816000875af1925050508015611a8b575060408051601f3d908101601f19168201909252611a889181019061231d565b60015b611a9457600080fd5b905080611aa057600080fd5b505b6001600160a01b03851660009081526020819052604081208054859290611aca9084906122a7565b90915550506001600160a01b03841660009081526020819052604081208054859290611af79084906122f1565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b4391815260200190565b60405180910390a3600a54600160a81b900460ff16611c3157611b668585611d47565b600a54600160a81b900460ff16158015611b855750611b858585611c3c565b8015611baa57506001600160a01b03851660009081526005602052604090205460ff16155b8015611bcf57506001600160a01b03841660009081526005602052604090205460ff16155b8015611bd9575081155b15611c315760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016106b6565b506001949350505050565b600c546000906001600160a01b03848116911614801590611c6b5750600c546001600160a01b03838116911614155b8015611c825750600c546001600160a01b03163214155b8015611ca757506001600160a01b03821660009081526004602052604090205460ff16155b8015611ccc57506001600160a01b03831660009081526004602052604090205460ff16155b8015611ce357506001600160a01b03821661dead14155b8015611cf757506001600160a01b03821615155b8015611d0c57506001600160a01b0383163014155b8015611d265750600b546001600160a01b03848116911614155b8015611d405750600b546001600160a01b03838116911614155b9392505050565b600a54600160a81b900460ff1615611dad5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016106b6565b611db78282611c3c565b158015611dd15750600a546001600160a01b038281169116145b15611e28576001600160a01b038083166000908152600460205260409020805460ff19166001179055600a805460ff60a81b1916600160a81b179055600b5416611e2857600b80546001600160a01b031916301790555b5050565b801515811461150a57600080fd5b60008060408385031215611e4d57600080fd5b8235611e5881611e2c565b91506020830135611e6881611e2c565b809150509250929050565b600060208083528351808285015260005b81811015611ea057858101830151858201604001528201611e84565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611ed857600080fd5b919050565b60008060408385031215611ef057600080fd5b611ef983611ec1565b946020939093013593505050565b600060208284031215611f1957600080fd5b611d4082611ec1565b600080600060608486031215611f3757600080fd5b611f4084611ec1565b9250611f4e60208501611ec1565b9150604084013590509250925092565b60008060408385031215611f7157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fbf57611fbf611f80565b604052919050565b600067ffffffffffffffff821115611fe157611fe1611f80565b5060051b60200190565b600082601f830112611ffc57600080fd5b8135602061201161200c83611fc7565b611f96565b82815260059290921b8401810191818101908684111561203057600080fd5b8286015b8481101561204b5780358352918301918301612034565b509695505050505050565b6000806040838503121561206957600080fd5b823567ffffffffffffffff8082111561208157600080fd5b818501915085601f83011261209557600080fd5b813560206120a561200c83611fc7565b82815260059290921b840181019181810190898411156120c457600080fd5b948201945b838610156120e9576120da86611ec1565b825294820194908201906120c9565b965050860135925050808211156120ff57600080fd5b5061210c85828601611feb565b9150509250929050565b6000806040838503121561212957600080fd5b611e5883611ec1565b6000806040838503121561214557600080fd5b61214e83611ec1565b915061215c60208401611ec1565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156121b657816000190482111561219c5761219c612165565b808516156121a957918102915b93841c9390800290612180565b509250929050565b6000826121cd5750600161073b565b816121da5750600061073b565b81600181146121f057600281146121fa57612216565b600191505061073b565b60ff84111561220b5761220b612165565b50506001821b61073b565b5060208310610133831016604e8410600b8410161715612239575081810a61073b565b612243838361217b565b806000190482111561225757612257612165565b029392505050565b6000611d4060ff8416836121be565b60008261228b57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761073b5761073b612165565b8181038181111561073b5761073b612165565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036122e7576122e7612165565b6001019392505050565b8082018082111561073b5761073b612165565b60006020828403121561231657600080fd5b5051919050565b60006020828403121561232f57600080fd5b8151611d4081611e2c56fea264697066735822122071b9a0bc8790a477cdfaf4034bd288e059b3764d93ce2f96a6c6f34e0094a62264736f6c63430008130033

Deployed Bytecode Sourcemap

3951:12144:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4869:73;;;;;;;;;;;;4900:42;4869:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;4869:73:0;;;;;;;;11344:153;;;;;;;;;;-1:-1:-1;11344:153:0;;;;;:::i;:::-;;:::i;:::-;;8663:80;;;;;;;;;;-1:-1:-1;8735:5:0;;;;;;;;;;;-1:-1:-1;;;8735:5:0;;;;8663:80;;;;8735:5;8663:80;:::i;4808:26::-;;;;;;;;;;-1:-1:-1;4808:26:0;;;;;;;-1:-1:-1;;;;;4808:26:0;;;4775;;;;;;;;;;-1:-1:-1;4775:26:0;;;;;;;;;;;1715:14:1;;1708:22;1690:41;;1678:2;1663:18;4775:26:0;1550:187:1;9271:161:0;;;;;;;;;;-1:-1:-1;9271:161:0;;;;;:::i;:::-;;:::i;10773:140::-;;;;;;;;;;-1:-1:-1;10773:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;10871:34:0;10847:4;10871:34;;;:25;:34;;;;;;;;;10773:140;11777:114;;;;;;;;;;;;;:::i;:::-;;;2539:25:1;;;2527:2;2512:18;11777:114:0;2393:177:1;8334:115:0;;;;;;;;;;;;;:::i;9941:306::-;;;;;;;;;;-1:-1:-1;9941:306:0;;;;;:::i;:::-;;:::i;11505:264::-;;;;;;;;;;-1:-1:-1;11505:264:0;;;;;:::i;:::-;;:::i;14861:433::-;;;;;;;;;;-1:-1:-1;14861:433:0;;;;;:::i;:::-;;:::i;11077:141::-;;;;;;;;;;;;;:::i;8455:112::-;;;;;;;;;;;;;:::i;:::-;;;5751:4:1;5739:17;;;5721:36;;5709:2;5694:18;8455:112:0;5579:184:1;11226:110:0;;;;;;;;;;-1:-1:-1;11226:110:0;;;;;:::i;:::-;;:::i;10625:140::-;;;;;;;;;;-1:-1:-1;10625:140:0;;;;;:::i;:::-;;:::i;4841:21::-;;;;;;;;;;-1:-1:-1;4841:21:0;;;;-1:-1:-1;;;;;4841:21:0;;;4949:34;;;;;;;;;;-1:-1:-1;4949:34:0;;;;-1:-1:-1;;;4949:34:0;;;;;;7167:539;;;;;;;;;;-1:-1:-1;7167:539:0;;;;;:::i;:::-;;:::i;4990:36::-;;;;;;;;;;-1:-1:-1;4990:36:0;;;;-1:-1:-1;;;4990:36:0;;;;;;10255:222;;;;;;;;;;-1:-1:-1;10255:222:0;;;;;:::i;:::-;;:::i;10485:132::-;;;;;;;;;;-1:-1:-1;10485:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;10579:30:0;10555:4;10579:30;;;:21;:30;;;;;;;;;10485:132;8973:117;;;;;;;;;;-1:-1:-1;8973:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;9066:16:0;9039:7;9066:16;;;;;;;;;;;;8973:117;7714:265;;;;;;;;;;;;;:::i;8749:79::-;;;;;;;;;;-1:-1:-1;8819:6:0;;-1:-1:-1;;;;;8819:6:0;8749:79;;9758:175;;;;;;;;;;;;;:::i;14069:480::-;;;;;;;;;;;;;:::i;9098:165::-;;;;;;;;;;-1:-1:-1;9098:165:0;;;;;:::i;:::-;;:::i;14678:175::-;;;;;;;;;;-1:-1:-1;14678:175:0;;;;;:::i;:::-;;:::i;14557:109::-;;;;;;;;;;;;;:::i;8834:133::-;;;;;;;;;;-1:-1:-1;8834:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8936:19:0;;;8918:7;8936:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8834:133;10921:148;;;;;;;;;;-1:-1:-1;10921:148:0;;;;;:::i;:::-;;:::i;11344:153::-;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;;;;;;;;;11439:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;11439:50:0;;6886:14:1;;6879:22;11439:50:0::1;::::0;::::1;6861:41:1::0;6945:14;;6938:22;6918:18;;;6911:50;-1:-1:-1;;;;;11439:11:0;;::::1;::::0;:26:::1;::::0;6834:18:1;;11439:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11344:153:::0;;:::o;9271:161::-;9348:4;9365:37;9374:10;9386:7;9395:6;9365:8;:37::i;:::-;-1:-1:-1;9420:4:0;9271:161;;;;;:::o;11777:114::-;11824:7;11869:13;4630:1;11869:2;:13;:::i;:::-;11851:14;;:32;;;;:::i;:::-;11844:39;;11777:114;:::o;8334:115::-;8389:7;4690:13;4630:1;4690:2;:13;:::i;:::-;4673:30;;4477:17;4673:30;:::i;:::-;8415:1;8404:12;8400:31;;8420:8;;;8400:31;4690:13;4630:1;4690:2;:13;:::i;:::-;4673:30;;4477:17;4673:30;:::i;9941:306::-;-1:-1:-1;;;;;10062:19:0;;10041:4;10062:19;;;:11;:19;;;;;;;;10082:10;10062:31;;;;;;;;-1:-1:-1;;10062:52:0;10058:126;;-1:-1:-1;;;;;10131:19:0;;;;;;:11;:19;;;;;;;;10151:10;10131:31;;;;;;;:41;;10166:6;;10131:19;:41;;10166:6;;10131:41;:::i;:::-;;;;-1:-1:-1;;10058:126:0;10203:36;10213:6;10221:9;10232:6;10203:9;:36::i;:::-;10196:43;9941:306;-1:-1:-1;;;;9941:306:0:o;11505:264::-;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;11647:3:::1;4690:13;4630:1;4690:2;:13;:::i;:::-;4673:30;::::0;4477:17:::1;4673:30;:::i;:::-;11637:13;;;;:::i;:::-;11625:7:::0;11614;4690:13:::1;4630:1;4690:2;:13;:::i;:::-;4673:30;::::0;4477:17:::1;4673:30;:::i;:::-;11604:17;;;;:::i;:::-;11603:29;;;;:::i;:::-;:48;;11595:109;;;::::0;-1:-1:-1;;;11595:109:0;;9217:2:1;11595:109:0::1;::::0;::::1;9199:21:1::0;9256:2;9236:18;;;9229:30;9295:34;9275:18;;;9268:62;9366:18;9346;;;9339:46;9402:19;;11595:109:0::1;9015:412:1::0;11595:109:0::1;11754:7:::0;11743;4690:13:::1;4630:1;4690:2;:13;:::i;:::-;4673:30;::::0;4477:17:::1;4673:30;:::i;:::-;11733:17;;;;:::i;:::-;11732:29;;;;:::i;:::-;11715:14;:46:::0;-1:-1:-1;;11505:264:0:o;14861:433::-;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;14996:7:::1;:14;14977:8;:15;:33;14969:67;;;::::0;-1:-1:-1;;;14969:67:0;;9634:2:1;14969:67:0::1;::::0;::::1;9616:21:1::0;9673:2;9653:18;;;9646:30;9712:23;9692:18;;;9685:51;9753:18;;14969:67:0::1;9432:345:1::0;14969:67:0::1;15052:8;15047:240;15070:8;:15;15066:1;:19;;;15047:240;;;15151:13;4630:1;15151:2;:13;:::i;:::-;15140:7;15148:1;15140:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;15125:10;9039:7:::0;9066:16;;;;;;;;;;;15115:49:::1;;15107:80;;;::::0;-1:-1:-1;;;15107:80:0;;10116:2:1;15107:80:0::1;::::0;::::1;10098:21:1::0;10155:2;10135:18;;;10128:30;10194:20;10174:18;;;10167:48;10232:18;;15107:80:0::1;9914:342:1::0;15107:80:0::1;15202:73;15219:10;15231:8;15240:1;15231:11;;;;;;;;;;:::i;:::-;;;;;;;4630:1;15255:2;:13;;;;:::i;:::-;15244:7;15252:1;15244:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;15270:4;15202:16;:73::i;:::-;-1:-1:-1::0;15087:3:0;::::1;::::0;::::1;:::i;:::-;;;;15047:240;;;;14861:433:::0;;:::o;11077:141::-;11130:7;9066:16;;;;;;4900:42;9066:16;;;;11169:39;;9066:16;11169:39;:::i;:::-;4690:13;4630:1;4690:2;:13;:::i;:::-;4673:30;;4477:17;4673:30;:::i;:::-;11158:51;;;;:::i;8455:112::-;8507:5;4690:13;4630:1;4690:2;:13;:::i;:::-;4673:30;;4477:17;4673:30;:::i;:::-;8531:1;8520:12;8516:31;;8536:8;;;8516:31;-1:-1:-1;4630:1:0;;8455:112::o;11226:110::-;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;11295:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;11295:33:0;;-1:-1:-1;;;;;178:55:1;;;11295:33:0::1;::::0;::::1;160:74:1::0;11295:11:0;;::::1;::::0;:24:::1;::::0;133:18:1;;11295:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11226:110:::0;:::o;10625:140::-;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;-1:-1:-1;;;;;10717:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;10717:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10625:140::o;7167:539::-;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;-1:-1:-1;;;;;7246:22:0;::::1;7238:96;;;::::0;-1:-1:-1;;;7238:96:0;;10795:2:1;7238:96:0::1;::::0;::::1;10777:21:1::0;10834:2;10814:18;;;10807:30;10873:34;10853:18;;;10846:62;10944:31;10924:18;;;10917:59;10993:19;;7238:96:0::1;10593:425:1::0;7238:96:0::1;-1:-1:-1::0;;;;;;;7353:16:0;::::1;::::0;7345:90:::1;;;::::0;-1:-1:-1;;;7345:90:0;;10795:2:1;7345:90:0::1;::::0;::::1;10777:21:1::0;10834:2;10814:18;;;10807:30;10873:34;10853:18;;;10846:62;10944:31;10924:18;;;10917:59;10993:19;;7345:90:0::1;10593:425:1::0;7345:90:0::1;7460:6;::::0;-1:-1:-1;;;;;7460:6:0::1;7470:1;9066:16:::0;;;;;;;;;;;7450:21;7446:113:::1;;7505:6;::::0;-1:-1:-1;;;;;7505:6:0::1;9039:7:::0;9066:16;;;;;;;;;;;7488:59:::1;::::0;7505:6;7513:8;;7523:17:::1;8973:117:::0;7488:59:::1;;7446:113;7598:6;::::0;;-1:-1:-1;;;;;7615:17:0;;::::1;-1:-1:-1::0;;;;;;7615:17:0;::::1;::::0;::::1;::::0;;;7648:40:::1;::::0;7598:6;::::1;::::0;7615:17;7598:6;;7648:40:::1;::::0;7579:16:::1;::::0;7648:40:::1;7227:479;7167:539:::0;:::o;10255:222::-;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;10339:14:::1;::::0;-1:-1:-1;;;10339:14:0;::::1;;;10338:15;10330:24;;;::::0;::::1;;10396:4;-1:-1:-1::0;;;;;10373:28:0;::::1;::::0;10365:55:::1;;;::::0;-1:-1:-1;;;10365:55:0;;11225:2:1;10365:55:0::1;::::0;::::1;11207:21:1::0;11264:2;11244:18;;;11237:30;11303:16;11283:18;;;11276:44;11337:18;;10365:55:0::1;11023:338:1::0;10365:55:0::1;10431:11;:38:::0;;-1:-1:-1;;;;;;10431:38:0::1;-1:-1:-1::0;;;;;10431:38:0;;;::::1;::::0;;;::::1;::::0;;10255:222::o;7714:265::-;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;7781:14:::1;::::0;-1:-1:-1;;;7781:14:0;::::1;;;7773:74;;;::::0;-1:-1:-1;;;7773:74:0;;11568:2:1;7773:74:0::1;::::0;::::1;11550:21:1::0;11607:2;11587:18;;;11580:30;11646:34;11626:18;;;11619:62;11717:17;11697:18;;;11690:45;11752:19;;7773:74:0::1;11366:411:1::0;7773:74:0::1;7877:6;::::0;;-1:-1:-1;;;;;;7894:19:0;::::1;::::0;;;7929:42:::1;::::0;-1:-1:-1;;;;;7877:6:0;;::::1;::::0;7858:16:::1;::::0;7877:6;;7929:42:::1;::::0;7858:16;;7929:42:::1;7762:217;7714:265::o:0;9758:175::-;7021:6;;9824:4;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;9873:9:::1;::::0;9841:62:::1;::::0;9858:4:::1;::::0;9873:9:::1;::::0;::::1;-1:-1:-1::0;;;;;9873:9:0::1;-1:-1:-1::0;;9841:8:0::1;:62::i;:::-;-1:-1:-1::0;9921:4:0::1;9758:175:::0;:::o;14069:480::-;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;14131:14:::1;::::0;-1:-1:-1;;;14131:14:0;::::1;;;14130:15;14122:52;;;::::0;-1:-1:-1;;;14122:52:0;;11984:2:1;14122:52:0::1;::::0;::::1;11966:21:1::0;12023:2;12003:18;;;11996:30;12062:26;12042:18;;;12035:54;12106:18;;14122:52:0::1;11782:348:1::0;14122:52:0::1;14193:16;::::0;-1:-1:-1;;;14193:16:0;::::1;;;14185:53;;;::::0;-1:-1:-1;;;14185:53:0;;12337:2:1;14185:53:0::1;::::0;::::1;12319:21:1::0;12376:2;12356:18;;;12349:30;12415:26;12395:18;;;12388:54;12459:18;;14185:53:0::1;12135:348:1::0;14185:53:0::1;14261:11;::::0;-1:-1:-1;;;;;14261:11:0::1;14249:106;;14303:11;:40:::0;;-1:-1:-1;;;;;;14303:40:0::1;14337:4;14303:40;::::0;;14249:106:::1;14369:11;::::0;14391:6:::1;::::0;14369:87:::1;::::0;-1:-1:-1;;;14369:87:0;;-1:-1:-1;;;;;14391:6:0;;::::1;14369:87;::::0;::::1;12711:74:1::0;12833:10;14406:12:0::1;12821:23:1::0;12801:18;;;12794:51;12893:18;14428:15:0::1;12881:31:1::0;12861:18;;;12854:59;4630:1:0::1;12929:18:1::0;;;12922:45;14369:11:0;::::1;::::0;:21:::1;::::0;12683:19:1;;14369:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;14365:103:::0;14478:14:::1;:21:::0;;-1:-1:-1;;;;14478:21:0::1;-1:-1:-1::0;;;14478:21:0::1;::::0;;14510:23:::1;:31:::0;;-1:-1:-1;;14510:31:0::1;::::0;;14069:480::o;9098:165::-;9176:4;9193:40;9203:10;9215:9;9226:6;9193:9;:40::i;:::-;-1:-1:-1;9251:4:0;;9098:165;-1:-1:-1;;;9098:165:0:o;14678:175::-;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;14806:6:::1;::::0;14814:30:::1;::::0;-1:-1:-1;;;14814:30:0;;14838:4:::1;14814:30;::::0;::::1;160:74:1::0;14774:5:0;;-1:-1:-1;;;;;14791:14:0;;::::1;::::0;::::1;::::0;14806:6;;;::::1;::::0;14791:14;;14814:15:::1;::::0;133:18:1;;14814:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14791:54;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;13359:55:1;;;14791:54:0::1;::::0;::::1;13341:74:1::0;13431:18;;;13424:34;13314:18;;14791:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14557:109::-:0;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;14619:6:::1;::::0;14611:47:::1;::::0;-1:-1:-1;;;;;14619:6:0;;::::1;::::0;14636:21:::1;14611:47:::0;::::1;;;::::0;14619:6:::1;14611:47:::0;14619:6;14611:47;14636:21;14619:6;14611:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14557:109::o:0;10921:148::-;7021:6;;-1:-1:-1;;;;;7021:6:0;7031:10;7021:20;7013:50;;;;-1:-1:-1;;;7013:50:0;;6555:2:1;7013:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7013:50:0;6353:341:1;7013:50:0;-1:-1:-1;;;;;11017:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;11017:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10921:148::o;9440:310::-;-1:-1:-1;;;;;9535:20:0;;9527:52;;;;-1:-1:-1;;;9527:52:0;;13921:2:1;9527:52:0;;;13903:21:1;13960:2;13940:18;;;13933:30;-1:-1:-1;;;13979:18:1;;;13972:49;14038:18;;9527:52:0;13719:343:1;9527:52:0;-1:-1:-1;;;;;9598:21:0;;9590:53;;;;-1:-1:-1;;;9590:53:0;;13921:2:1;9590:53:0;;;13903:21:1;13960:2;13940:18;;;13933:30;-1:-1:-1;;;13979:18:1;;;13972:49;14038:18;;9590:53:0;13719:343:1;9590:53:0;-1:-1:-1;;;;;9656:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;9709:33;;2539:25:1;;;9709:33:0;;2512:18:1;9709:33:0;;;;;;;9440:310;;;:::o;12353:1277::-;12432:4;-1:-1:-1;;;;;12457:18:0;;12449:68;;;;-1:-1:-1;;;12449:68:0;;14269:2:1;12449:68:0;;;14251:21:1;14308:2;14288:18;;;14281:30;14347:34;14327:18;;;14320:62;-1:-1:-1;;;14398:18:1;;;14391:35;14443:19;;12449:68:0;14067:401:1;12449:68:0;-1:-1:-1;;;;;12536:16:0;;12528:64;;;;-1:-1:-1;;;12528:64:0;;14675:2:1;12528:64:0;;;14657:21:1;14714:2;14694:18;;;14687:30;14753:34;14733:18;;;14726:62;-1:-1:-1;;;14804:18:1;;;14797:33;14847:19;;12528:64:0;14473:399:1;12528:64:0;12620:1;12611:6;:10;12603:64;;;;-1:-1:-1;;;12603:64:0;;15079:2:1;12603:64:0;;;15061:21:1;15118:2;15098:18;;;15091:30;15157:34;15137:18;;;15130:62;-1:-1:-1;;;15208:18:1;;;15201:39;15257:19;;12603:64:0;14877:405:1;12603:64:0;-1:-1:-1;;;;;12766:13:0;;12678:8;12766:13;;;:7;:13;;;;;;12678:8;;;;12766:13;;12762:162;;;12802:4;12796:10;;12762:162;;;-1:-1:-1;;;;;12828:11:0;;;;;;:7;:11;;;;;;;;12824:100;;;12863:4;12856:11;;12824:100;;;-1:-1:-1;12908:4:0;12824:100;12938:20;12949:4;12955:2;12938:10;:20::i;:::-;12934:628;;;12979:14;;-1:-1:-1;;;12979:14:0;;;;12975:319;;13019:5;13014:265;;13049:34;;-1:-1:-1;;;13049:34:0;;15489:2:1;13049:34:0;;;15471:21:1;15528:2;15508:18;;;15501:30;15567:26;15547:18;;;15540:54;15611:18;;13049:34:0;15287:348:1;13014:265:0;-1:-1:-1;;;;;13114:31:0;;;;;;:25;:31;;;;;;;;13113:32;:66;;;;-1:-1:-1;;;;;;13150:29:0;;;;;;:25;:29;;;;;;;;13149:30;13113:66;13109:170;;;13204:55;;-1:-1:-1;;;13204:55:0;;15842:2:1;13204:55:0;;;15824:21:1;15881:2;15861:18;;;15854:30;15920:34;15900:18;;;15893:62;-1:-1:-1;;;15971:18:1;;;15964:43;16024:19;;13204:55:0;15640:409:1;13109:170:0;13326:9;;-1:-1:-1;;;;;13312:24:0;;;13326:9;;;;;13312:24;;;;:33;;;13341:4;13340:5;13312:33;13308:243;;;-1:-1:-1;;;;;13371:25:0;;;;;;:21;:25;;;;;;;;13366:170;;13455:14;;13445:6;13429:13;13439:2;-1:-1:-1;;;;;9066:16:0;9039:7;9066:16;;;;;;;;;;;;8973:117;13429:13;:22;;;;:::i;:::-;:40;;13421:95;;;;-1:-1:-1;;;13421:95:0;;16256:2:1;13421:95:0;;;16238:21:1;16295:2;16275:18;;;16268:30;16334:34;16314:18;;;16307:62;-1:-1:-1;;;16385:18:1;;;16378:40;16435:19;;13421:95:0;16054:406:1;13421:95:0;13581:41;13598:4;13604:2;13608:6;13616:5;13581:16;:41::i;:::-;13574:48;12353:1277;-1:-1:-1;;;;;;;12353:1277:0:o;15302:790::-;15400:4;15421:20;15432:4;15438:2;15421:10;:20::i;:::-;15417:228;;;15476:11;;:39;;-1:-1:-1;;;15476:39:0;;-1:-1:-1;;;;;16746:15:1;;;15476:39:0;;;16728:34:1;16798:15;;;16778:18;;;16771:43;16830:18;;;16823:34;;;15445:12:0;;15476:11;;:21;;16640:18:1;;15476:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;15476:39:0;;;;;;;;-1:-1:-1;;15476:39:0;;;;;;;;;;;;:::i;:::-;;;15472:122;;15583:8;;;15472:122;15566:5;-1:-1:-1;15612:7:0;15608:26;;15623:8;;;15608:26;15443:202;15417:228;-1:-1:-1;;;;;15655:13:0;;:7;:13;;;;;;;;;;:23;;15672:6;;15655:7;:23;;15672:6;;15655:23;:::i;:::-;;;;-1:-1:-1;;;;;;;15689:11:0;;:7;:11;;;;;;;;;;:21;;15704:6;;15689:7;:21;;15704:6;;15689:21;:::i;:::-;;;;;;;;15741:2;-1:-1:-1;;;;;15726:26:0;15735:4;-1:-1:-1;;;;;15726:26:0;;15745:6;15726:26;;;;2539:25:1;;2527:2;2512:18;;2393:177;15726:26:0;;;;;;;;15768:16;;-1:-1:-1;;;15768:16:0;;;;15763:298;;15801:28;15820:4;15826:2;15801:18;:28::i;:::-;15849:16;;-1:-1:-1;;;15849:16:0;;;;15848:17;:41;;;;;15869:20;15880:4;15886:2;15869:10;:20::i;:::-;15848:77;;;;-1:-1:-1;;;;;;15894:31:0;;;;;;:25;:31;;;;;;;;15893:32;15848:77;:111;;;;-1:-1:-1;;;;;;15930:29:0;;;;;;:25;:29;;;;;;;;15929:30;15848:111;:121;;;;;15964:5;15963:6;15848:121;15844:206;;;15990:44;;-1:-1:-1;;;15990:44:0;;17070:2:1;15990:44:0;;;17052:21:1;17109:2;17089:18;;;17082:30;17148:34;17128:18;;;17121:62;-1:-1:-1;;;17199:18:1;;;17192:32;17241:19;;15990:44:0;16868:398:1;15844:206:0;-1:-1:-1;16080:4:0;15302:790;;;;;;:::o;11899:446::-;12000:6;;11968:4;;-1:-1:-1;;;;;11992:14:0;;;12000:6;;11992:14;;;;:43;;-1:-1:-1;12029:6:0;;-1:-1:-1;;;;;12023:12:0;;;12029:6;;12023:12;;11992:43;:79;;;;-1:-1:-1;12065:6:0;;-1:-1:-1;;;;;12065:6:0;12052:9;:19;;11992:79;:118;;;;-1:-1:-1;;;;;;12089:21:0;;;;;;:17;:21;;;;;;;;12088:22;11992:118;:159;;;;-1:-1:-1;;;;;;12128:23:0;;;;;;:17;:23;;;;;;;;12127:24;11992:159;:186;;;;-1:-1:-1;;;;;;12168:10:0;;4900:42;12168:10;;11992:186;:219;;;;-1:-1:-1;;;;;;12195:16:0;;;;11992:219;:257;;;;-1:-1:-1;;;;;;12228:21:0;;12244:4;12228:21;;11992:257;:302;;;;-1:-1:-1;12282:11:0;;-1:-1:-1;;;;;12266:28:0;;;12282:11;;12266:28;;11992:302;:345;;;;-1:-1:-1;12325:11:0;;-1:-1:-1;;;;;12311:26:0;;;12325:11;;12311:26;;11992:345;11985:352;11899:446;-1:-1:-1;;;11899:446:0:o;13638:423::-;13721:16;;-1:-1:-1;;;13721:16:0;;;;13720:17;13712:65;;;;-1:-1:-1;;;13712:65:0;;17473:2:1;13712:65:0;;;17455:21:1;17512:2;17492:18;;;17485:30;17551:34;17531:18;;;17524:62;-1:-1:-1;;;17602:18:1;;;17595:33;17645:19;;13712:65:0;17271:399:1;13712:65:0;13793:20;13804:4;13810:2;13793:10;:20::i;:::-;13792:21;:37;;;;-1:-1:-1;13823:6:0;;-1:-1:-1;;;;;13817:12:0;;;13823:6;;13817:12;13792:37;13788:266;;;-1:-1:-1;;;;;13846:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;13846:30:0;13872:4;13846:30;;;13891:16;:23;;-1:-1:-1;;;;13891:23:0;-1:-1:-1;;;13891:23:0;;;13941:11;;;13929:114;;13987:11;:40;;-1:-1:-1;;;;;;13987:40:0;14021:4;13987:40;;;13929:114;13638:423;;:::o;245:118:1:-;331:5;324:13;317:21;310:5;307:32;297:60;;353:1;350;343:12;368:376;430:6;438;491:2;479:9;470:7;466:23;462:32;459:52;;;507:1;504;497:12;459:52;546:9;533:23;565:28;587:5;565:28;:::i;:::-;612:5;-1:-1:-1;669:2:1;654:18;;641:32;682:30;641:32;682:30;:::i;:::-;731:7;721:17;;;368:376;;;;;:::o;749:548::-;861:4;890:2;919;908:9;901:21;951:6;945:13;994:6;989:2;978:9;974:18;967:34;1019:1;1029:140;1043:6;1040:1;1037:13;1029:140;;;1138:14;;;1134:23;;1128:30;1104:17;;;1123:2;1100:26;1093:66;1058:10;;1029:140;;;1033:3;1218:1;1213:2;1204:6;1193:9;1189:22;1185:31;1178:42;1288:2;1281;1277:7;1272:2;1264:6;1260:15;1256:29;1245:9;1241:45;1237:54;1229:62;;;;749:548;;;;:::o;1742:196::-;1810:20;;-1:-1:-1;;;;;1859:54:1;;1849:65;;1839:93;;1928:1;1925;1918:12;1839:93;1742:196;;;:::o;1943:254::-;2011:6;2019;2072:2;2060:9;2051:7;2047:23;2043:32;2040:52;;;2088:1;2085;2078:12;2040:52;2111:29;2130:9;2111:29;:::i;:::-;2101:39;2187:2;2172:18;;;;2159:32;;-1:-1:-1;;;1943:254:1:o;2202:186::-;2261:6;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;2353:29;2372:9;2353:29;:::i;2575:328::-;2652:6;2660;2668;2721:2;2709:9;2700:7;2696:23;2692:32;2689:52;;;2737:1;2734;2727:12;2689:52;2760:29;2779:9;2760:29;:::i;:::-;2750:39;;2808:38;2842:2;2831:9;2827:18;2808:38;:::i;:::-;2798:48;;2893:2;2882:9;2878:18;2865:32;2855:42;;2575:328;;;;;:::o;2908:248::-;2976:6;2984;3037:2;3025:9;3016:7;3012:23;3008:32;3005:52;;;3053:1;3050;3043:12;3005:52;-1:-1:-1;;3076:23:1;;;3146:2;3131:18;;;3118:32;;-1:-1:-1;2908:248:1:o;3161:127::-;3222:10;3217:3;3213:20;3210:1;3203:31;3253:4;3250:1;3243:15;3277:4;3274:1;3267:15;3293:275;3364:2;3358:9;3429:2;3410:13;;-1:-1:-1;;3406:27:1;3394:40;;3464:18;3449:34;;3485:22;;;3446:62;3443:88;;;3511:18;;:::i;:::-;3547:2;3540:22;3293:275;;-1:-1:-1;3293:275:1:o;3573:183::-;3633:4;3666:18;3658:6;3655:30;3652:56;;;3688:18;;:::i;:::-;-1:-1:-1;3733:1:1;3729:14;3745:4;3725:25;;3573:183::o;3761:662::-;3815:5;3868:3;3861:4;3853:6;3849:17;3845:27;3835:55;;3886:1;3883;3876:12;3835:55;3922:6;3909:20;3948:4;3972:60;3988:43;4028:2;3988:43;:::i;:::-;3972:60;:::i;:::-;4066:15;;;4152:1;4148:10;;;;4136:23;;4132:32;;;4097:12;;;;4176:15;;;4173:35;;;4204:1;4201;4194:12;4173:35;4240:2;4232:6;4228:15;4252:142;4268:6;4263:3;4260:15;4252:142;;;4334:17;;4322:30;;4372:12;;;;4285;;4252:142;;;-1:-1:-1;4412:5:1;3761:662;-1:-1:-1;;;;;;3761:662:1:o;4428:1146::-;4546:6;4554;4607:2;4595:9;4586:7;4582:23;4578:32;4575:52;;;4623:1;4620;4613:12;4575:52;4663:9;4650:23;4692:18;4733:2;4725:6;4722:14;4719:34;;;4749:1;4746;4739:12;4719:34;4787:6;4776:9;4772:22;4762:32;;4832:7;4825:4;4821:2;4817:13;4813:27;4803:55;;4854:1;4851;4844:12;4803:55;4890:2;4877:16;4912:4;4936:60;4952:43;4992:2;4952:43;:::i;4936:60::-;5030:15;;;5112:1;5108:10;;;;5100:19;;5096:28;;;5061:12;;;;5136:19;;;5133:39;;;5168:1;5165;5158:12;5133:39;5192:11;;;;5212:148;5228:6;5223:3;5220:15;5212:148;;;5294:23;5313:3;5294:23;:::i;:::-;5282:36;;5245:12;;;;5338;;;;5212:148;;;5379:5;-1:-1:-1;;5422:18:1;;5409:32;;-1:-1:-1;;5453:16:1;;;5450:36;;;5482:1;5479;5472:12;5450:36;;5505:63;5560:7;5549:8;5538:9;5534:24;5505:63;:::i;:::-;5495:73;;;4428:1146;;;;;:::o;5768:315::-;5833:6;5841;5894:2;5882:9;5873:7;5869:23;5865:32;5862:52;;;5910:1;5907;5900:12;5862:52;5933:29;5952:9;5933:29;:::i;6088:260::-;6156:6;6164;6217:2;6205:9;6196:7;6192:23;6188:32;6185:52;;;6233:1;6230;6223:12;6185:52;6256:29;6275:9;6256:29;:::i;:::-;6246:39;;6304:38;6338:2;6327:9;6323:18;6304:38;:::i;:::-;6294:48;;6088:260;;;;;:::o;6972:127::-;7033:10;7028:3;7024:20;7021:1;7014:31;7064:4;7061:1;7054:15;7088:4;7085:1;7078:15;7104:422;7193:1;7236:5;7193:1;7250:270;7271:7;7261:8;7258:21;7250:270;;;7330:4;7326:1;7322:6;7318:17;7312:4;7309:27;7306:53;;;7339:18;;:::i;:::-;7389:7;7379:8;7375:22;7372:55;;;7409:16;;;;7372:55;7488:22;;;;7448:15;;;;7250:270;;;7254:3;7104:422;;;;;:::o;7531:806::-;7580:5;7610:8;7600:80;;-1:-1:-1;7651:1:1;7665:5;;7600:80;7699:4;7689:76;;-1:-1:-1;7736:1:1;7750:5;;7689:76;7781:4;7799:1;7794:59;;;;7867:1;7862:130;;;;7774:218;;7794:59;7824:1;7815:10;;7838:5;;;7862:130;7899:3;7889:8;7886:17;7883:43;;;7906:18;;:::i;:::-;-1:-1:-1;;7962:1:1;7948:16;;7977:5;;7774:218;;8076:2;8066:8;8063:16;8057:3;8051:4;8048:13;8044:36;8038:2;8028:8;8025:16;8020:2;8014:4;8011:12;8007:35;8004:77;8001:159;;;-1:-1:-1;8113:19:1;;;8145:5;;8001:159;8192:34;8217:8;8211:4;8192:34;:::i;:::-;8262:6;8258:1;8254:6;8250:19;8241:7;8238:32;8235:58;;;8273:18;;:::i;:::-;8311:20;;7531:806;-1:-1:-1;;;7531:806:1:o;8342:140::-;8400:5;8429:47;8470:4;8460:8;8456:19;8450:4;8429:47;:::i;8487:217::-;8527:1;8553;8543:132;;8597:10;8592:3;8588:20;8585:1;8578:31;8632:4;8629:1;8622:15;8660:4;8657:1;8650:15;8543:132;-1:-1:-1;8689:9:1;;8487:217::o;8709:168::-;8782:9;;;8813;;8830:15;;;8824:22;;8810:37;8800:71;;8851:18;;:::i;8882:128::-;8949:9;;;8970:11;;;8967:37;;;8984:18;;:::i;9782:127::-;9843:10;9838:3;9834:20;9831:1;9824:31;9874:4;9871:1;9864:15;9898:4;9895:1;9888:15;10261:197;10299:3;10327:6;10368:2;10361:5;10357:14;10395:2;10386:7;10383:15;10380:41;;10401:18;;:::i;:::-;10450:1;10437:15;;10261:197;-1:-1:-1;;;10261:197:1:o;10463:125::-;10528:9;;;10549:10;;;10546:36;;;10562:18;;:::i;12978:184::-;13048:6;13101:2;13089:9;13080:7;13076:23;13072:32;13069:52;;;13117:1;13114;13107:12;13069:52;-1:-1:-1;13140:16:1;;12978:184;-1:-1:-1;12978:184:1:o;13469:245::-;13536:6;13589:2;13577:9;13568:7;13564:23;13560:32;13557:52;;;13605:1;13602;13595:12;13557:52;13637:9;13631:16;13656:28;13678:5;13656:28;:::i

Swarm Source

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