ETH Price: $3,287.37 (-0.22%)
 

Overview

Max Total Supply

69,000,000,000 ROCKET

Holders

40

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 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:
RocketRaptor

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

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

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

/*


Rocket Raptor, the cutest AI-Generated Velociraptor, named after the SpaceX Rocket boosters, Join our fantastic community via our socials below!

> www.rocketraptor.xyz 
> Telegram: https://t.me/RocketJoinPortal
> Twitter: https://twitter.com/rocketraptoreth


*/

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 Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function setLpPair(address pair, bool enabled) external;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract RocketRaptor 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 = 69_000_000_000;
    string constant private _name = "Rocket Raptor";
    string constant private _symbol = "ROCKET";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;
    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    uint256 private _maxTxAmount = (_tTotal * 2) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;

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

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

    address public originalDeployer;
    address public operator;

    // Function to set an operator to allow someone other the deployer to create things such as launchpads.
    // Only callable by original deployer.
    function setOperator(address newOperator) public {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        address oldOperator = operator;
        if (oldOperator != address(0)) {
            _liquidityHolders[oldOperator] = false;
        }
        operator = newOperator;
        _liquidityHolders[newOperator] = true;
    }

    function renounceOriginalDeployer() external {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        setOperator(address(0));
        originalDeployer = 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) public onlyOwner {
        require(!tradingEnabled);
        require(_initializer != address(this), "Can't be self.");
        initializer = Initializer(_initializer);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[constructorLP] = true;
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

    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 {
        initializer.removeSniper(account);
    }

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

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function getMaxTX() external view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "Just don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
        }
    }

    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(initializer)
            && to != address(initializer);
    }

    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 (buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
        }

        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) {
            if (address(initializer) == address(0)){
                initializer = Initializer(address(this));
            } else {
                _liquidityHolders[from] = true;
                _hasLiqBeenAdded = true;
            }
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.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 initializer.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

API
[{"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":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","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":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originalDeployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOriginalDeployer","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":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"setOperator","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"}]

608060405260006002556007805460ff191660011790556064620000266012600a62000248565b6200003790641010b8720062000260565b6200004490600262000260565b6200005091906200027a565b600955600a805461ffff19168155600b8054336001600160a01b03199182168117909255600c8054909116821790556000908152600460205260409020805460ff19166001179055620000a69060129062000248565b620000b790641010b8720062000260565b600b80546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200010b6012600a62000248565b6200011c90641010b8720062000260565b60405190815260200160405180910390a36200029d565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200018a5781600019048211156200016e576200016e62000133565b808516156200017c57918102915b93841c93908002906200014e565b509250929050565b600082620001a35750600162000242565b81620001b25750600062000242565b8160018114620001cb5760028114620001d657620001f6565b600191505062000242565b60ff841115620001ea57620001ea62000133565b50506001821b62000242565b5060208310610133831016604e8410600b84101617156200021b575081810a62000242565b62000227838362000149565b80600019048211156200023e576200023e62000133565b0290505b92915050565b60006200025960ff84168362000192565b9392505050565b808202811582820484141762000242576200024262000133565b6000826200029857634e487b7160e01b600052601260045260246000fd5b500490565b61287280620002ad6000396000f3fe6080604052600436106102295760003560e01c80634fb2e45d11610123578063893d20e8116100ab578063ab558e4d1161006f578063ab558e4d146106b4578063b3ab15fb146106d4578063c3513f6d146106f4578063dd62ed3e14610709578063feadde9c1461074f57600080fd5b8063893d20e81461061d5780638a63bd9b1461063b5780638a8c523c1461065057806395d89b4114610665578063a9059cbb1461069457600080fd5b80635cce86cd116100f25780635cce86cd146105645780636ebd00781461059d57806370a08231146105b2578063715018a6146105e857806381cf58a9146105fd57600080fd5b80634fb2e45d146104e557806350a8e01614610505578063570ca735146105245780635c24b0741461054457600080fd5b806323b872dd116101b157806336fddb041161017557806336fddb041461045657806339a05902146104765780633f3cf56c1461048b578063452ed4f1146104ab5780634ada218b146104cb57600080fd5b806323b872dd146103ba5780632610eaca146103da5780632b112e49146103fa578063313ce5671461040f57806333251a0b1461043657600080fd5b806307dd79e0116101f857806307dd79e0146102ef578063095ea7b31461031e5780630dcbcf1c1461033e57806313b4a7f41461037757806318160ddd1461039757600080fd5b806303fd2a4514610235578063044df7261461026857806306fdde031461028a5780630758d924146102c957600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027457600080fd5b5061028861028336600461230c565b61076f565b005b34801561029657600080fd5b5060408051808201909152600d81526c2937b1b5b2ba102930b83a37b960991b60208201525b60405161025f9190612345565b3480156102d557600080fd5b5060075461024b906201000090046001600160a01b031681565b3480156102fb57600080fd5b5060075461030e90610100900460ff1681565b604051901515815260200161025f565b34801561032a57600080fd5b5061030e6103393660046123a8565b610832565b34801561034a57600080fd5b5061030e6103593660046123d4565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561038357600080fd5b506102886103923660046123f1565b610849565b3480156103a357600080fd5b506103ac6109b3565b60405190815260200161025f565b3480156103c657600080fd5b5061030e6103d536600461241f565b6109fc565b3480156103e657600080fd5b506102886103f5366004612536565b610a74565b34801561040657600080fd5b506103ac610c2c565b34801561041b57600080fd5b50610424610cab565b60405160ff909116815260200161025f565b34801561044257600080fd5b506102886104513660046123d4565b610cda565b34801561046257600080fd5b506102886104713660046125f8565b610d91565b34801561048257600080fd5b50610288610e0a565b34801561049757600080fd5b506102886104a6366004612616565b610e91565b3480156104b757600080fd5b5060085461024b906001600160a01b031681565b3480156104d757600080fd5b50600a5461030e9060ff1681565b3480156104f157600080fd5b506102886105003660046123d4565b610fef565b34801561051157600080fd5b50600a5461030e90610100900460ff1681565b34801561053057600080fd5b50600d5461024b906001600160a01b031681565b34801561055057600080fd5b5061028861055f3660046123d4565b6111d5565b34801561057057600080fd5b5061030e61057f3660046123d4565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105a957600080fd5b506103ac6113af565b3480156105be57600080fd5b506103ac6105cd3660046123d4565b6001600160a01b031660009081526020819052604090205490565b3480156105f457600080fd5b506102886113ca565b34801561060957600080fd5b50600c5461024b906001600160a01b031681565b34801561062957600080fd5b50600b546001600160a01b031661024b565b34801561064757600080fd5b5061030e6114de565b34801561065c57600080fd5b50610288611555565b34801561067157600080fd5b506040805180820190915260068152651493d0d2d15560d21b60208201526102bc565b3480156106a057600080fd5b5061030e6106af3660046123a8565b61171c565b3480156106c057600080fd5b506102886106cf3660046123d4565b611733565b3480156106e057600080fd5b506102886106ef3660046123d4565b611883565b34801561070057600080fd5b5061028861195c565b34801561071557600080fd5b506103ac6107243660046123f1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561075b57600080fd5b5061028861076a3660046125f8565b6119e3565b600b546001600160a01b031633146107c25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b600a5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd90604401600060405180830381600087803b15801561081657600080fd5b505af115801561082a573d6000803e3d6000fd5b505050505050565b600061083f338484611a5c565b5060015b92915050565b600b546001600160a01b031633146108975760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b60075460ff166108a657600080fd5b6001600160a01b03821630148015906108c857506001600160a01b0381163014155b80156108e257506008546001600160a01b03838116911614155b80156108fc57506008546001600160a01b03828116911614155b6109365760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b60448201526064016107b9565b806001600160a01b0316826001600160a01b031603610976576001600160a01b0381166000908152600460205260409020805460ff191660011790555050565b6001600160a01b038281166000908152600460205260408082208054600160ff1991821681179092559385168352912080549092161790555b5050565b60006109c16012600a612732565b6109d090641010b87200612741565b6000036109dc57600080fd5b6109e86012600a612732565b6109f790641010b87200612741565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610a61576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610a5b908490612758565b90915550505b610a6c848484611b55565b949350505050565b600b546001600160a01b03163314610ac25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b8051825114610b135760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e000000000000000000000060448201526064016107b9565b60005b82518161ffff161015610c2757610b2f6012600a612732565b828261ffff1681518110610b4557610b4561276b565b6020026020010151610b579190612741565b336000908152602081905260409020541015610bb55760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e000000000000000000000000000060448201526064016107b9565b610c1433848361ffff1681518110610bcf57610bcf61276b565b60200260200101516012600a610be59190612732565b858561ffff1681518110610bfb57610bfb61276b565b6020026020010151610c0d9190612741565b6001611eb5565b5080610c1f81612781565b915050610b16565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610c8691906127a2565b610c926012600a612732565b610ca190641010b87200612741565b6109f79190612758565b6000610cb96012600a612732565b610cc890641010b87200612741565b600003610cd457600080fd5b50601290565b600b546001600160a01b03163314610d285760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600a546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b158015610d7657600080fd5b505af1158015610d8a573d6000803e3d6000fd5b5050505050565b600b546001600160a01b03163314610ddf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600c546001600160a01b03163314610e755760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016107b9565b610e7f6000611883565b600c80546001600160a01b0319169055565b600b546001600160a01b03163314610edf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b6103e8610eee6012600a612732565b610efd90641010b87200612741565b610f08906005612741565b610f1291906127b5565b8183610f206012600a612732565b610f2f90641010b87200612741565b610f399190612741565b610f4391906127b5565b1015610fb75760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e00000000000000000060648201526084016107b9565b8082610fc56012600a612732565b610fd490641010b87200612741565b610fde9190612741565b610fe891906127b5565b6009555050565b600b546001600160a01b0316331461103d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b6001600160a01b0381166110b95760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016107b9565b61deac196001600160a01b0382160161113a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016107b9565b600b546001600160a01b03166000908152602081905260409020541561118357600b546001600160a01b031660008181526020819052604090205461118191908390610c0d565b505b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600b546001600160a01b031633146112235760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600a5460ff161561123357600080fd5b306001600160a01b0382160361128b5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e00000000000000000000000000000000000060448201526064016107b9565b600a805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611311575060408051601f3d908101601f1916820190925261130e918101906127d7565b60015b61131a57600080fd5b6007805462010000600160b01b031916620100006001600160a01b038581168202929092178355600880546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055600b54925461138c9383169291900416600019611a5c565b600754610c279030906201000090046001600160a01b0316600019611a5c565b50565b60006113bd6012600a612732565b6009546109f791906127b5565b600b546001600160a01b031633146114185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600a5460ff166114905760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e000000000000000000000000000000000060648201526084016107b9565b600b80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600b546000906001600160a01b0316331461152f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b60075461154f9030906201000090046001600160a01b0316600019611a5c565b50600190565b600b546001600160a01b031633146115a35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600a5460ff16156115f65760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016107b9565b600a54610100900460ff1661164d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016107b9565b600a546201000090046001600160a01b031661167d57600a805462010000600160b01b0319163062010000021790555b600a54600854604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156116ef57600080fd5b505af1925050508015611700575060015b50600a805460ff19908116600117909155600780549091169055565b6000611729338484611b55565b5060019392505050565b600b546001600160a01b031633146117815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600b546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa1580156117d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fc9190612806565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561185f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c27919061281f565b600c546001600160a01b031633146118ee5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016107b9565b600d546001600160a01b03168015611921576001600160a01b0381166000908152600460205260409020805460ff191690555b50600d80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b600b546001600160a01b031633146119aa5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600b546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156113ac573d6000803e3d6000fd5b600b546001600160a01b03163314611a315760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611aa85760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107b9565b6001600160a01b038216611af45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107b9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611bbb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b9565b6001600160a01b038316611c1d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b9565b60008211611c7f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107b9565b6001600160a01b0384166000908152600160205260408120548190819060ff1615611cad5760019250611cdb565b6001600160a01b03861660009081526001602052604090205460ff1615611cd75760019150611cdb565b5060015b611ce587876120f1565b15611e9e57600a5460ff16611de65780611d415760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107b9565b6001600160a01b03871660009081526005602052604090205460ff16158015611d8357506001600160a01b03861660009081526005602052604090205460ff16155b15611de65760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016107b9565b8280611def5750815b15611e9e576001600160a01b03871660009081526006602052604090205460ff16158015611e3657506001600160a01b03861660009081526006602052604090205460ff16155b15611e9e57600954851115611e9e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107b9565b611eaa87878784611eb5565b979650505050505050565b6000611ec185856120f1565b15611f5b57600a5460405163ecd07a5360e01b81526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015611f44575060408051601f3d908101601f19168201909252611f419181019061281f565b60015b611f4d57600080fd5b905080611f5957600080fd5b505b6001600160a01b03851660009081526020819052604081208054859290611f83908490612758565b90915550506001600160a01b03841660009081526020819052604081208054859290611fb09084906127a2565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611ffc91815260200190565b60405180910390a3600a54610100900460ff166120e65761201d8585612208565b600a54610100900460ff1615801561203a575061203a85856120f1565b801561205f57506001600160a01b03851660009081526005602052604090205460ff16155b801561208457506001600160a01b03841660009081526005602052604090205460ff16155b801561208e575081155b156120e65760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016107b9565b506001949350505050565b600b546000906001600160a01b038481169116148015906121205750600b546001600160a01b03838116911614155b80156121375750600b546001600160a01b03163214155b801561215c57506001600160a01b03821660009081526004602052604090205460ff16155b801561218157506001600160a01b03831660009081526004602052604090205460ff16155b801561219857506001600160a01b03821661dead14155b80156121ac57506001600160a01b03821615155b80156121c157506001600160a01b0383163014155b80156121e15750600a546001600160a01b03848116620100009092041614155b80156122015750600a546001600160a01b03838116620100009092041614155b9392505050565b600a54610100900460ff161561226c5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016107b9565b61227682826120f1565b15801561229057506008546001600160a01b038281169116145b156109af57600a546201000090046001600160a01b03166122c8575050600a805462010000600160b01b031916306201000002179055565b6001600160a01b0382166000908152600460205260409020805460ff19166001179055600a805461ff0019166101001790555050565b80151581146113ac57600080fd5b6000806040838503121561231f57600080fd5b823561232a816122fe565b9150602083013561233a816122fe565b809150509250929050565b600060208083528351808285015260005b8181101561237257858101830151858201604001528201612356565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113ac57600080fd5b600080604083850312156123bb57600080fd5b82356123c681612393565b946020939093013593505050565b6000602082840312156123e657600080fd5b813561220181612393565b6000806040838503121561240457600080fd5b823561240f81612393565b9150602083013561233a81612393565b60008060006060848603121561243457600080fd5b833561243f81612393565b9250602084013561244f81612393565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561249f5761249f612460565b604052919050565b600067ffffffffffffffff8211156124c1576124c1612460565b5060051b60200190565b600082601f8301126124dc57600080fd5b813560206124f16124ec836124a7565b612476565b82815260059290921b8401810191818101908684111561251057600080fd5b8286015b8481101561252b5780358352918301918301612514565b509695505050505050565b6000806040838503121561254957600080fd5b823567ffffffffffffffff8082111561256157600080fd5b818501915085601f83011261257557600080fd5b813560206125856124ec836124a7565b82815260059290921b840181019181810190898411156125a457600080fd5b948201945b838610156125cb5785356125bc81612393565b825294820194908201906125a9565b965050860135925050808211156125e157600080fd5b506125ee858286016124cb565b9150509250929050565b6000806040838503121561260b57600080fd5b823561232a81612393565b6000806040838503121561262957600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561268957816000190482111561266f5761266f612638565b8085161561267c57918102915b93841c9390800290612653565b509250929050565b6000826126a057506001610843565b816126ad57506000610843565b81600181146126c357600281146126cd576126e9565b6001915050610843565b60ff8411156126de576126de612638565b50506001821b610843565b5060208310610133831016604e8410600b841016171561270c575081810a610843565b612716838361264e565b806000190482111561272a5761272a612638565b029392505050565b600061220160ff841683612691565b808202811582820484141761084357610843612638565b8181038181111561084357610843612638565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361279857612798612638565b6001019392505050565b8082018082111561084357610843612638565b6000826127d257634e487b7160e01b600052601260045260246000fd5b500490565b600080604083850312156127ea57600080fd5b82516127f581612393565b602084015190925061233a81612393565b60006020828403121561281857600080fd5b5051919050565b60006020828403121561283157600080fd5b8151612201816122fe56fea2646970667358221220ddbf3ffd5f1076167b967c653e97b21b079d707359c2c8e7fe41657d974bbd1364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80634fb2e45d11610123578063893d20e8116100ab578063ab558e4d1161006f578063ab558e4d146106b4578063b3ab15fb146106d4578063c3513f6d146106f4578063dd62ed3e14610709578063feadde9c1461074f57600080fd5b8063893d20e81461061d5780638a63bd9b1461063b5780638a8c523c1461065057806395d89b4114610665578063a9059cbb1461069457600080fd5b80635cce86cd116100f25780635cce86cd146105645780636ebd00781461059d57806370a08231146105b2578063715018a6146105e857806381cf58a9146105fd57600080fd5b80634fb2e45d146104e557806350a8e01614610505578063570ca735146105245780635c24b0741461054457600080fd5b806323b872dd116101b157806336fddb041161017557806336fddb041461045657806339a05902146104765780633f3cf56c1461048b578063452ed4f1146104ab5780634ada218b146104cb57600080fd5b806323b872dd146103ba5780632610eaca146103da5780632b112e49146103fa578063313ce5671461040f57806333251a0b1461043657600080fd5b806307dd79e0116101f857806307dd79e0146102ef578063095ea7b31461031e5780630dcbcf1c1461033e57806313b4a7f41461037757806318160ddd1461039757600080fd5b806303fd2a4514610235578063044df7261461026857806306fdde031461028a5780630758d924146102c957600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027457600080fd5b5061028861028336600461230c565b61076f565b005b34801561029657600080fd5b5060408051808201909152600d81526c2937b1b5b2ba102930b83a37b960991b60208201525b60405161025f9190612345565b3480156102d557600080fd5b5060075461024b906201000090046001600160a01b031681565b3480156102fb57600080fd5b5060075461030e90610100900460ff1681565b604051901515815260200161025f565b34801561032a57600080fd5b5061030e6103393660046123a8565b610832565b34801561034a57600080fd5b5061030e6103593660046123d4565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561038357600080fd5b506102886103923660046123f1565b610849565b3480156103a357600080fd5b506103ac6109b3565b60405190815260200161025f565b3480156103c657600080fd5b5061030e6103d536600461241f565b6109fc565b3480156103e657600080fd5b506102886103f5366004612536565b610a74565b34801561040657600080fd5b506103ac610c2c565b34801561041b57600080fd5b50610424610cab565b60405160ff909116815260200161025f565b34801561044257600080fd5b506102886104513660046123d4565b610cda565b34801561046257600080fd5b506102886104713660046125f8565b610d91565b34801561048257600080fd5b50610288610e0a565b34801561049757600080fd5b506102886104a6366004612616565b610e91565b3480156104b757600080fd5b5060085461024b906001600160a01b031681565b3480156104d757600080fd5b50600a5461030e9060ff1681565b3480156104f157600080fd5b506102886105003660046123d4565b610fef565b34801561051157600080fd5b50600a5461030e90610100900460ff1681565b34801561053057600080fd5b50600d5461024b906001600160a01b031681565b34801561055057600080fd5b5061028861055f3660046123d4565b6111d5565b34801561057057600080fd5b5061030e61057f3660046123d4565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105a957600080fd5b506103ac6113af565b3480156105be57600080fd5b506103ac6105cd3660046123d4565b6001600160a01b031660009081526020819052604090205490565b3480156105f457600080fd5b506102886113ca565b34801561060957600080fd5b50600c5461024b906001600160a01b031681565b34801561062957600080fd5b50600b546001600160a01b031661024b565b34801561064757600080fd5b5061030e6114de565b34801561065c57600080fd5b50610288611555565b34801561067157600080fd5b506040805180820190915260068152651493d0d2d15560d21b60208201526102bc565b3480156106a057600080fd5b5061030e6106af3660046123a8565b61171c565b3480156106c057600080fd5b506102886106cf3660046123d4565b611733565b3480156106e057600080fd5b506102886106ef3660046123d4565b611883565b34801561070057600080fd5b5061028861195c565b34801561071557600080fd5b506103ac6107243660046123f1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561075b57600080fd5b5061028861076a3660046125f8565b6119e3565b600b546001600160a01b031633146107c25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b600a5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd90604401600060405180830381600087803b15801561081657600080fd5b505af115801561082a573d6000803e3d6000fd5b505050505050565b600061083f338484611a5c565b5060015b92915050565b600b546001600160a01b031633146108975760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b60075460ff166108a657600080fd5b6001600160a01b03821630148015906108c857506001600160a01b0381163014155b80156108e257506008546001600160a01b03838116911614155b80156108fc57506008546001600160a01b03828116911614155b6109365760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b60448201526064016107b9565b806001600160a01b0316826001600160a01b031603610976576001600160a01b0381166000908152600460205260409020805460ff191660011790555050565b6001600160a01b038281166000908152600460205260408082208054600160ff1991821681179092559385168352912080549092161790555b5050565b60006109c16012600a612732565b6109d090641010b87200612741565b6000036109dc57600080fd5b6109e86012600a612732565b6109f790641010b87200612741565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610a61576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610a5b908490612758565b90915550505b610a6c848484611b55565b949350505050565b600b546001600160a01b03163314610ac25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b8051825114610b135760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e000000000000000000000060448201526064016107b9565b60005b82518161ffff161015610c2757610b2f6012600a612732565b828261ffff1681518110610b4557610b4561276b565b6020026020010151610b579190612741565b336000908152602081905260409020541015610bb55760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e000000000000000000000000000060448201526064016107b9565b610c1433848361ffff1681518110610bcf57610bcf61276b565b60200260200101516012600a610be59190612732565b858561ffff1681518110610bfb57610bfb61276b565b6020026020010151610c0d9190612741565b6001611eb5565b5080610c1f81612781565b915050610b16565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610c8691906127a2565b610c926012600a612732565b610ca190641010b87200612741565b6109f79190612758565b6000610cb96012600a612732565b610cc890641010b87200612741565b600003610cd457600080fd5b50601290565b600b546001600160a01b03163314610d285760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600a546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b158015610d7657600080fd5b505af1158015610d8a573d6000803e3d6000fd5b5050505050565b600b546001600160a01b03163314610ddf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600c546001600160a01b03163314610e755760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016107b9565b610e7f6000611883565b600c80546001600160a01b0319169055565b600b546001600160a01b03163314610edf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b6103e8610eee6012600a612732565b610efd90641010b87200612741565b610f08906005612741565b610f1291906127b5565b8183610f206012600a612732565b610f2f90641010b87200612741565b610f399190612741565b610f4391906127b5565b1015610fb75760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e00000000000000000060648201526084016107b9565b8082610fc56012600a612732565b610fd490641010b87200612741565b610fde9190612741565b610fe891906127b5565b6009555050565b600b546001600160a01b0316331461103d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b6001600160a01b0381166110b95760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016107b9565b61deac196001600160a01b0382160161113a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016107b9565b600b546001600160a01b03166000908152602081905260409020541561118357600b546001600160a01b031660008181526020819052604090205461118191908390610c0d565b505b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600b546001600160a01b031633146112235760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600a5460ff161561123357600080fd5b306001600160a01b0382160361128b5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e00000000000000000000000000000000000060448201526064016107b9565b600a805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611311575060408051601f3d908101601f1916820190925261130e918101906127d7565b60015b61131a57600080fd5b6007805462010000600160b01b031916620100006001600160a01b038581168202929092178355600880546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055600b54925461138c9383169291900416600019611a5c565b600754610c279030906201000090046001600160a01b0316600019611a5c565b50565b60006113bd6012600a612732565b6009546109f791906127b5565b600b546001600160a01b031633146114185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600a5460ff166114905760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e000000000000000000000000000000000060648201526084016107b9565b600b80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600b546000906001600160a01b0316331461152f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b60075461154f9030906201000090046001600160a01b0316600019611a5c565b50600190565b600b546001600160a01b031633146115a35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600a5460ff16156115f65760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016107b9565b600a54610100900460ff1661164d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016107b9565b600a546201000090046001600160a01b031661167d57600a805462010000600160b01b0319163062010000021790555b600a54600854604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156116ef57600080fd5b505af1925050508015611700575060015b50600a805460ff19908116600117909155600780549091169055565b6000611729338484611b55565b5060019392505050565b600b546001600160a01b031633146117815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600b546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa1580156117d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fc9190612806565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561185f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c27919061281f565b600c546001600160a01b031633146118ee5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016107b9565b600d546001600160a01b03168015611921576001600160a01b0381166000908152600460205260409020805460ff191690555b50600d80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b600b546001600160a01b031633146119aa5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b600b546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156113ac573d6000803e3d6000fd5b600b546001600160a01b03163314611a315760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016107b9565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611aa85760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107b9565b6001600160a01b038216611af45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016107b9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611bbb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b9565b6001600160a01b038316611c1d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b9565b60008211611c7f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107b9565b6001600160a01b0384166000908152600160205260408120548190819060ff1615611cad5760019250611cdb565b6001600160a01b03861660009081526001602052604090205460ff1615611cd75760019150611cdb565b5060015b611ce587876120f1565b15611e9e57600a5460ff16611de65780611d415760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107b9565b6001600160a01b03871660009081526005602052604090205460ff16158015611d8357506001600160a01b03861660009081526005602052604090205460ff16155b15611de65760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016107b9565b8280611def5750815b15611e9e576001600160a01b03871660009081526006602052604090205460ff16158015611e3657506001600160a01b03861660009081526006602052604090205460ff16155b15611e9e57600954851115611e9e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107b9565b611eaa87878784611eb5565b979650505050505050565b6000611ec185856120f1565b15611f5b57600a5460405163ecd07a5360e01b81526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015611f44575060408051601f3d908101601f19168201909252611f419181019061281f565b60015b611f4d57600080fd5b905080611f5957600080fd5b505b6001600160a01b03851660009081526020819052604081208054859290611f83908490612758565b90915550506001600160a01b03841660009081526020819052604081208054859290611fb09084906127a2565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611ffc91815260200190565b60405180910390a3600a54610100900460ff166120e65761201d8585612208565b600a54610100900460ff1615801561203a575061203a85856120f1565b801561205f57506001600160a01b03851660009081526005602052604090205460ff16155b801561208457506001600160a01b03841660009081526005602052604090205460ff16155b801561208e575081155b156120e65760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016107b9565b506001949350505050565b600b546000906001600160a01b038481169116148015906121205750600b546001600160a01b03838116911614155b80156121375750600b546001600160a01b03163214155b801561215c57506001600160a01b03821660009081526004602052604090205460ff16155b801561218157506001600160a01b03831660009081526004602052604090205460ff16155b801561219857506001600160a01b03821661dead14155b80156121ac57506001600160a01b03821615155b80156121c157506001600160a01b0383163014155b80156121e15750600a546001600160a01b03848116620100009092041614155b80156122015750600a546001600160a01b03838116620100009092041614155b9392505050565b600a54610100900460ff161561226c5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016107b9565b61227682826120f1565b15801561229057506008546001600160a01b038281169116145b156109af57600a546201000090046001600160a01b03166122c8575050600a805462010000600160b01b031916306201000002179055565b6001600160a01b0382166000908152600460205260409020805460ff19166001179055600a805461ff0019166101001790555050565b80151581146113ac57600080fd5b6000806040838503121561231f57600080fd5b823561232a816122fe565b9150602083013561233a816122fe565b809150509250929050565b600060208083528351808285015260005b8181101561237257858101830151858201604001528201612356565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113ac57600080fd5b600080604083850312156123bb57600080fd5b82356123c681612393565b946020939093013593505050565b6000602082840312156123e657600080fd5b813561220181612393565b6000806040838503121561240457600080fd5b823561240f81612393565b9150602083013561233a81612393565b60008060006060848603121561243457600080fd5b833561243f81612393565b9250602084013561244f81612393565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561249f5761249f612460565b604052919050565b600067ffffffffffffffff8211156124c1576124c1612460565b5060051b60200190565b600082601f8301126124dc57600080fd5b813560206124f16124ec836124a7565b612476565b82815260059290921b8401810191818101908684111561251057600080fd5b8286015b8481101561252b5780358352918301918301612514565b509695505050505050565b6000806040838503121561254957600080fd5b823567ffffffffffffffff8082111561256157600080fd5b818501915085601f83011261257557600080fd5b813560206125856124ec836124a7565b82815260059290921b840181019181810190898411156125a457600080fd5b948201945b838610156125cb5785356125bc81612393565b825294820194908201906125a9565b965050860135925050808211156125e157600080fd5b506125ee858286016124cb565b9150509250929050565b6000806040838503121561260b57600080fd5b823561232a81612393565b6000806040838503121561262957600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561268957816000190482111561266f5761266f612638565b8085161561267c57918102915b93841c9390800290612653565b509250929050565b6000826126a057506001610843565b816126ad57506000610843565b81600181146126c357600281146126cd576126e9565b6001915050610843565b60ff8411156126de576126de612638565b50506001821b610843565b5060208310610133831016604e8410600b841016171561270c575081810a610843565b612716838361264e565b806000190482111561272a5761272a612638565b029392505050565b600061220160ff841683612691565b808202811582820484141761084357610843612638565b8181038181111561084357610843612638565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361279857612798612638565b6001019392505050565b8082018082111561084357610843612638565b6000826127d257634e487b7160e01b600052601260045260246000fd5b500490565b600080604083850312156127ea57600080fd5b82516127f581612393565b602084015190925061233a81612393565b60006020828403121561281857600080fd5b5051919050565b60006020828403121561283157600080fd5b8151612201816122fe56fea2646970667358221220ddbf3ffd5f1076167b967c653e97b21b079d707359c2c8e7fe41657d974bbd1364736f6c63430008130033

Deployed Bytecode Sourcemap

4296:12876:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5163:73;;;;;;;;;;;;5194:42;5163:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5163:73:0;;;;;;;;11868:153;;;;;;;;;;-1:-1:-1;11868:153:0;;;;;:::i;:::-;;:::i;:::-;;8822:80;;;;;;;;;;-1:-1:-1;8894:5:0;;;;;;;;;;;;-1:-1:-1;;;8894:5:0;;;;8822:80;;;;;;;:::i;5102:26::-;;;;;;;;;;-1:-1:-1;5102:26:0;;;;;;;-1:-1:-1;;;;;5102:26:0;;;5069;;;;;;;;;;-1:-1:-1;5069:26:0;;;;;;;;;;;;;;1715:14:1;;1708:22;1690:41;;1678:2;1663:18;5069:26:0;1550:187:1;9430:161:0;;;;;;;;;;-1:-1:-1;9430:161:0;;;;;:::i;:::-;;:::i;11297:140::-;;;;;;;;;;-1:-1:-1;11297:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;11395:34:0;11371:4;11395:34;;;:25;:34;;;;;;;;;11297:140;12426:523;;;;;;;;;;-1:-1:-1;12426:523:0;;;;;:::i;:::-;;:::i;8493:115::-;;;;;;;;;;;;;:::i;:::-;;;3012:25:1;;;3000:2;2985:18;8493:115:0;2866:177:1;10100:306:0;;;;;;;;;;-1:-1:-1;10100:306:0;;;;;:::i;:::-;;:::i;15938:433::-;;;;;;;;;;-1:-1:-1;15938:433:0;;;;;:::i;:::-;;:::i;11601:141::-;;;;;;;;;;;;;:::i;8614:112::-;;;;;;;;;;;;;:::i;:::-;;;6168:4:1;6156:17;;;6138:36;;6126:2;6111:18;8614:112:0;5996:184:1;11750:110:0;;;;;;;;;;-1:-1:-1;11750:110:0;;;;;:::i;:::-;;:::i;11149:140::-;;;;;;;;;;-1:-1:-1;11149:140:0;;;;;:::i;:::-;;:::i;7917:221::-;;;;;;;;;;;;;:::i;12029:273::-;;;;;;;;;;-1:-1:-1;12029:273:0;;;;;:::i;:::-;;:::i;5135:21::-;;;;;;;;;;-1:-1:-1;5135:21:0;;;;-1:-1:-1;;;;;5135:21:0;;;5302:34;;;;;;;;;;-1:-1:-1;5302:34:0;;;;;;;;6487:539;;;;;;;;;;-1:-1:-1;6487:539:0;;;;;:::i;:::-;;:::i;5343:36::-;;;;;;;;;;-1:-1:-1;5343:36:0;;;;;;;;;;;7345:23;;;;;;;;;;-1:-1:-1;7345:23:0;;;;-1:-1:-1;;;;;7345:23:0;;;10414:587;;;;;;;;;;-1:-1:-1;10414:587:0;;;;;:::i;:::-;;:::i;11009:132::-;;;;;;;;;;-1:-1:-1;11009:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;11103:30:0;11079:4;11103:30;;;:21;:30;;;;;;;;;11009:132;12310:108;;;;;;;;;;;;;:::i;9132:117::-;;;;;;;;;;-1:-1:-1;9132:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;9225:16:0;9198:7;9225:16;;;;;;;;;;;;9132:117;7034:265;;;;;;;;;;;;;:::i;7307:31::-;;;;;;;;;;-1:-1:-1;7307:31:0;;;;-1:-1:-1;;;;;7307:31:0;;;8908:79;;;;;;;;;;-1:-1:-1;8978:6:0;;-1:-1:-1;;;;;8978:6:0;8908:79;;9917:175;;;;;;;;;;;;;:::i;15146:480::-;;;;;;;;;;;;;:::i;8732:84::-;;;;;;;;;;-1:-1:-1;8806:7:0;;;;;;;;;;;;-1:-1:-1;;;8806:7:0;;;;8732:84;;9257:165;;;;;;;;;;-1:-1:-1;9257:165:0;;;;;:::i;:::-;;:::i;15755:175::-;;;;;;;;;;-1:-1:-1;15755:175:0;;;;;:::i;:::-;;:::i;7530:379::-;;;;;;;;;;-1:-1:-1;7530:379:0;;;;;:::i;:::-;;:::i;15634:109::-;;;;;;;;;;;;;:::i;8993:133::-;;;;;;;;;;-1:-1:-1;8993:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9095:19:0;;;9077:7;9095:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8993:133;11445:148;;;;;;;;;;-1:-1:-1;11445:148:0;;;;;:::i;:::-;;:::i;11868:153::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;;;;;;;;;11963:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;11963:50:0;;7358:14:1;;7351:22;11963:50:0::1;::::0;::::1;7333:41:1::0;7417:14;;7410:22;7390:18;;;7383:50;11963:11:0;;;::::1;-1:-1:-1::0;;;;;11963:11:0::1;::::0;:26:::1;::::0;7306:18:1;;11963:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11868:153:::0;;:::o;9430:161::-;9507:4;9524:37;9533:10;9545:7;9554:6;9524:8;:37::i;:::-;-1:-1:-1;9579:4:0;9430:161;;;;;:::o;12426:523::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;12530:23:::1;::::0;::::1;;12522:32;;;::::0;::::1;;-1:-1:-1::0;;;;;12573:23:0;::::1;12591:4;12573:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;12618:24:0;::::1;12637:4;12618:24;;12573:69;:107;;;;-1:-1:-1::0;12664:6:0::1;::::0;-1:-1:-1;;;;;12664:16:0;;::::1;:6:::0;::::1;:16;;12573:107;:146;;;;-1:-1:-1::0;12702:6:0::1;::::0;-1:-1:-1;;;;;12702:17:0;;::::1;:6:::0;::::1;:17;;12573:146;12565:170;;;::::0;-1:-1:-1;;;12565:170:0;;7646:2:1;12565:170:0::1;::::0;::::1;7628:21:1::0;7685:2;7665:18;;;7658:30;-1:-1:-1;;;7704:18:1;;;7697:41;7755:18;;12565:170:0::1;7444:335:1::0;12565:170:0::1;12760:7;-1:-1:-1::0;;;;;12750:17:0::1;:6;-1:-1:-1::0;;;;;12750:17:0::1;::::0;12746:196:::1;;-1:-1:-1::0;;;;;12784:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;12784:33:0::1;12813:4;12784:33;::::0;;12426:523;;:::o;12746:196::-:1;-1:-1:-1::0;;;;;12850:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;:32;;12878:4:::1;-1:-1:-1::0;;12850:32:0;;::::1;::::0;::::1;::::0;;;12897:26;;::::1;::::0;;;;:33;;;;::::1;;::::0;;12746:196:::1;12426:523:::0;;:::o;8493:115::-;8548:7;5049:13;4988:2;5049;:13;:::i;:::-;5032:30;;4829:14;5032:30;:::i;:::-;8574:1;8563:12;8559:31;;8579:8;;;8559:31;5049:13;4988:2;5049;:13;:::i;:::-;5032:30;;4829:14;5032:30;:::i;:::-;8591:14;;8493:115;:::o;10100:306::-;-1:-1:-1;;;;;10221:19:0;;10200:4;10221:19;;;:11;:19;;;;;;;;10241:10;10221:31;;;;;;;;-1:-1:-1;;10221:52:0;10217:126;;-1:-1:-1;;;;;10290:19:0;;;;;;:11;:19;;;;;;;;10310:10;10290:31;;;;;;;:41;;10325:6;;10290:19;:41;;10325:6;;10290:41;:::i;:::-;;;;-1:-1:-1;;10217:126:0;10362:36;10372:6;10380:9;10391:6;10362:9;:36::i;:::-;10355:43;10100:306;-1:-1:-1;;;;10100:306:0:o;15938:433::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;16073:7:::1;:14;16054:8;:15;:33;16046:67;;;::::0;-1:-1:-1;;;16046:67:0;;9807:2:1;16046:67:0::1;::::0;::::1;9789:21:1::0;9846:2;9826:18;;;9819:30;9885:23;9865:18;;;9858:51;9926:18;;16046:67:0::1;9605:345:1::0;16046:67:0::1;16129:8;16124:240;16147:8;:15;16143:1;:19;;;16124:240;;;16228:13;4988:2;16228;:13;:::i;:::-;16217:7;16225:1;16217:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;16202:10;9198:7:::0;9225:16;;;;;;;;;;;16192:49:::1;;16184:80;;;::::0;-1:-1:-1;;;16184:80:0;;10289:2:1;16184:80:0::1;::::0;::::1;10271:21:1::0;10328:2;10308:18;;;10301:30;10367:20;10347:18;;;10340:48;10405:18;;16184:80:0::1;10087:342:1::0;16184:80:0::1;16279:73;16296:10;16308:8;16317:1;16308:11;;;;;;;;;;:::i;:::-;;;;;;;4988:2;16332;:13;;;;:::i;:::-;16321:7;16329:1;16321:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;16347:4;16279:16;:73::i;:::-;-1:-1:-1::0;16164:3:0;::::1;::::0;::::1;:::i;:::-;;;;16124:240;;;;15938:433:::0;;:::o;11601:141::-;11654:7;9225:16;;;;;;5194:42;9225:16;;;;11693:39;;9225:16;11693:39;:::i;:::-;5049:13;4988:2;5049;:13;:::i;:::-;5032:30;;4829:14;5032:30;:::i;:::-;11682:51;;;;:::i;8614:112::-;8666:5;5049:13;4988:2;5049;:13;:::i;:::-;5032:30;;4829:14;5032:30;:::i;:::-;8690:1;8679:12;8675:31;;8695:8;;;8675:31;-1:-1:-1;4988:2:0;;8614:112::o;11750:110::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;11819:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;11819:33:0;;-1:-1:-1;;;;;178:55:1;;;11819:33:0::1;::::0;::::1;160:74:1::0;11819:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;11819:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11750:110:::0;:::o;11149:140::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;-1:-1:-1;;;;;11241:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;11241:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11149:140::o;7917:221::-;7995:16;;-1:-1:-1;;;;;7995:16:0;7981:10;:30;7973:83;;;;-1:-1:-1;;;7973:83:0;;10968:2:1;7973:83:0;;;10950:21:1;11007:2;10987:18;;;10980:30;11046:34;11026:18;;;11019:62;-1:-1:-1;;;11097:18:1;;;11090:38;11145:19;;7973:83:0;10766:404:1;7973:83:0;8067:23;8087:1;8067:11;:23::i;:::-;8101:16;:29;;-1:-1:-1;;;;;;8101:29:0;;;7917:221::o;12029:273::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;12174:4:::1;5049:13;4988:2;5049;:13;:::i;:::-;5032:30;::::0;4829:14:::1;5032:30;:::i;:::-;12160:11;::::0;12170:1:::1;12160:11;:::i;:::-;:18;;;;:::i;:::-;12148:7:::0;12137;5049:13:::1;4988:2;5049;:13;:::i;:::-;5032:30;::::0;4829:14:::1;5032:30;:::i;:::-;12127:17;;;;:::i;:::-;12126:29;;;;:::i;:::-;:53;;12118:121;;;::::0;-1:-1:-1;;;12118:121:0;;11599:2:1;12118:121:0::1;::::0;::::1;11581:21:1::0;11638:2;11618:18;;;11611:30;11677:34;11657:18;;;11650:62;11748:25;11728:18;;;11721:53;11791:19;;12118:121:0::1;11397:419:1::0;12118:121:0::1;12287:7:::0;12276;5049:13:::1;4988:2;5049;:13;:::i;:::-;5032:30;::::0;4829:14:::1;5032:30;:::i;:::-;12266:17;;;;:::i;:::-;12265:29;;;;:::i;:::-;12250:12;:44:::0;-1:-1:-1;;12029:273:0:o;6487:539::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;-1:-1:-1;;;;;6566:22:0;::::1;6558:96;;;::::0;-1:-1:-1;;;6558:96:0;;12023:2:1;6558:96:0::1;::::0;::::1;12005:21:1::0;12062:2;12042:18;;;12035:30;12101:34;12081:18;;;12074:62;12172:31;12152:18;;;12145:59;12221:19;;6558:96:0::1;11821:425:1::0;6558:96:0::1;-1:-1:-1::0;;;;;;;6673:16:0;::::1;::::0;6665:90:::1;;;::::0;-1:-1:-1;;;6665:90:0;;12023:2:1;6665:90:0::1;::::0;::::1;12005:21:1::0;12062:2;12042:18;;;12035:30;12101:34;12081:18;;;12074:62;12172:31;12152:18;;;12145:59;12221:19;;6665:90:0::1;11821:425:1::0;6665:90:0::1;6780:6;::::0;-1:-1:-1;;;;;6780:6:0::1;6790:1;9225:16:::0;;;;;;;;;;;6770:21;6766:113:::1;;6825:6;::::0;-1:-1:-1;;;;;6825:6:0::1;9198:7:::0;9225:16;;;;;;;;;;;6808:59:::1;::::0;6825:6;6833:8;;6843:17:::1;9132:117:::0;6808:59:::1;;6766:113;6918:6;::::0;;-1:-1:-1;;;;;6935:17:0;;::::1;-1:-1:-1::0;;;;;;6935:17:0;::::1;::::0;::::1;::::0;;;6968:40:::1;::::0;6918:6;::::1;::::0;6935:17;6918:6;;6968:40:::1;::::0;6899:16:::1;::::0;6968:40:::1;6547:479;6487:539:::0;:::o;10414:587::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;10497:14:::1;::::0;::::1;;10496:15;10488:24;;;::::0;::::1;;10555:4;-1:-1:-1::0;;;;;10531:29:0;::::1;::::0;10523:56:::1;;;::::0;-1:-1:-1;;;10523:56:0;;12453:2:1;10523:56:0::1;::::0;::::1;12435:21:1::0;12492:2;12472:18;;;12465:30;12531:16;12511:18;;;12504:44;12565:18;;10523:56:0::1;12251:338:1::0;10523:56:0::1;10590:11;:39:::0;;-1:-1:-1;;;;;;10590:39:0::1;::::0;-1:-1:-1;;;;;10590:39:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;10644:23:::1;::::0;;-1:-1:-1;;;10644:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;10644:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;10644:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;10644:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;10640:354;;10983:8;::::0;::::1;10640:354;10731:9;:29:::0;;-1:-1:-1;;;;;;10731:29:0::1;::::0;-1:-1:-1;;;;;10731:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;10762:6:::1;:22:::0;;-1:-1:-1;;;;;;10762:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10786:22:0;;;-1:-1:-1;10786:22:0::1;::::0;;;;;;;:29;;-1:-1:-1;;10786:29:0::1;::::0;;::::1;::::0;;10839:6:::1;::::0;10855:9;;10830:55:::1;::::0;10839:6;::::1;::::0;10855:9;;::::1;;-1:-1:-1::0;;10830:8:0::1;:55::i;:::-;10932:9;::::0;10900:62:::1;::::0;10917:4:::1;::::0;10932:9;;::::1;-1:-1:-1::0;;;;;10932:9:0::1;-1:-1:-1::0;;10900:8:0::1;:62::i;10640:354::-;10414:587:::0;:::o;12310:108::-;12353:7;12396:13;4988:2;12396;:13;:::i;:::-;12380:12;;:30;;;;:::i;7034:265::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;7101:14:::1;::::0;::::1;;7093:74;;;::::0;-1:-1:-1;;;7093:74:0;;13186:2:1;7093:74:0::1;::::0;::::1;13168:21:1::0;13225:2;13205:18;;;13198:30;13264:34;13244:18;;;13237:62;13335:17;13315:18;;;13308:45;13370:19;;7093:74:0::1;12984:411:1::0;7093:74:0::1;7197:6;::::0;;-1:-1:-1;;;;;;7214:19:0;::::1;::::0;;;7249:42:::1;::::0;-1:-1:-1;;;;;7197:6:0;;::::1;::::0;7178:16:::1;::::0;7197:6;;7249:42:::1;::::0;7178:16;;7249:42:::1;7082:217;7034:265::o:0;9917:175::-;6341:6;;9983:4;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;10032:9:::1;::::0;10000:62:::1;::::0;10017:4:::1;::::0;10032:9;;::::1;-1:-1:-1::0;;;;;10032:9:0::1;-1:-1:-1::0;;10000:8:0::1;:62::i;:::-;-1:-1:-1::0;10080:4:0::1;9917:175:::0;:::o;15146:480::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;15208:14:::1;::::0;::::1;;15207:15;15199:52;;;::::0;-1:-1:-1;;;15199:52:0;;13602:2:1;15199:52:0::1;::::0;::::1;13584:21:1::0;13641:2;13621:18;;;13614:30;13680:26;13660:18;;;13653:54;13724:18;;15199:52:0::1;13400:348:1::0;15199:52:0::1;15270:16;::::0;::::1;::::0;::::1;;;15262:53;;;::::0;-1:-1:-1;;;15262:53:0;;13955:2:1;15262:53:0::1;::::0;::::1;13937:21:1::0;13994:2;13974:18;;;13967:30;14033:26;14013:18;;;14006:54;14077:18;;15262:53:0::1;13753:348:1::0;15262:53:0::1;15338:11;::::0;;;::::1;-1:-1:-1::0;;;;;15338:11:0::1;15326:106;;15380:11;:40:::0;;-1:-1:-1;;;;;;15380:40:0::1;15414:4;15380:40:::0;::::1;;::::0;;15326:106:::1;15446:11;::::0;15468:6:::1;::::0;15446:87:::1;::::0;-1:-1:-1;;;15446:87:0;;-1:-1:-1;;;;;15468:6:0;;::::1;15446:87;::::0;::::1;14329:74:1::0;14451:10;15483:12:0::1;14439:23:1::0;14419:18;;;14412:51;14511:18;15505:15:0::1;14499:31:1::0;14479:18;;;14472:59;4988:2:0::1;14547:18:1::0;;;14540:45;15446:11:0;;;::::1;;::::0;:21:::1;::::0;14301:19:1;;15446:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;15442:103:::0;15555:14:::1;:21:::0;;-1:-1:-1;;15555:21:0;;::::1;15572:4;15555:21;::::0;;;15587:23:::1;:31:::0;;;;::::1;::::0;;15146:480::o;9257:165::-;9335:4;9352:40;9362:10;9374:9;9385:6;9352:9;:40::i;:::-;-1:-1:-1;9410:4:0;;9257:165;-1:-1:-1;;;9257:165:0:o;15755:175::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;15883:6:::1;::::0;15891:30:::1;::::0;-1:-1:-1;;;15891:30:0;;15915:4:::1;15891:30;::::0;::::1;160:74:1::0;15851:5:0;;-1:-1:-1;;;;;15868:14:0;;::::1;::::0;::::1;::::0;15883:6;;;::::1;::::0;15868:14;;15891:15:::1;::::0;133:18:1;;15891:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15868:54;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;14977:55:1;;;15868:54:0::1;::::0;::::1;14959:74:1::0;15049:18;;;15042:34;14932:18;;15868:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7530:379::-:0;7612:16;;-1:-1:-1;;;;;7612:16:0;7598:10;:30;7590:83;;;;-1:-1:-1;;;7590:83:0;;10968:2:1;7590:83:0;;;10950:21:1;11007:2;10987:18;;;10980:30;11046:34;11026:18;;;11019:62;-1:-1:-1;;;11097:18:1;;;11090:38;11145:19;;7590:83:0;10766:404:1;7590:83:0;7706:8;;-1:-1:-1;;;;;7706:8:0;7729:25;;7725:96;;-1:-1:-1;;;;;7771:30:0;;7804:5;7771:30;;;:17;:30;;;;;:38;;-1:-1:-1;;7771:38:0;;;7725:96;-1:-1:-1;7831:8:0;:22;;-1:-1:-1;;;;;7831:22:0;;;-1:-1:-1;;;;;;7831:22:0;;;;;;;:8;7864:30;;;:17;:30;;;;;:37;;-1:-1:-1;;7864:37:0;7831:22;7864:37;;;7530:379::o;15634:109::-;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;15696:6:::1;::::0;15688:47:::1;::::0;-1:-1:-1;;;;;15696:6:0;;::::1;::::0;15713:21:::1;15688:47:::0;::::1;;;::::0;15696:6:::1;15688:47:::0;15696:6;15688:47;15713:21;15696:6;15688:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;11445:148:::0;6341:6;;-1:-1:-1;;;;;6341:6:0;6351:10;6341:20;6333:50;;;;-1:-1:-1;;;6333:50:0;;7027:2:1;6333:50:0;;;7009:21:1;7066:2;7046:18;;;7039:30;-1:-1:-1;;;7085:18:1;;;7078:47;7142:18;;6333:50:0;6825:341:1;6333:50:0;-1:-1:-1;;;;;11541:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;11541:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11445:148::o;9599:310::-;-1:-1:-1;;;;;9694:20:0;;9686:52;;;;-1:-1:-1;;;9686:52:0;;15539:2:1;9686:52:0;;;15521:21:1;15578:2;15558:18;;;15551:30;-1:-1:-1;;;15597:18:1;;;15590:49;15656:18;;9686:52:0;15337:343:1;9686:52:0;-1:-1:-1;;;;;9757:21:0;;9749:53;;;;-1:-1:-1;;;9749:53:0;;15539:2:1;9749:53:0;;;15521:21:1;15578:2;15558:18;;;15551:30;-1:-1:-1;;;15597:18:1;;;15590:49;15656:18;;9749:53:0;15337:343:1;9749:53:0;-1:-1:-1;;;;;9815:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;9868:33;;3012:25:1;;;9868:33:0;;2985:18:1;9868:33:0;;;;;;;9599:310;;;:::o;13411:1266::-;13490:4;-1:-1:-1;;;;;13515:18:0;;13507:68;;;;-1:-1:-1;;;13507:68:0;;15887:2:1;13507:68:0;;;15869:21:1;15926:2;15906:18;;;15899:30;15965:34;15945:18;;;15938:62;-1:-1:-1;;;16016:18:1;;;16009:35;16061:19;;13507:68:0;15685:401:1;13507:68:0;-1:-1:-1;;;;;13594:16:0;;13586:64;;;;-1:-1:-1;;;13586:64:0;;16293:2:1;13586:64:0;;;16275:21:1;16332:2;16312:18;;;16305:30;16371:34;16351:18;;;16344:62;-1:-1:-1;;;16422:18:1;;;16415:33;16465:19;;13586:64:0;16091:399:1;13586:64:0;13678:1;13669:6;:10;13661:64;;;;-1:-1:-1;;;13661:64:0;;16697:2:1;13661:64:0;;;16679:21:1;16736:2;16716:18;;;16709:30;16775:34;16755:18;;;16748:62;-1:-1:-1;;;16826:18:1;;;16819:39;16875:19;;13661:64:0;16495:405:1;13661:64:0;-1:-1:-1;;;;;13824:13:0;;13736:8;13824:13;;;:7;:13;;;;;;13736:8;;;;13824:13;;13820:162;;;13860:4;13854:10;;13820:162;;;-1:-1:-1;;;;;13886:11:0;;;;;;:7;:11;;;;;;;;13882:100;;;13921:4;13914:11;;13882:100;;;-1:-1:-1;13966:4:0;13882:100;13996:20;14007:4;14013:2;13996:10;:20::i;:::-;13992:617;;;14037:14;;;;14033:319;;14077:5;14072:265;;14107:34;;-1:-1:-1;;;14107:34:0;;17107:2:1;14107:34:0;;;17089:21:1;17146:2;17126:18;;;17119:30;17185:26;17165:18;;;17158:54;17229:18;;14107:34:0;16905:348:1;14072:265:0;-1:-1:-1;;;;;14172:31:0;;;;;;:25;:31;;;;;;;;14171:32;:66;;;;-1:-1:-1;;;;;;14208:29:0;;;;;;:25;:29;;;;;;;;14207:30;14171:66;14167:170;;;14262:55;;-1:-1:-1;;;14262:55:0;;17460:2:1;14262:55:0;;;17442:21:1;17499:2;17479:18;;;17472:30;17538:34;17518:18;;;17511:62;-1:-1:-1;;;17589:18:1;;;17582:43;17642:19;;14262:55:0;17258:409:1;14167:170:0;14370:3;:11;;;;14377:4;14370:11;14366:232;;;-1:-1:-1;;;;;14406:27:0;;;;;;:21;:27;;;;;;;;14405:28;:58;;;;-1:-1:-1;;;;;;14438:25:0;;;;;;:21;:25;;;;;;;;14437:26;14405:58;14401:182;;;14506:12;;14496:6;:22;;14488:75;;;;-1:-1:-1;;;14488:75:0;;17874:2:1;14488:75:0;;;17856:21:1;17913:2;17893:18;;;17886:30;17952:34;17932:18;;;17925:62;-1:-1:-1;;;18003:18:1;;;17996:38;18051:19;;14488:75:0;17672:404:1;14488:75:0;14628:41;14645:4;14651:2;14655:6;14663:5;14628:16;:41::i;:::-;14621:48;13411:1266;-1:-1:-1;;;;;;;13411:1266:0:o;16379:790::-;16477:4;16498:20;16509:4;16515:2;16498:10;:20::i;:::-;16494:228;;;16553:11;;:39;;-1:-1:-1;;;16553:39:0;;-1:-1:-1;;;;;18362:15:1;;;16553:39:0;;;18344:34:1;18414:15;;;18394:18;;;18387:43;18446:18;;;18439:34;;;16522:12:0;;16553:11;;;;;:21;;18256:18:1;;16553:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;16553:39:0;;;;;;;;-1:-1:-1;;16553:39:0;;;;;;;;;;;;:::i;:::-;;;16549:122;;16660:8;;;16549:122;16643:5;-1:-1:-1;16689:7:0;16685:26;;16700:8;;;16685:26;16520:202;16494:228;-1:-1:-1;;;;;16732:13:0;;:7;:13;;;;;;;;;;:23;;16749:6;;16732:7;:23;;16749:6;;16732:23;:::i;:::-;;;;-1:-1:-1;;;;;;;16766:11:0;;:7;:11;;;;;;;;;;:21;;16781:6;;16766:7;:21;;16781:6;;16766:21;:::i;:::-;;;;;;;;16818:2;-1:-1:-1;;;;;16803:26:0;16812:4;-1:-1:-1;;;;;16803:26:0;;16822:6;16803:26;;;;3012:25:1;;3000:2;2985:18;;2866:177;16803:26:0;;;;;;;;16845:16;;;;;;;16840:298;;16878:28;16897:4;16903:2;16878:18;:28::i;:::-;16926:16;;;;;;;16925:17;:41;;;;;16946:20;16957:4;16963:2;16946:10;:20::i;:::-;16925:77;;;;-1:-1:-1;;;;;;16971:31:0;;;;;;:25;:31;;;;;;;;16970:32;16925:77;:111;;;;-1:-1:-1;;;;;;17007:29:0;;;;;;:25;:29;;;;;;;;17006:30;16925:111;:121;;;;;17041:5;17040:6;16925:121;16921:206;;;17067:44;;-1:-1:-1;;;17067:44:0;;18686:2:1;17067:44:0;;;18668:21:1;18725:2;18705:18;;;18698:30;18764:34;18744:18;;;18737:62;-1:-1:-1;;;18815:18:1;;;18808:32;18857:19;;17067:44:0;18484:398:1;16921:206:0;-1:-1:-1;17157:4:0;16379:790;;;;;;:::o;12957:446::-;13058:6;;13026:4;;-1:-1:-1;;;;;13050:14:0;;;13058:6;;13050:14;;;;:43;;-1:-1:-1;13087:6:0;;-1:-1:-1;;;;;13081:12:0;;;13087:6;;13081:12;;13050:43;:79;;;;-1:-1:-1;13123:6:0;;-1:-1:-1;;;;;13123:6:0;13110:9;:19;;13050:79;:118;;;;-1:-1:-1;;;;;;13147:21:0;;;;;;:17;:21;;;;;;;;13146:22;13050:118;:159;;;;-1:-1:-1;;;;;;13186:23:0;;;;;;:17;:23;;;;;;;;13185:24;13050:159;:186;;;;-1:-1:-1;;;;;;13226:10:0;;5194:42;13226:10;;13050:186;:219;;;;-1:-1:-1;;;;;;13253:16:0;;;;13050:219;:257;;;;-1:-1:-1;;;;;;13286:21:0;;13302:4;13286:21;;13050:257;:302;;;;-1:-1:-1;13340:11:0;;-1:-1:-1;;;;;13324:28:0;;;13340:11;;;;;13324:28;;13050:302;:345;;;;-1:-1:-1;13383:11:0;;-1:-1:-1;;;;;13369:26:0;;;13383:11;;;;;13369:26;;13050:345;13043:352;12957:446;-1:-1:-1;;;12957:446:0:o;14685:453::-;14768:16;;;;;;;14767:17;14759:65;;;;-1:-1:-1;;;14759:65:0;;19089:2:1;14759:65:0;;;19071:21:1;19128:2;19108:18;;;19101:30;19167:34;19147:18;;;19140:62;-1:-1:-1;;;19218:18:1;;;19211:33;19261:19;;14759:65:0;18887:399:1;14759:65:0;14840:20;14851:4;14857:2;14840:10;:20::i;:::-;14839:21;:37;;;;-1:-1:-1;14870:6:0;;-1:-1:-1;;;;;14864:12:0;;;14870:6;;14864:12;14839:37;14835:296;;;14905:11;;;;;-1:-1:-1;;;;;14905:11:0;14893:227;;-1:-1:-1;;14951:11:0;:40;;-1:-1:-1;;;;;;14951:40:0;14985:4;14951:40;;;;;12426:523::o;14893:227::-;-1:-1:-1;;;;;15032:23:0;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;15032:30:0;15058:4;15032:30;;;15081:16;:23;;-1:-1:-1;;15081:23:0;15032:30;15081:23;;;14685:453;;:::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:154::-;-1:-1:-1;;;;;1821:5:1;1817:54;1810:5;1807:65;1797:93;;1886:1;1883;1876:12;1901:315;1969:6;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;2206:2;2191:18;;;;2178:32;;-1:-1:-1;;;1901:315:1:o;2221:247::-;2280:6;2333:2;2321:9;2312:7;2308:23;2304:32;2301:52;;;2349:1;2346;2339:12;2301:52;2388:9;2375:23;2407:31;2432:5;2407:31;:::i;2473:388::-;2541:6;2549;2602:2;2590:9;2581:7;2577:23;2573:32;2570:52;;;2618:1;2615;2608:12;2570:52;2657:9;2644:23;2676:31;2701:5;2676:31;:::i;:::-;2726:5;-1:-1:-1;2783:2:1;2768:18;;2755:32;2796:33;2755:32;2796:33;:::i;3048:456::-;3125:6;3133;3141;3194:2;3182:9;3173:7;3169:23;3165:32;3162:52;;;3210:1;3207;3200:12;3162:52;3249:9;3236:23;3268:31;3293:5;3268:31;:::i;:::-;3318:5;-1:-1:-1;3375:2:1;3360:18;;3347:32;3388:33;3347:32;3388:33;:::i;:::-;3048:456;;3440:7;;-1:-1:-1;;;3494:2:1;3479:18;;;;3466:32;;3048:456::o;3509:127::-;3570:10;3565:3;3561:20;3558:1;3551:31;3601:4;3598:1;3591:15;3625:4;3622:1;3615:15;3641:275;3712:2;3706:9;3777:2;3758:13;;-1:-1:-1;;3754:27:1;3742:40;;3812:18;3797:34;;3833:22;;;3794:62;3791:88;;;3859:18;;:::i;:::-;3895:2;3888:22;3641:275;;-1:-1:-1;3641:275:1:o;3921:183::-;3981:4;4014:18;4006:6;4003:30;4000:56;;;4036:18;;:::i;:::-;-1:-1:-1;4081:1:1;4077:14;4093:4;4073:25;;3921:183::o;4109:662::-;4163:5;4216:3;4209:4;4201:6;4197:17;4193:27;4183:55;;4234:1;4231;4224:12;4183:55;4270:6;4257:20;4296:4;4320:60;4336:43;4376:2;4336:43;:::i;:::-;4320:60;:::i;:::-;4414:15;;;4500:1;4496:10;;;;4484:23;;4480:32;;;4445:12;;;;4524:15;;;4521:35;;;4552:1;4549;4542:12;4521:35;4588:2;4580:6;4576:15;4600:142;4616:6;4611:3;4608:15;4600:142;;;4682:17;;4670:30;;4720:12;;;;4633;;4600:142;;;-1:-1:-1;4760:5:1;4109:662;-1:-1:-1;;;;;;4109:662:1:o;4776:1215::-;4894:6;4902;4955:2;4943:9;4934:7;4930:23;4926:32;4923:52;;;4971:1;4968;4961:12;4923:52;5011:9;4998:23;5040:18;5081:2;5073:6;5070:14;5067:34;;;5097:1;5094;5087:12;5067:34;5135:6;5124:9;5120:22;5110:32;;5180:7;5173:4;5169:2;5165:13;5161:27;5151:55;;5202:1;5199;5192:12;5151:55;5238:2;5225:16;5260:4;5284:60;5300:43;5340:2;5300:43;:::i;5284:60::-;5378:15;;;5460:1;5456:10;;;;5448:19;;5444:28;;;5409:12;;;;5484:19;;;5481:39;;;5516:1;5513;5506:12;5481:39;5540:11;;;;5560:217;5576:6;5571:3;5568:15;5560:217;;;5656:3;5643:17;5673:31;5698:5;5673:31;:::i;:::-;5717:18;;5593:12;;;;5755;;;;5560:217;;;5796:5;-1:-1:-1;;5839:18:1;;5826:32;;-1:-1:-1;;5870:16:1;;;5867:36;;;5899:1;5896;5889:12;5867:36;;5922:63;5977:7;5966:8;5955:9;5951:24;5922:63;:::i;:::-;5912:73;;;4776:1215;;;;;:::o;6185:382::-;6250:6;6258;6311:2;6299:9;6290:7;6286:23;6282:32;6279:52;;;6327:1;6324;6317:12;6279:52;6366:9;6353:23;6385:31;6410:5;6385:31;:::i;6572:248::-;6640:6;6648;6701:2;6689:9;6680:7;6676:23;6672:32;6669:52;;;6717:1;6714;6707:12;6669:52;-1:-1:-1;;6740:23:1;;;6810:2;6795:18;;;6782:32;;-1:-1:-1;6572:248:1:o;7784:127::-;7845:10;7840:3;7836:20;7833:1;7826:31;7876:4;7873:1;7866:15;7900:4;7897:1;7890:15;7916:422;8005:1;8048:5;8005:1;8062:270;8083:7;8073:8;8070:21;8062:270;;;8142:4;8138:1;8134:6;8130:17;8124:4;8121:27;8118:53;;;8151:18;;:::i;:::-;8201:7;8191:8;8187:22;8184:55;;;8221:16;;;;8184:55;8300:22;;;;8260:15;;;;8062:270;;;8066:3;7916:422;;;;;:::o;8343:806::-;8392:5;8422:8;8412:80;;-1:-1:-1;8463:1:1;8477:5;;8412:80;8511:4;8501:76;;-1:-1:-1;8548:1:1;8562:5;;8501:76;8593:4;8611:1;8606:59;;;;8679:1;8674:130;;;;8586:218;;8606:59;8636:1;8627:10;;8650:5;;;8674:130;8711:3;8701:8;8698:17;8695:43;;;8718:18;;:::i;:::-;-1:-1:-1;;8774:1:1;8760:16;;8789:5;;8586:218;;8888:2;8878:8;8875:16;8869:3;8863:4;8860:13;8856:36;8850:2;8840:8;8837:16;8832:2;8826:4;8823:12;8819:35;8816:77;8813:159;;;-1:-1:-1;8925:19:1;;;8957:5;;8813:159;9004:34;9029:8;9023:4;9004:34;:::i;:::-;9074:6;9070:1;9066:6;9062:19;9053:7;9050:32;9047:58;;;9085:18;;:::i;:::-;9123:20;;8343:806;-1:-1:-1;;;8343:806:1:o;9154:140::-;9212:5;9241:47;9282:4;9272:8;9268:19;9262:4;9241:47;:::i;9299:168::-;9372:9;;;9403;;9420:15;;;9414:22;;9400:37;9390:71;;9441:18;;:::i;9472:128::-;9539:9;;;9560:11;;;9557:37;;;9574:18;;:::i;9955:127::-;10016:10;10011:3;10007:20;10004:1;9997:31;10047:4;10044:1;10037:15;10071:4;10068:1;10061:15;10434:197;10472:3;10500:6;10541:2;10534:5;10530:14;10568:2;10559:7;10556:15;10553:41;;10574:18;;:::i;:::-;10623:1;10610:15;;10434:197;-1:-1:-1;;;10434:197:1:o;10636:125::-;10701:9;;;10722:10;;;10719:36;;;10735:18;;:::i;11175:217::-;11215:1;11241;11231:132;;11285:10;11280:3;11276:20;11273:1;11266:31;11320:4;11317:1;11310:15;11348:4;11345:1;11338:15;11231:132;-1:-1:-1;11377:9:1;;11175:217::o;12594:385::-;12673:6;12681;12734:2;12722:9;12713:7;12709:23;12705:32;12702:52;;;12750:1;12747;12740:12;12702:52;12782:9;12776:16;12801:31;12826:5;12801:31;:::i;:::-;12901:2;12886:18;;12880:25;12851:5;;-1:-1:-1;12914:33:1;12880:25;12914:33;:::i;14596:184::-;14666:6;14719:2;14707:9;14698:7;14694:23;14690:32;14687:52;;;14735:1;14732;14725:12;14687:52;-1:-1:-1;14758:16:1;;14596:184;-1:-1:-1;14596:184:1:o;15087:245::-;15154:6;15207:2;15195:9;15186:7;15182:23;15178:32;15175:52;;;15223:1;15220;15213:12;15175:52;15255:9;15249:16;15274:28;15296:5;15274:28;:::i

Swarm Source

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