ETH Price: $3,182.94 (-7.53%)
Gas: 2 Gwei

Token

Katzenomics 2.0 (KATZEN2.0)
 

Overview

Max Total Supply

20,000,000,000 KATZEN2.0

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
180,885,032.727272727272727272 KATZEN2.0

Value
$0.00
0x0cdd9e232729e899241e53bb62fc9bc9c5994282
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:
Katzenomics2

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-15
*/

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

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

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    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 Katzenomics2 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 _isExcludedFromFees;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 20_000_000_000;
    string constant private _name = "Katzenomics 2.0";
    string constant private _symbol = "KATZEN2.0";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 totalSwap;
    }

    Fees public _taxRates = Fees({
        buyFee: 0,
        sellFee: 200,
        transferFee: 0
    });

    uint256 constant public maxBuyTaxes = 1000;
    uint256 constant public maxSellTaxes = 1000;
    uint256 constant public maxTransferTaxes = 1000;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0x2D6089d74B52Af4045914758367c02205F1DBFfE);
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;

        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // 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.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

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

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

    
    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { 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 setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            initializer.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            require(!lpPairs[pair], "Pair already added to list.");
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            initializer.setLpPair(pair, true);
        }
    }

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[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 lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    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;
            presaleAddresses[presale] = true;
            setExcludedFromFees(presale, true);
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
            presaleAddresses[router] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(router, true);
            setExcludedFromFees(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 (sell) {
            if (!inSwap) {
                if (contractSwapEnabled
                   && !presaleAddresses[to]
                   && !presaleAddresses[from]
                ) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        bool success;
        (success,) = marketingWallet.call{value: address(this).balance, gas: 55000}("");
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            if (address(initializer) == address(0)){
                initializer = Initializer(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(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 {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
        launchStamp = block.timestamp;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    function sweepExternalTokens(address token) external onlyOwner {
        if (_hasLiqBeenAdded) {
            require(token != address(this), "Cannot sweep native tokens.");
        }
        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, false, false, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, 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(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        if (address(initializer) == address(this)
            && block.chainid != 97) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","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":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"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":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","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":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","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":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","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":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","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"}]

600060028190556008805460ff1916600117905560e0604052608081905260c860a05260c0526009805465ffffffffffff191662c80000179055600c8054600161ff0160a01b031916732d6089d74b52af4045914758367c02205f1dbffe179055600a60108190556011805461ffff19169055601380546001600160a01b031916331790556200009290601290620002b0565b620000a3906404a817c800620002c8565b601380546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620000f76012600a620002b0565b62000108906404a817c800620002c8565b60405190815260200160405180910390a3601380546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905595549094168352600490915290208054909216179055620002e2565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001f2578160001904821115620001d657620001d66200019b565b80851615620001e457918102915b93841c9390800290620001b6565b509250929050565b6000826200020b57506001620002aa565b816200021a57506000620002aa565b81600181146200023357600281146200023e576200025e565b6001915050620002aa565b60ff8411156200025257620002526200019b565b50506001821b620002aa565b5060208310610133831016604e8410600b841016171562000283575081810a620002aa565b6200028f8383620001b1565b8060001904821115620002a657620002a66200019b565b0290505b92915050565b6000620002c160ff841683620001fa565b9392505050565b8082028115828204841417620002aa57620002aa6200019b565b613ac480620002f26000396000f3fe6080604052600436106103385760003560e01c80634fbee193116101b057806395d89b41116100ec578063bfc2fc3511610095578063ee5d9c2d1161006f578063ee5d9c2d14610974578063fb78680d14610989578063fdb78c0e146109a9578063feadde9c146109ca57600080fd5b8063bfc2fc35146108ee578063dd62ed3e1461090e578063eafb5a3c1461095457600080fd5b8063b1b08f71116100c6578063b1b08f71146105aa578063b3d514fb146105aa578063b7df8b36146108d457600080fd5b806395d89b4114610862578063a9059cbb14610894578063ab558e4d146108b457600080fd5b8063715018a61161015957806380c581d11161013357806380c581d1146107fa578063893d20e81461081a5780638a63bd9b146108385780638a8c523c1461084d57600080fd5b8063715018a6146107b057806375f0a874146107c557806378648edf146107e557600080fd5b80635a6f09181161018a5780635a6f0918146107445780635c24b0741461075a57806370a082311461077a57600080fd5b80634fbee193146106cc57806350a8e01614610705578063590ffdce1461072457600080fd5b80632610eaca1161027f57806332cde664116102285780634ada218b116102025780634ada218b146106525780634bbb93eb1461066c5780634e718e481461068c5780634fb2e45d146106ac57600080fd5b806332cde664146105f257806333251a0b14610612578063452ed4f11461063257600080fd5b80632b28fc7a116102595780632b28fc7a146105aa5780632e8fa821146105c0578063313ce567146105d657600080fd5b80632610eaca1461055f578063285777511461057f5780632b112e491461059557600080fd5b806307dd79e0116102e157806313b4a7f4116102bb57806313b4a7f41461050a57806318160ddd1461052a57806323b872dd1461053f57600080fd5b806307dd79e014610487578063095ea7b3146104b15780630dcbcf1c146104d157600080fd5b8063069d955f11610312578063069d955f146103bd57806306fdde03146104135780630758d9241461046257600080fd5b806303fd2a45146103445780630445b66714610377578063044df7261461039b57600080fd5b3661033f57005b600080fd5b34801561035057600080fd5b5061035a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038357600080fd5b5061038d600d5481565b60405190815260200161036e565b3480156103a757600080fd5b506103bb6103b6366004613409565b6109ea565b005b3480156103c957600080fd5b506009546103ee9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161036e565b34801561041f57600080fd5b5060408051808201909152600f81527f4b61747a656e6f6d69637320322e30000000000000000000000000000000000060208201525b60405161036e9190613442565b34801561046e57600080fd5b50600a5461035a9061010090046001600160a01b031681565b34801561049357600080fd5b50600a546104a19060ff1681565b604051901515815260200161036e565b3480156104bd57600080fd5b506104a16104cc3660046134a5565b610aa8565b3480156104dd57600080fd5b506104a16104ec3660046134d1565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561051657600080fd5b506103bb6105253660046134ee565b610abf565b34801561053657600080fd5b5061038d610c7d565b34801561054b57600080fd5b506104a161055a36600461351c565b610c9f565b34801561056b57600080fd5b506103bb61057a366004613633565b610d17565b34801561058b57600080fd5b5061038d60105481565b3480156105a157600080fd5b5061038d610ecc565b3480156105b657600080fd5b5061038d6103e881565b3480156105cc57600080fd5b5061038d600e5481565b3480156105e257600080fd5b506040516012815260200161036e565b3480156105fe57600080fd5b506103bb61060d36600461370c565b610f4b565b34801561061e57600080fd5b506103bb61062d3660046134d1565b61109f565b34801561063e57600080fd5b50600b5461035a906001600160a01b031681565b34801561065e57600080fd5b506011546104a19060ff1681565b34801561067857600080fd5b5061038d61068736600461374f565b611150565b34801561069857600080fd5b506103bb6106a736600461374f565b611184565b3480156106b857600080fd5b506103bb6106c73660046134d1565b611222565b3480156106d857600080fd5b506104a16106e73660046134d1565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561071157600080fd5b506011546104a190610100900460ff1681565b34801561073057600080fd5b506103bb61073f366004613768565b611424565b34801561075057600080fd5b5061038d60125481565b34801561076657600080fd5b506103bb6107753660046134d1565b611497565b34801561078657600080fd5b5061038d6107953660046134d1565b6001600160a01b031660009081526020819052604090205490565b3480156107bc57600080fd5b506103bb611675565b3480156107d157600080fd5b50600c5461035a906001600160a01b031681565b3480156107f157600080fd5b506103bb61179a565b34801561080657600080fd5b506103bb610815366004613768565b6117f1565b34801561082657600080fd5b506013546001600160a01b031661035a565b34801561084457600080fd5b506104a16119db565b34801561085957600080fd5b506103bb611a4b565b34801561086e57600080fd5b5060408051808201909152600981526804b41545a454e322e360bc1b6020820152610455565b3480156108a057600080fd5b506104a16108af3660046134a5565b611ca1565b3480156108c057600080fd5b506103bb6108cf3660046134d1565b611cb8565b3480156108e057600080fd5b50600f546104a19060ff1681565b3480156108fa57600080fd5b506103bb610909366004613409565b611e52565b34801561091a57600080fd5b5061038d6109293660046134ee565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561096057600080fd5b506103bb61096f3660046134d1565b611efd565b34801561098057600080fd5b506103bb6122fe565b34801561099557600080fd5b506103bb6109a4366004613786565b6123d7565b3480156109b557600080fd5b50600c546104a190600160a81b900460ff1681565b3480156109d657600080fd5b506103bb6109e5366004613768565b61269d565b6013546001600160a01b03163314610a375760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f83398151915260448201526064015b60405180910390fd5b60115460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610a8c57600080fd5b505af1158015610aa0573d6000803e3d6000fd5b505050505050565b6000610ab5338484612710565b5060015b92915050565b6013546001600160a01b03163314610b075760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b60085460ff16610b1657600080fd5b6001600160a01b0382163014801590610b3857506001600160a01b0381163014155b8015610b525750600b546001600160a01b03838116911614155b8015610b6c5750600b546001600160a01b03828116911614155b610ba65760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610a2e565b806001600160a01b0316826001600160a01b031603610c08576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610c04908290611424565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610c72908390611424565b610c04816001611424565b6000610c8b6012600a6138b2565b610c9a906404a817c8006138c1565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d04576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610cfe9084906138d8565b90915550505b610d0f848484612809565b949350505050565b6013546001600160a01b03163314610d5f5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b8051825114610db05760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610a2e565b60005b82518161ffff161015610ec757610dcc6012600a6138b2565b828261ffff1681518110610de257610de26138eb565b6020026020010151610df491906138c1565b336000908152602081905260409020541015610e525760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610a2e565b610eb433848361ffff1681518110610e6c57610e6c6138eb565b60200260200101516012600a610e8291906138b2565b858561ffff1681518110610e9857610e986138eb565b6020026020010151610eaa91906138c1565b6000806001612b9d565b5080610ebf81613901565b915050610db3565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610f269190613922565b610f326012600a6138b2565b610f41906404a817c8006138c1565b610c9a91906138d8565b6013546001600160a01b03163314610f935760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b600a5460ff1615610fe65760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610a2e565b6103e88361ffff161115801561100257506103e88261ffff1611155b801561101457506103e88161ffff1611155b6110605760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610a2e565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6013546001600160a01b031633146110e75760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b6011546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561113557600080fd5b505af1158015611149573d6000803e3d6000fd5b5050505050565b600b546001600160a01b03166000908152602081905260408120546127109061117a9084906138c1565b610ab99190613935565b6013546001600160a01b031633146111cc5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b609681111561121d5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610a2e565b601055565b6013546001600160a01b0316331461126a5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b6001600160a01b0381166112e65760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a2e565b61deac196001600160a01b038216016113675760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a2e565b60135461137e906001600160a01b03166000611424565b611389816001611424565b6013546001600160a01b0316600090815260208190526040902054156113d2576013546001600160a01b03166000818152602081905260409020546113d091908390610eaa565b505b601380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6013546001600160a01b0316331461146c5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b031633146114df5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b60115460ff16156114ef57600080fd5b306001600160a01b038216036115475760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610a2e565b6011805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156115cd575060408051601f3d908101601f191682019092526115ca91810190613957565b60015b6115d657600080fd5b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560135492546116539383169291900416600019612710565b600a54610ec790309061010090046001600160a01b0316600019612710565b50565b6013546001600160a01b031633146116bd5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b60115460ff166117355760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610a2e565b60135461174c906001600160a01b03166000611424565b601380546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b031633146117e25760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b600a805460ff19166001179055565b6013546001600160a01b031633146118395760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b806118ac576001600160a01b03828116600081815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610a8c57600080fd5b60025415611913576203f480600254426118c691906138d8565b116119135760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610a2e565b6001600160a01b03821660009081526001602052604090205460ff161561197c5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610a2e565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610a72565b6013546000906001600160a01b03163314611a265760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b600a54611a4590309061010090046001600160a01b0316600019612710565b50600190565b6013546001600160a01b03163314611a935760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b60115460ff1615611ae65760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a2e565b601154610100900460ff16611b3d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610a2e565b6011546201000090046001600160a01b0316611b6d576011805462010000600160b01b0319163062010000021790555b601154600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611bdf57600080fd5b505af1925050508015611bf0575060015b50601154600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611c73575060408051601f3d908101601f19168201909252611c7091810190613986565b60015b15611c8257600d91909155600e555b6011805460ff1990811660011790915560088054909116905542601255565b6000611cae338484612809565b5060019392505050565b6013546001600160a01b03163314611d005760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b601154610100900460ff1615611d6857306001600160a01b03821603611d685760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610a2e565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de391906139aa565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec791906139c3565b6013546001600160a01b03163314611e9a5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b03163314611f455760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b601154610100900460ff1615611f9d5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610a2e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200691906139e0565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612053573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207791906139e0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156120c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e691906139e0565b600b546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661227c57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612151573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217591906139e0565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e691906139e0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225791906139e0565b600b80546001600160a01b0319166001600160a01b0392909216919091179055612298565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610ec7923092910416600019612710565b6013546001600160a01b031633146123465760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b601154610100900460ff161561239e5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610a2e565b6013546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611672573d6000803e3d6000fd5b6013546001600160a01b0316331461241f5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b828461242d6012600a6138b2565b61243c906404a817c8006138c1565b61244691906138c1565b6124509190613935565b600d5580826124616012600a6138b2565b612470906404a817c8006138c1565b61247a91906138c1565b6124849190613935565b600e819055600d5411156124e45760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610a2e565b600b546001600160a01b03166000908152602081905260409020546127109061250e9060966138c1565b6125189190613935565b600e5411156125755760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610a2e565b620f42406125856012600a6138b2565b612594906404a817c8006138c1565b61259e9190613935565b600e5410156126065760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a2e565b620f42406126166012600a6138b2565b612625906404a817c8006138c1565b61262f9190613935565b600d5410156126975760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a2e565b50505050565b6013546001600160a01b031633146126e55760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661275c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a2e565b6001600160a01b0382166127a85760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a2e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661286f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a2e565b6001600160a01b0383166128d15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a2e565b600082116129335760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a2e565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612961576001925061298f565b6001600160a01b03861660009081526001602052604090205460ff161561298b576001915061298f565b5060015b6129998787612e50565b15612a9a5760115460ff16612a9a57806129f55760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a2e565b6001600160a01b03871660009081526005602052604090205460ff16158015612a3757506001600160a01b03861660009081526005602052604090205460ff16155b15612a9a5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610a2e565b8115612b8457600c54600160a01b900460ff16612b8457600c54600160a81b900460ff168015612ae357506001600160a01b03861660009081526007602052604090205460ff16155b8015612b0857506001600160a01b03871660009081526007602052604090205460ff16155b15612b845730600090815260208190526040902054600d548110612b8257600e54600f5460ff1615612b6c57601054600b546001600160a01b031660009081526020819052604090205461271091612b5f916138c1565b612b699190613935565b90505b808210612b77578091505b612b8082612f67565b505b505b612b92878787868686612b9d565b979650505050505050565b6000612ba98787612e50565b15612c435760115460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612c2c575060408051601f3d908101601f19168201909252612c29918101906139c3565b60015b612c3557600080fd5b905080612c4157600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612c8557506001600160a01b03871660009081526006602052604090205460ff165b15612c8e575060005b6001600160a01b03881660009081526020819052604081208054889290612cb69084906138d8565b909155506000905081612cc95786612cd5565b612cd5898888886131ab565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612d0b9190613922565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d5791815260200190565b60405180910390a3601154610100900460ff16612e4157612d7889896132b7565b601154610100900460ff16158015612d955750612d958989612e50565b8015612dba57506001600160a01b03891660009081526005602052604090205460ff16155b8015612ddf57506001600160a01b03881660009081526005602052604090205460ff16155b8015612de9575083155b15612e415760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610a2e565b50600198975050505050505050565b6013546000906001600160a01b03848116911614801590612e7f57506013546001600160a01b03838116911614155b8015612e9657506013546001600160a01b03163214155b8015612ebb57506001600160a01b03821660009081526004602052604090205460ff16155b8015612ee057506001600160a01b03831660009081526004602052604090205460ff16155b8015612ef757506001600160a01b03821661dead14155b8015612f0b57506001600160a01b03821615155b8015612f2057506001600160a01b0383163014155b8015612f4057506011546001600160a01b03848116620100009092041614155b8015612f6057506011546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600a5461010090046001600160a01b0316845290915290205460001914612fdd57306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613012576130126138eb565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a991906139e0565b816001815181106130bc576130bc6138eb565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906131099085906000908690309042906004016139fd565b600060405180830381600087803b15801561312357600080fd5b505af1925050508015613134575060015b61313e575061319b565b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613190576040519150601f19603f3d011682016040523d82523d6000602084013e613195565b606091505b50505050505b50600c805460ff60a01b19169055565b60008083156131c1575060095461ffff166131eb565b82156131da575060095462010000900461ffff166131eb565b50600954640100000000900461ffff165b806000036131fc5784915050610d0f565b6011546201000090046001600160a01b03163014801561321d575046606114155b1561322757506111945b600061271061323683886138c1565b6132409190613935565b905080156132ad573060009081526020819052604081208054839290613267908490613922565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612b9281876138d8565b601154610100900460ff161561331b5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610a2e565b6133258282612e50565b15801561333f5750600b546001600160a01b038281169116145b15610c04576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556011805461ff0019166101001790819055620100009004166133b7576011805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611ef1565b801515811461167257600080fd5b6000806040838503121561341c57600080fd5b8235613427816133fb565b91506020830135613437816133fb565b809150509250929050565b600060208083528351808285015260005b8181101561346f57858101830151858201604001528201613453565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461167257600080fd5b600080604083850312156134b857600080fd5b82356134c381613490565b946020939093013593505050565b6000602082840312156134e357600080fd5b8135612f6081613490565b6000806040838503121561350157600080fd5b823561350c81613490565b9150602083013561343781613490565b60008060006060848603121561353157600080fd5b833561353c81613490565b9250602084013561354c81613490565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561359c5761359c61355d565b604052919050565b600067ffffffffffffffff8211156135be576135be61355d565b5060051b60200190565b600082601f8301126135d957600080fd5b813560206135ee6135e9836135a4565b613573565b82815260059290921b8401810191818101908684111561360d57600080fd5b8286015b848110156136285780358352918301918301613611565b509695505050505050565b6000806040838503121561364657600080fd5b823567ffffffffffffffff8082111561365e57600080fd5b818501915085601f83011261367257600080fd5b813560206136826135e9836135a4565b82815260059290921b840181019181810190898411156136a157600080fd5b948201945b838610156136c85785356136b981613490565b825294820194908201906136a6565b965050860135925050808211156136de57600080fd5b506136eb858286016135c8565b9150509250929050565b803561ffff8116811461370757600080fd5b919050565b60008060006060848603121561372157600080fd5b61372a846136f5565b9250613738602085016136f5565b9150613746604085016136f5565b90509250925092565b60006020828403121561376157600080fd5b5035919050565b6000806040838503121561377b57600080fd5b823561342781613490565b6000806000806080858703121561379c57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156138095781600019048211156137ef576137ef6137b8565b808516156137fc57918102915b93841c93908002906137d3565b509250929050565b60008261382057506001610ab9565b8161382d57506000610ab9565b8160018114613843576002811461384d57613869565b6001915050610ab9565b60ff84111561385e5761385e6137b8565b50506001821b610ab9565b5060208310610133831016604e8410600b841016171561388c575081810a610ab9565b61389683836137ce565b80600019048211156138aa576138aa6137b8565b029392505050565b6000612f6060ff841683613811565b8082028115828204841417610ab957610ab96137b8565b81810381811115610ab957610ab96137b8565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613918576139186137b8565b6001019392505050565b80820180821115610ab957610ab96137b8565b60008261395257634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561396a57600080fd5b825161397581613490565b602084015190925061343781613490565b6000806040838503121561399957600080fd5b505080516020909101519092909150565b6000602082840312156139bc57600080fd5b5051919050565b6000602082840312156139d557600080fd5b8151612f60816133fb565b6000602082840312156139f257600080fd5b8151612f6081613490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613a4d5784516001600160a01b031683529383019391830191600101613a28565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220028744b0835c2be1d2f2df14ef677371bb5a0f91783bd7e2589c4a618c8fdc2064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103385760003560e01c80634fbee193116101b057806395d89b41116100ec578063bfc2fc3511610095578063ee5d9c2d1161006f578063ee5d9c2d14610974578063fb78680d14610989578063fdb78c0e146109a9578063feadde9c146109ca57600080fd5b8063bfc2fc35146108ee578063dd62ed3e1461090e578063eafb5a3c1461095457600080fd5b8063b1b08f71116100c6578063b1b08f71146105aa578063b3d514fb146105aa578063b7df8b36146108d457600080fd5b806395d89b4114610862578063a9059cbb14610894578063ab558e4d146108b457600080fd5b8063715018a61161015957806380c581d11161013357806380c581d1146107fa578063893d20e81461081a5780638a63bd9b146108385780638a8c523c1461084d57600080fd5b8063715018a6146107b057806375f0a874146107c557806378648edf146107e557600080fd5b80635a6f09181161018a5780635a6f0918146107445780635c24b0741461075a57806370a082311461077a57600080fd5b80634fbee193146106cc57806350a8e01614610705578063590ffdce1461072457600080fd5b80632610eaca1161027f57806332cde664116102285780634ada218b116102025780634ada218b146106525780634bbb93eb1461066c5780634e718e481461068c5780634fb2e45d146106ac57600080fd5b806332cde664146105f257806333251a0b14610612578063452ed4f11461063257600080fd5b80632b28fc7a116102595780632b28fc7a146105aa5780632e8fa821146105c0578063313ce567146105d657600080fd5b80632610eaca1461055f578063285777511461057f5780632b112e491461059557600080fd5b806307dd79e0116102e157806313b4a7f4116102bb57806313b4a7f41461050a57806318160ddd1461052a57806323b872dd1461053f57600080fd5b806307dd79e014610487578063095ea7b3146104b15780630dcbcf1c146104d157600080fd5b8063069d955f11610312578063069d955f146103bd57806306fdde03146104135780630758d9241461046257600080fd5b806303fd2a45146103445780630445b66714610377578063044df7261461039b57600080fd5b3661033f57005b600080fd5b34801561035057600080fd5b5061035a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038357600080fd5b5061038d600d5481565b60405190815260200161036e565b3480156103a757600080fd5b506103bb6103b6366004613409565b6109ea565b005b3480156103c957600080fd5b506009546103ee9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161036e565b34801561041f57600080fd5b5060408051808201909152600f81527f4b61747a656e6f6d69637320322e30000000000000000000000000000000000060208201525b60405161036e9190613442565b34801561046e57600080fd5b50600a5461035a9061010090046001600160a01b031681565b34801561049357600080fd5b50600a546104a19060ff1681565b604051901515815260200161036e565b3480156104bd57600080fd5b506104a16104cc3660046134a5565b610aa8565b3480156104dd57600080fd5b506104a16104ec3660046134d1565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561051657600080fd5b506103bb6105253660046134ee565b610abf565b34801561053657600080fd5b5061038d610c7d565b34801561054b57600080fd5b506104a161055a36600461351c565b610c9f565b34801561056b57600080fd5b506103bb61057a366004613633565b610d17565b34801561058b57600080fd5b5061038d60105481565b3480156105a157600080fd5b5061038d610ecc565b3480156105b657600080fd5b5061038d6103e881565b3480156105cc57600080fd5b5061038d600e5481565b3480156105e257600080fd5b506040516012815260200161036e565b3480156105fe57600080fd5b506103bb61060d36600461370c565b610f4b565b34801561061e57600080fd5b506103bb61062d3660046134d1565b61109f565b34801561063e57600080fd5b50600b5461035a906001600160a01b031681565b34801561065e57600080fd5b506011546104a19060ff1681565b34801561067857600080fd5b5061038d61068736600461374f565b611150565b34801561069857600080fd5b506103bb6106a736600461374f565b611184565b3480156106b857600080fd5b506103bb6106c73660046134d1565b611222565b3480156106d857600080fd5b506104a16106e73660046134d1565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561071157600080fd5b506011546104a190610100900460ff1681565b34801561073057600080fd5b506103bb61073f366004613768565b611424565b34801561075057600080fd5b5061038d60125481565b34801561076657600080fd5b506103bb6107753660046134d1565b611497565b34801561078657600080fd5b5061038d6107953660046134d1565b6001600160a01b031660009081526020819052604090205490565b3480156107bc57600080fd5b506103bb611675565b3480156107d157600080fd5b50600c5461035a906001600160a01b031681565b3480156107f157600080fd5b506103bb61179a565b34801561080657600080fd5b506103bb610815366004613768565b6117f1565b34801561082657600080fd5b506013546001600160a01b031661035a565b34801561084457600080fd5b506104a16119db565b34801561085957600080fd5b506103bb611a4b565b34801561086e57600080fd5b5060408051808201909152600981526804b41545a454e322e360bc1b6020820152610455565b3480156108a057600080fd5b506104a16108af3660046134a5565b611ca1565b3480156108c057600080fd5b506103bb6108cf3660046134d1565b611cb8565b3480156108e057600080fd5b50600f546104a19060ff1681565b3480156108fa57600080fd5b506103bb610909366004613409565b611e52565b34801561091a57600080fd5b5061038d6109293660046134ee565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561096057600080fd5b506103bb61096f3660046134d1565b611efd565b34801561098057600080fd5b506103bb6122fe565b34801561099557600080fd5b506103bb6109a4366004613786565b6123d7565b3480156109b557600080fd5b50600c546104a190600160a81b900460ff1681565b3480156109d657600080fd5b506103bb6109e5366004613768565b61269d565b6013546001600160a01b03163314610a375760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f83398151915260448201526064015b60405180910390fd5b60115460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610a8c57600080fd5b505af1158015610aa0573d6000803e3d6000fd5b505050505050565b6000610ab5338484612710565b5060015b92915050565b6013546001600160a01b03163314610b075760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b60085460ff16610b1657600080fd5b6001600160a01b0382163014801590610b3857506001600160a01b0381163014155b8015610b525750600b546001600160a01b03838116911614155b8015610b6c5750600b546001600160a01b03828116911614155b610ba65760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610a2e565b806001600160a01b0316826001600160a01b031603610c08576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610c04908290611424565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610c72908390611424565b610c04816001611424565b6000610c8b6012600a6138b2565b610c9a906404a817c8006138c1565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d04576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610cfe9084906138d8565b90915550505b610d0f848484612809565b949350505050565b6013546001600160a01b03163314610d5f5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b8051825114610db05760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610a2e565b60005b82518161ffff161015610ec757610dcc6012600a6138b2565b828261ffff1681518110610de257610de26138eb565b6020026020010151610df491906138c1565b336000908152602081905260409020541015610e525760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610a2e565b610eb433848361ffff1681518110610e6c57610e6c6138eb565b60200260200101516012600a610e8291906138b2565b858561ffff1681518110610e9857610e986138eb565b6020026020010151610eaa91906138c1565b6000806001612b9d565b5080610ebf81613901565b915050610db3565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610f269190613922565b610f326012600a6138b2565b610f41906404a817c8006138c1565b610c9a91906138d8565b6013546001600160a01b03163314610f935760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b600a5460ff1615610fe65760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610a2e565b6103e88361ffff161115801561100257506103e88261ffff1611155b801561101457506103e88161ffff1611155b6110605760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610a2e565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6013546001600160a01b031633146110e75760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b6011546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561113557600080fd5b505af1158015611149573d6000803e3d6000fd5b5050505050565b600b546001600160a01b03166000908152602081905260408120546127109061117a9084906138c1565b610ab99190613935565b6013546001600160a01b031633146111cc5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b609681111561121d5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610a2e565b601055565b6013546001600160a01b0316331461126a5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b6001600160a01b0381166112e65760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a2e565b61deac196001600160a01b038216016113675760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a2e565b60135461137e906001600160a01b03166000611424565b611389816001611424565b6013546001600160a01b0316600090815260208190526040902054156113d2576013546001600160a01b03166000818152602081905260409020546113d091908390610eaa565b505b601380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6013546001600160a01b0316331461146c5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b031633146114df5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b60115460ff16156114ef57600080fd5b306001600160a01b038216036115475760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610a2e565b6011805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156115cd575060408051601f3d908101601f191682019092526115ca91810190613957565b60015b6115d657600080fd5b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560135492546116539383169291900416600019612710565b600a54610ec790309061010090046001600160a01b0316600019612710565b50565b6013546001600160a01b031633146116bd5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b60115460ff166117355760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610a2e565b60135461174c906001600160a01b03166000611424565b601380546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b031633146117e25760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b600a805460ff19166001179055565b6013546001600160a01b031633146118395760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b806118ac576001600160a01b03828116600081815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610a8c57600080fd5b60025415611913576203f480600254426118c691906138d8565b116119135760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610a2e565b6001600160a01b03821660009081526001602052604090205460ff161561197c5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610a2e565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610a72565b6013546000906001600160a01b03163314611a265760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b600a54611a4590309061010090046001600160a01b0316600019612710565b50600190565b6013546001600160a01b03163314611a935760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b60115460ff1615611ae65760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a2e565b601154610100900460ff16611b3d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610a2e565b6011546201000090046001600160a01b0316611b6d576011805462010000600160b01b0319163062010000021790555b601154600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611bdf57600080fd5b505af1925050508015611bf0575060015b50601154600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611c73575060408051601f3d908101601f19168201909252611c7091810190613986565b60015b15611c8257600d91909155600e555b6011805460ff1990811660011790915560088054909116905542601255565b6000611cae338484612809565b5060019392505050565b6013546001600160a01b03163314611d005760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b601154610100900460ff1615611d6857306001600160a01b03821603611d685760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610a2e565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de391906139aa565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec791906139c3565b6013546001600160a01b03163314611e9a5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b03163314611f455760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b601154610100900460ff1615611f9d5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610a2e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200691906139e0565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612053573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207791906139e0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156120c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e691906139e0565b600b546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661227c57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612151573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217591906139e0565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e691906139e0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225791906139e0565b600b80546001600160a01b0319166001600160a01b0392909216919091179055612298565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610ec7923092910416600019612710565b6013546001600160a01b031633146123465760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b601154610100900460ff161561239e5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610a2e565b6013546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611672573d6000803e3d6000fd5b6013546001600160a01b0316331461241f5760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b828461242d6012600a6138b2565b61243c906404a817c8006138c1565b61244691906138c1565b6124509190613935565b600d5580826124616012600a6138b2565b612470906404a817c8006138c1565b61247a91906138c1565b6124849190613935565b600e819055600d5411156124e45760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610a2e565b600b546001600160a01b03166000908152602081905260409020546127109061250e9060966138c1565b6125189190613935565b600e5411156125755760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610a2e565b620f42406125856012600a6138b2565b612594906404a817c8006138c1565b61259e9190613935565b600e5410156126065760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a2e565b620f42406126166012600a6138b2565b612625906404a817c8006138c1565b61262f9190613935565b600d5410156126975760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a2e565b50505050565b6013546001600160a01b031633146126e55760405162461bcd60e51b81526020600482015260116024820152600080516020613a6f8339815191526044820152606401610a2e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661275c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a2e565b6001600160a01b0382166127a85760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a2e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661286f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a2e565b6001600160a01b0383166128d15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a2e565b600082116129335760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a2e565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612961576001925061298f565b6001600160a01b03861660009081526001602052604090205460ff161561298b576001915061298f565b5060015b6129998787612e50565b15612a9a5760115460ff16612a9a57806129f55760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a2e565b6001600160a01b03871660009081526005602052604090205460ff16158015612a3757506001600160a01b03861660009081526005602052604090205460ff16155b15612a9a5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610a2e565b8115612b8457600c54600160a01b900460ff16612b8457600c54600160a81b900460ff168015612ae357506001600160a01b03861660009081526007602052604090205460ff16155b8015612b0857506001600160a01b03871660009081526007602052604090205460ff16155b15612b845730600090815260208190526040902054600d548110612b8257600e54600f5460ff1615612b6c57601054600b546001600160a01b031660009081526020819052604090205461271091612b5f916138c1565b612b699190613935565b90505b808210612b77578091505b612b8082612f67565b505b505b612b92878787868686612b9d565b979650505050505050565b6000612ba98787612e50565b15612c435760115460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612c2c575060408051601f3d908101601f19168201909252612c29918101906139c3565b60015b612c3557600080fd5b905080612c4157600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612c8557506001600160a01b03871660009081526006602052604090205460ff165b15612c8e575060005b6001600160a01b03881660009081526020819052604081208054889290612cb69084906138d8565b909155506000905081612cc95786612cd5565b612cd5898888886131ab565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612d0b9190613922565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d5791815260200190565b60405180910390a3601154610100900460ff16612e4157612d7889896132b7565b601154610100900460ff16158015612d955750612d958989612e50565b8015612dba57506001600160a01b03891660009081526005602052604090205460ff16155b8015612ddf57506001600160a01b03881660009081526005602052604090205460ff16155b8015612de9575083155b15612e415760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610a2e565b50600198975050505050505050565b6013546000906001600160a01b03848116911614801590612e7f57506013546001600160a01b03838116911614155b8015612e9657506013546001600160a01b03163214155b8015612ebb57506001600160a01b03821660009081526004602052604090205460ff16155b8015612ee057506001600160a01b03831660009081526004602052604090205460ff16155b8015612ef757506001600160a01b03821661dead14155b8015612f0b57506001600160a01b03821615155b8015612f2057506001600160a01b0383163014155b8015612f4057506011546001600160a01b03848116620100009092041614155b8015612f6057506011546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600a5461010090046001600160a01b0316845290915290205460001914612fdd57306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613012576130126138eb565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a991906139e0565b816001815181106130bc576130bc6138eb565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906131099085906000908690309042906004016139fd565b600060405180830381600087803b15801561312357600080fd5b505af1925050508015613134575060015b61313e575061319b565b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613190576040519150601f19603f3d011682016040523d82523d6000602084013e613195565b606091505b50505050505b50600c805460ff60a01b19169055565b60008083156131c1575060095461ffff166131eb565b82156131da575060095462010000900461ffff166131eb565b50600954640100000000900461ffff165b806000036131fc5784915050610d0f565b6011546201000090046001600160a01b03163014801561321d575046606114155b1561322757506111945b600061271061323683886138c1565b6132409190613935565b905080156132ad573060009081526020819052604081208054839290613267908490613922565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612b9281876138d8565b601154610100900460ff161561331b5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610a2e565b6133258282612e50565b15801561333f5750600b546001600160a01b038281169116145b15610c04576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556011805461ff0019166101001790819055620100009004166133b7576011805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611ef1565b801515811461167257600080fd5b6000806040838503121561341c57600080fd5b8235613427816133fb565b91506020830135613437816133fb565b809150509250929050565b600060208083528351808285015260005b8181101561346f57858101830151858201604001528201613453565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461167257600080fd5b600080604083850312156134b857600080fd5b82356134c381613490565b946020939093013593505050565b6000602082840312156134e357600080fd5b8135612f6081613490565b6000806040838503121561350157600080fd5b823561350c81613490565b9150602083013561343781613490565b60008060006060848603121561353157600080fd5b833561353c81613490565b9250602084013561354c81613490565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561359c5761359c61355d565b604052919050565b600067ffffffffffffffff8211156135be576135be61355d565b5060051b60200190565b600082601f8301126135d957600080fd5b813560206135ee6135e9836135a4565b613573565b82815260059290921b8401810191818101908684111561360d57600080fd5b8286015b848110156136285780358352918301918301613611565b509695505050505050565b6000806040838503121561364657600080fd5b823567ffffffffffffffff8082111561365e57600080fd5b818501915085601f83011261367257600080fd5b813560206136826135e9836135a4565b82815260059290921b840181019181810190898411156136a157600080fd5b948201945b838610156136c85785356136b981613490565b825294820194908201906136a6565b965050860135925050808211156136de57600080fd5b506136eb858286016135c8565b9150509250929050565b803561ffff8116811461370757600080fd5b919050565b60008060006060848603121561372157600080fd5b61372a846136f5565b9250613738602085016136f5565b9150613746604085016136f5565b90509250925092565b60006020828403121561376157600080fd5b5035919050565b6000806040838503121561377b57600080fd5b823561342781613490565b6000806000806080858703121561379c57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156138095781600019048211156137ef576137ef6137b8565b808516156137fc57918102915b93841c93908002906137d3565b509250929050565b60008261382057506001610ab9565b8161382d57506000610ab9565b8160018114613843576002811461384d57613869565b6001915050610ab9565b60ff84111561385e5761385e6137b8565b50506001821b610ab9565b5060208310610133831016604e8410600b841016171561388c575081810a610ab9565b61389683836137ce565b80600019048211156138aa576138aa6137b8565b029392505050565b6000612f6060ff841683613811565b8082028115828204841417610ab957610ab96137b8565b81810381811115610ab957610ab96137b8565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613918576139186137b8565b6001019392505050565b80820180821115610ab957610ab96137b8565b60008261395257634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561396a57600080fd5b825161397581613490565b602084015190925061343781613490565b6000806040838503121561399957600080fd5b505080516020909101519092909150565b6000602082840312156139bc57600080fd5b5051919050565b6000602082840312156139d557600080fd5b8151612f60816133fb565b6000602082840312156139f257600080fd5b8151612f6081613490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613a4d5784516001600160a01b031683529383019391830191600101613a28565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220028744b0835c2be1d2f2df14ef677371bb5a0f91783bd7e2589c4a618c8fdc2064736f6c63430008130033

Deployed Bytecode Sourcemap

4090:19396:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5553:73;;;;;;;;;;;;5584:42;5553:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5553:73:0;;;;;;;;5802:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5802:28:0;245:177:1;13345:153:0;;;;;;;;;;-1:-1:-1;13345:153:0;;;;;:::i;:::-;;:::i;:::-;;5142:105;;;;;;;;;;-1:-1:-1;5142:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5142:105:0;931:365:1;9080:80:0;;;;;;;;;;-1:-1:-1;9152:5:0;;;;;;;;;;;;;;;;;9080:80;;;;;;;:::i;5492:26::-;;;;;;;;;;-1:-1:-1;5492:26:0;;;;;;;-1:-1:-1;;;;;5492:26:0;;;5459;;;;;;;;;;-1:-1:-1;5459:26:0;;;;;;;;;;;2267:14:1;;2260:22;2242:41;;2230:2;2215:18;5459:26:0;2102:187:1;9688:161:0;;;;;;;;;;-1:-1:-1;9688:161:0;;;;;:::i;:::-;;:::i;12774:140::-;;;;;;;;;;-1:-1:-1;12774:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;12872:34:0;12848:4;12872:34;;;:25;:34;;;;;;;;;12774:140;15557:809;;;;;;;;;;-1:-1:-1;15557:809:0;;;;;:::i;:::-;;:::i;8815:83::-;;;;;;;;;;;;;:::i;10358:306::-;;;;;;;;;;-1:-1:-1;10358:306:0;;;;;:::i;:::-;;:::i;21198:447::-;;;;;;;;;;-1:-1:-1;21198:447:0;;;;;:::i;:::-;;:::i;5910:33::-;;;;;;;;;;;;;;;;13078:141;;;;;;;;;;;;;:::i;5256:42::-;;;;;;;;;;;;5294:4;5256:42;;5837:25;;;;;;;;;;;;;;;;8904:80;;;;;;;;;;-1:-1:-1;8904:80:0;;4842:2;6508:36:1;;6496:2;6481:18;8904:80:0;6366:184:1;13696:453:0;;;;;;;;;;-1:-1:-1;13696:453:0;;;;;:::i;:::-;;:::i;13227:110::-;;;;;;;;;;-1:-1:-1;13227:110:0;;;;;:::i;:::-;;:::i;5525:21::-;;;;;;;;;;-1:-1:-1;5525:21:0;;;;-1:-1:-1;;;;;5525:21:0;;;5950:34;;;;;;;;;;-1:-1:-1;5950:34:0;;;;;;;;14157:189;;;;;;;;;;-1:-1:-1;14157:189:0;;;;;:::i;:::-;;:::i;15061:217::-;;;;;;;;;;-1:-1:-1;15061:217:0;;;;;:::i;:::-;;:::i;7447:654::-;;;;;;;;;;-1:-1:-1;7447:654:0;;;;;:::i;:::-;;:::i;12497:127::-;;;;;;;;;;-1:-1:-1;12497:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;12588:28:0;12564:4;12588:28;;;:19;:28;;;;;;;;;12497:127;5991:36;;;;;;;;;;-1:-1:-1;5991:36:0;;;;;;;;;;;12632:134;;;;;;;;;;-1:-1:-1;12632:134:0;;;;;:::i;:::-;;:::i;6064:26::-;;;;;;;;;;;;;;;;11932:557;;;;;;;;;;-1:-1:-1;11932:557:0;;;;;:::i;:::-;;:::i;9390:117::-;;;;;;;;;;-1:-1:-1;9390:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;9483:16:0;9456:7;9483:16;;;;;;;;;;;;9390:117;8109:310;;;;;;;;;;;;;:::i;5633:92::-;;;;;;;;;;-1:-1:-1;5633:92:0;;;;-1:-1:-1;;;;;5633:92:0;;;13506:182;;;;;;;;;;;;;:::i;11360:564::-;;;;;;;;;;-1:-1:-1;11360:564:0;;;;;:::i;:::-;;:::i;9166:79::-;;;;;;;;;;-1:-1:-1;9236:6:0;;-1:-1:-1;;;;;9236:6:0;9166:79;;10175:175;;;;;;;;;;;;;:::i;19959:737::-;;;;;;;;;;;;;:::i;8990:84::-;;;;;;;;;;-1:-1:-1;9064:7:0;;;;;;;;;;;;-1:-1:-1;;;9064:7:0;;;;8990:84;;9515:165;;;;;;;;;;-1:-1:-1;9515:165:0;;;;;:::i;:::-;;:::i;20894:296::-;;;;;;;;;;-1:-1:-1;20894:296:0;;;;;:::i;:::-;;:::i;5869:34::-;;;;;;;;;;-1:-1:-1;5869:34:0;;;;;;;;15286:263;;;;;;;;;;-1:-1:-1;15286:263:0;;;;;:::i;:::-;;:::i;9251:133::-;;;;;;;;;;-1:-1:-1;9251:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9353:19:0;;;9335:7;9353:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9251:133;10672:680;;;;;;;;;;-1:-1:-1;10672:680:0;;;;;:::i;:::-;;:::i;20704:182::-;;;;;;;;;;;;;:::i;14354:699::-;;;;;;;;;;-1:-1:-1;14354:699:0;;;;;:::i;:::-;;:::i;5756:39::-;;;;;;;;;;-1:-1:-1;5756:39:0;;;;-1:-1:-1;;;5756:39:0;;;;;;12922:148;;;;;;;;;;-1:-1:-1;12922:148:0;;;;;:::i;:::-;;:::i;13345:153::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;;;;;;;;;13440:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;13440:50:0;;8794:14:1;;8787:22;13440:50:0::1;::::0;::::1;8769:41:1::0;8853:14;;8846:22;8826:18;;;8819:50;13440:11:0;;;::::1;-1:-1:-1::0;;;;;13440:11:0::1;::::0;:26:::1;::::0;8742:18:1;;13440:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13345:153:::0;;:::o;9688:161::-;9765:4;9782:37;9791:10;9803:7;9812:6;9782:8;:37::i;:::-;-1:-1:-1;9837:4:0;9688:161;;;;;:::o;15557:809::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;15661:23:::1;::::0;::::1;;15653:32;;;::::0;::::1;;-1:-1:-1::0;;;;;15704:23:0;::::1;15722:4;15704:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;15749:24:0;::::1;15768:4;15749:24;;15704:69;:107;;;;-1:-1:-1::0;15795:6:0::1;::::0;-1:-1:-1;;;;;15795:16:0;;::::1;:6:::0;::::1;:16;;15704:107;:146;;;;-1:-1:-1::0;15833:6:0::1;::::0;-1:-1:-1;;;;;15833:17:0;;::::1;:6:::0;::::1;:17;;15704:146;15696:170;;;::::0;-1:-1:-1;;;15696:170:0;;9082:2:1;15696:170:0::1;::::0;::::1;9064:21:1::0;9121:2;9101:18;;;9094:30;-1:-1:-1;;;9140:18:1;;;9133:41;9191:18;;15696:170:0::1;8880:335:1::0;15696:170:0::1;15891:7;-1:-1:-1::0;;;;;15881:17:0::1;:6;-1:-1:-1::0;;;;;15881:17:0::1;::::0;15877:482:::1;;-1:-1:-1::0;;;;;15915:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;15944:4:::1;-1:-1:-1::0;;15915:33:0;;::::1;::::0;::::1;::::0;;;15963:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;16010:34:::1;::::0;15915:26;;16010:19:::1;:34::i;:::-;15557:809:::0;;:::o;15877:482::-:1;-1:-1:-1::0;;;;;16077:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;16105:4:::1;-1:-1:-1::0;;16077:32:0;;::::1;::::0;::::1;::::0;;;16124:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;16172:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;16218:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;16265:33:::1;::::0;16077:25;;16265:19:::1;:33::i;:::-;16313:34;16333:7;16342:4;16313:19;:34::i;8815:83::-:0;8870:7;4903:13;4842:2;4903;:13;:::i;:::-;4886:30;;4678:14;4886:30;:::i;:::-;8881:14;;8815:83;:::o;10358:306::-;-1:-1:-1;;;;;10479:19:0;;10458:4;10479:19;;;:11;:19;;;;;;;;10499:10;10479:31;;;;;;;;-1:-1:-1;;10479:52:0;10475:126;;-1:-1:-1;;;;;10548:19:0;;;;;;:11;:19;;;;;;;;10568:10;10548:31;;;;;;;:41;;10583:6;;10548:19;:41;;10583:6;;10548:41;:::i;:::-;;;;-1:-1:-1;;10475:126:0;10620:36;10630:6;10638:9;10649:6;10620:9;:36::i;:::-;10613:43;10358:306;-1:-1:-1;;;;10358:306:0:o;21198:447::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;21333:7:::1;:14;21314:8;:15;:33;21306:67;;;::::0;-1:-1:-1;;;21306:67:0;;11243:2:1;21306:67:0::1;::::0;::::1;11225:21:1::0;11282:2;11262:18;;;11255:30;11321:23;11301:18;;;11294:51;11362:18;;21306:67:0::1;11041:345:1::0;21306:67:0::1;21389:8;21384:254;21407:8;:15;21403:1;:19;;;21384:254;;;21488:13;4842:2;21488;:13;:::i;:::-;21477:7;21485:1;21477:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21462:10;9456:7:::0;9483:16;;;;;;;;;;;21452:49:::1;;21444:80;;;::::0;-1:-1:-1;;;21444:80:0;;11725:2:1;21444:80:0::1;::::0;::::1;11707:21:1::0;11764:2;11744:18;;;11737:30;11803:20;11783:18;;;11776:48;11841:18;;21444:80:0::1;11523:342:1::0;21444:80:0::1;21539:87;21556:10;21568:8;21577:1;21568:11;;;;;;;;;;:::i;:::-;;;;;;;4842:2;21592;:13;;;;:::i;:::-;21581:7;21589:1;21581:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21607:5;21614::::0;21621:4:::1;21539:16;:87::i;:::-;-1:-1:-1::0;21424:3:0;::::1;::::0;::::1;:::i;:::-;;;;21384:254;;;;21198:447:::0;;:::o;13078:141::-;13131:7;9483:16;;;;;;5584:42;9483:16;;;;13170:39;;9483:16;13170:39;:::i;:::-;4903:13;4842:2;4903;:13;:::i;:::-;4886:30;;4678:14;4886:30;:::i;:::-;13159:51;;;;:::i;13696:453::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;13804:14:::1;::::0;::::1;;13803:15;13795:45;;;::::0;-1:-1:-1;;;13795:45:0;;12404:2:1;13795:45:0::1;::::0;::::1;12386:21:1::0;12443:2;12423:18;;;12416:30;12482:19;12462:18;;;12455:47;12519:18;;13795:45:0::1;12202:341:1::0;13795:45:0::1;5294:4;13859:6;:21;;;;:65;;;;;5344:4;13901:7;:23;;;;13859:65;:117;;;;;5398:4;13945:11;:31;;;;13859:117;13851:170;;;::::0;-1:-1:-1;;;13851:170:0;;12750:2:1;13851:170:0::1;::::0;::::1;12732:21:1::0;12789:2;12769:18;;;12762:30;12828:25;12808:18;;;12801:53;12871:18;;13851:170:0::1;12548:347:1::0;13851:170:0::1;14032:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;14068:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;14106:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;13696:453::o;13227:110::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;13296:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;13296:33:0;;-1:-1:-1;;;;;178:55:1;;;13296:33:0::1;::::0;::::1;160:74:1::0;13296:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;13296:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13227:110:::0;:::o;14157:189::-;14286:6;;-1:-1:-1;;;;;14286:6:0;14248:7;9483:16;;;;;;;;;;;5445:5;;14276:41;;14296:21;;14276:41;:::i;:::-;14275:62;;;;:::i;15061:217::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;15191:3:::1;15165:22;:29;;15157:64;;;::::0;-1:-1:-1;;;15157:64:0;;13324:2:1;15157:64:0::1;::::0;::::1;13306:21:1::0;13363:2;13343:18;;;13336:30;13402:24;13382:18;;;13375:52;13444:18;;15157:64:0::1;13122:346:1::0;15157:64:0::1;15232:13;:38:::0;15061:217::o;7447:654::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;-1:-1:-1;;;;;7526:22:0;::::1;7518:96;;;::::0;-1:-1:-1;;;7518:96:0;;13675:2:1;7518:96:0::1;::::0;::::1;13657:21:1::0;13714:2;13694:18;;;13687:30;13753:34;13733:18;;;13726:62;13824:31;13804:18;;;13797:59;13873:19;;7518:96:0::1;13473:425:1::0;7518:96:0::1;-1:-1:-1::0;;;;;;;7633:16:0;::::1;::::0;7625:90:::1;;;::::0;-1:-1:-1;;;7625:90:0;;13675:2:1;7625:90:0::1;::::0;::::1;13657:21:1::0;13714:2;13694:18;;;13687:30;13753:34;13733:18;;;13726:62;13824:31;13804:18;;;13797:59;13873:19;;7625:90:0::1;13473:425:1::0;7625:90:0::1;7746:6;::::0;7726:34:::1;::::0;-1:-1:-1;;;;;7746:6:0::1;;7726:19;:34::i;:::-;7771:35;7791:8;7801:4;7771:19;:35::i;:::-;7841:6;::::0;-1:-1:-1;;;;;7841:6:0::1;7851:1;9483:16:::0;;;;;;;;;;;7831:21;7827:127:::1;;7886:6;::::0;-1:-1:-1;;;;;7886:6:0::1;9456:7:::0;9483:16;;;;;;;;;;;7869:73:::1;::::0;7886:6;7894:8;;7904:17:::1;9390:117:::0;7869:73:::1;;7827:127;7993:6;::::0;;-1:-1:-1;;;;;8010:17:0;;::::1;-1:-1:-1::0;;;;;;8010:17:0;::::1;::::0;::::1;::::0;;;8043:40:::1;::::0;7993:6;::::1;::::0;8010:17;7993:6;;8043:40:::1;::::0;7974:16:::1;::::0;8043:40:::1;7507:594;7447:654:::0;:::o;12632:134::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;-1:-1:-1;;;;;12720:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;12720:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12632:134::o;11932:557::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;12007:14:::1;::::0;::::1;;12006:15;11998:24;;;::::0;::::1;;12057:4;-1:-1:-1::0;;;;;12041:21:0;::::1;::::0;12033:48:::1;;;::::0;-1:-1:-1;;;12033:48:0;;14105:2:1;12033:48:0::1;::::0;::::1;14087:21:1::0;14144:2;14124:18;;;14117:30;14183:16;14163:18;;;14156:44;14217:18;;12033:48:0::1;13903:338:1::0;12033:48:0::1;12092:11;:31:::0;;-1:-1:-1;;;;;;12092:31:0::1;::::0;-1:-1:-1;;;;;12092:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12138:23:::1;::::0;;-1:-1:-1;;;12138:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12138:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12138:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12138:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12134:348;;12471:8;::::0;::::1;12134:348;12225:9;:29:::0;;-1:-1:-1;;12225:29:0::1;;-1:-1:-1::0;;;;;12225:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12256:6:::1;:22:::0;;-1:-1:-1;;;;;;12256:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12280:15:0;;;-1:-1:-1;12280:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12280:22:0::1;::::0;;::::1;::::0;;12327:6:::1;::::0;12343:9;;12318:55:::1;::::0;12327:6;::::1;::::0;12343:9;;::::1;;-1:-1:-1::0;;12318:8:0::1;:55::i;:::-;12420:9;::::0;12388:62:::1;::::0;12405:4:::1;::::0;12420:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12420:9:0::1;-1:-1:-1::0;;12388:8:0::1;:62::i;12134:348::-;11932:557:::0;:::o;8109:310::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;8176:14:::1;::::0;::::1;;8168:74;;;::::0;-1:-1:-1;;;8168:74:0;;14838:2:1;8168:74:0::1;::::0;::::1;14820:21:1::0;14877:2;14857:18;;;14850:30;14916:34;14896:18;;;14889:62;14987:17;14967:18;;;14960:45;15022:19;;8168:74:0::1;14636:411:1::0;8168:74:0::1;8273:6;::::0;8253:34:::1;::::0;-1:-1:-1;;;;;8273:6:0::1;;8253:19;:34::i;:::-;8317:6;::::0;;-1:-1:-1;;;;;;8334:19:0;::::1;::::0;;;8369:42:::1;::::0;-1:-1:-1;;;;;8317:6:0;;::::1;::::0;8298:16:::1;::::0;8317:6;;8369:42:::1;::::0;8298:16;;8369:42:::1;8157:262;8109:310::o:0;13506:182::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;13659:14:::1;:21:::0;;-1:-1:-1;;13659:21:0::1;13676:4;13659:21;::::0;;13506:182::o;11360:564::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;11442:7:::1;11437:480;;-1:-1:-1::0;;;;;11466:13:0;;::::1;11482:5;11466:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;11466:21:0::1;::::0;;11502:11:::1;::::0;:34;;-1:-1:-1;;;11502:34:0;;::::1;::::0;::::1;15220:74:1::0;;;;15310:18;;;15303:50;;;;11502:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15193:18:1;;11502:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;11437:480;11573:17;::::0;:22;11569:135:::1;;11662:6;11642:17;;11624:15;:35;;;;:::i;:::-;:44;11616:72;;;::::0;-1:-1:-1;;;11616:72:0;;15566:2:1;11616:72:0::1;::::0;::::1;15548:21:1::0;15605:2;15585:18;;;15578:30;15644:17;15624:18;;;15617:45;15679:18;;11616:72:0::1;15364:339:1::0;11616:72:0::1;-1:-1:-1::0;;;;;11727:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;11726:14;11718:54;;;::::0;-1:-1:-1;;;11718:54:0;;15910:2:1;11718:54:0::1;::::0;::::1;15892:21:1::0;15949:2;15929:18;;;15922:30;15988:29;15968:18;;;15961:57;16035:18;;11718:54:0::1;15708:351:1::0;11718:54:0::1;-1:-1:-1::0;;;;;11787:13:0;;::::1;;::::0;;;11803:4:::1;11787:13;::::0;;;;;;;;:20;;-1:-1:-1;;11787:20:0::1;::::0;::::1;::::0;;11842:15:::1;11822:17;:35:::0;11872:11:::1;::::0;:33;;-1:-1:-1;;;11872:33:0;;::::1;::::0;::::1;15220:74:1::0;;;;15310:18;;;15303:50;11872:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15193:18:1;;11872:33:0::1;15052:307:1::0;10175:175:0;7301:6;;10241:4;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;10290:9:::1;::::0;10258:62:::1;::::0;10275:4:::1;::::0;10290:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10290:9:0::1;-1:-1:-1::0;;10258:8:0::1;:62::i;:::-;-1:-1:-1::0;10338:4:0::1;10175:175:::0;:::o;19959:737::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;20021:14:::1;::::0;::::1;;20020:15;20012:52;;;::::0;-1:-1:-1;;;20012:52:0;;16266:2:1;20012:52:0::1;::::0;::::1;16248:21:1::0;16305:2;16285:18;;;16278:30;16344:26;16324:18;;;16317:54;16388:18;;20012:52:0::1;16064:348:1::0;20012:52:0::1;20083:16;::::0;::::1;::::0;::::1;;;20075:53;;;::::0;-1:-1:-1;;;20075:53:0;;16619:2:1;20075:53:0::1;::::0;::::1;16601:21:1::0;16658:2;16638:18;;;16631:30;16697:26;16677:18;;;16670:54;16741:18;;20075:53:0::1;16417:348:1::0;20075:53:0::1;20151:11;::::0;;;::::1;-1:-1:-1::0;;;;;20151:11:0::1;20139:106;;20193:11;:40:::0;;-1:-1:-1;;;;;;20193:40:0::1;20227:4;20193:40:::0;::::1;;::::0;;20139:106:::1;20259:11;::::0;20281:6:::1;::::0;20259:87:::1;::::0;-1:-1:-1;;;20259:87:0;;-1:-1:-1;;;;;20281:6:0;;::::1;20259:87;::::0;::::1;16993:74:1::0;17115:10;20296:12:0::1;17103:23:1::0;17083:18;;;17076:51;17175:18;20318:15:0::1;17163:31:1::0;17143:18;;;17136:59;4842:2:0::1;17211:18:1::0;;;17204:45;20259:11:0;;;::::1;;::::0;:21:::1;::::0;16965:19:1;;20259:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;20372:11:0::1;::::0;20403:6:::1;::::0;-1:-1:-1;;;;;20403:6:0;;::::1;9456:7:::0;9483:16;;;;;;;;;;;;;20372:39;;-1:-1:-1;;;20372:39:0;;::::1;::::0;::::1;391:25:1::0;;;;20372:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;20372:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;20372:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;20372:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;20368:207:::0;::::1;;20483:13;:29:::0;;;;20527:10:::1;:27:::0;20368:207:::1;20585:14;:21:::0;;-1:-1:-1;;20585:21:0;;::::1;20602:4;20585:21;::::0;;;20617:23:::1;:31:::0;;;;::::1;::::0;;20673:15:::1;20659:11;:29:::0;19959:737::o;9515:165::-;9593:4;9610:40;9620:10;9632:9;9643:6;9610:9;:40::i;:::-;-1:-1:-1;9668:4:0;;9515:165;-1:-1:-1;;;9515:165:0:o;20894:296::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;20972:16:::1;::::0;::::1;::::0;::::1;;;20968:111;;;21030:4;-1:-1:-1::0;;;;;21013:22:0;::::1;::::0;21005:62:::1;;;::::0;-1:-1:-1;;;21005:62:0;;17712:2:1;21005:62:0::1;::::0;::::1;17694:21:1::0;17751:2;17731:18;;;17724:30;17790:29;17770:18;;;17763:57;17837:18;;21005:62:0::1;17510:351:1::0;21005:62:0::1;21143:6;::::0;21151:30:::1;::::0;-1:-1:-1;;;21151:30:0;;21175:4:::1;21151:30;::::0;::::1;160:74:1::0;21111:5:0;;-1:-1:-1;;;;;21128:14:0;;::::1;::::0;::::1;::::0;21143:6;;;::::1;::::0;21128:14;;21151:15:::1;::::0;133:18:1;;21151:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21128:54;::::0;-1:-1:-1;;;;;;21128:54:0::1;::::0;;;;;;-1:-1:-1;;;;;18247:55:1;;;21128:54:0::1;::::0;::::1;18229:74:1::0;18319:18;;;18312:34;18202:18;;21128:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15286:263::-:0;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;15395:19:::1;:33:::0;;-1:-1:-1;;;;15395:33:0::1;-1:-1:-1::0;;;15395:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;15439:22:::1;:47:::0;;-1:-1:-1;;15439:47:0::1;::::0;::::1;;;::::0;;15502:39:::1;::::0;2242:41:1;;;15502:39:0::1;::::0;2230:2:1;2215:18;15502:39:0::1;;;;;;;;15286:263:::0;;:::o;10672:680::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;10752:16:::1;::::0;::::1;::::0;::::1;;;10751:17;10743:60;;;::::0;-1:-1:-1;;;10743:60:0;;18809:2:1;10743:60:0::1;::::0;::::1;18791:21:1::0;18848:2;18828:18;;;18821:30;18887:32;18867:18;;;18860:60;18937:18;;10743:60:0::1;18607:354:1::0;10743:60:0::1;10814:20;10847:9;10814:43;;10868:16;10898:10;-1:-1:-1::0;;;;;10898:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10887:40:0::1;;10936:4;10943:10;-1:-1:-1::0;;;;;10943:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10887:74;::::0;-1:-1:-1;;;;;;10887:74:0::1;::::0;;;;;;-1:-1:-1;;;;;19475:15:1;;;10887:74:0::1;::::0;::::1;19457:34:1::0;19527:15;;19507:18;;;19500:43;19369:18;;10887:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10980:6;::::0;-1:-1:-1;;;;;10980:6:0;;::::1;10990:5;10972:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;10972:23:0::1;::::0;;10868:93;;-1:-1:-1;11010:22:0;::::1;11006:200;;11069:10;-1:-1:-1::0;;;;;11069:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11058:43:0::1;;11110:4;11117:10;-1:-1:-1::0;;;;;11117:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11058:77;::::0;-1:-1:-1;;;;;;11058:77:0::1;::::0;;;;;;-1:-1:-1;;;;;19475:15:1;;;11058:77:0::1;::::0;::::1;19457:34:1::0;19527:15;;19507:18;;;19500:43;19369:18;;11058:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11049:6;:86:::0;;-1:-1:-1;;;;;;11049:86:0::1;-1:-1:-1::0;;;;;11049:86:0;;;::::1;::::0;;;::::1;::::0;;11006:200:::1;;;11177:6;:17:::0;;-1:-1:-1;;;;;;11177:17:0::1;-1:-1:-1::0;;;;;11177:17:0;::::1;;::::0;;11006:200:::1;11216:9;:22:::0;;-1:-1:-1;;11216:22:0::1;;-1:-1:-1::0;;;;;11216:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11257:6:::1;::::0;;::::1;-1:-1:-1::0;11249:15:0;;;-1:-1:-1;11249:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;11249:22:0::1;::::0;;::::1;::::0;;11314:9;;11282:62:::1;::::0;11299:4:::1;::::0;11314:9;::::1;;-1:-1:-1::0;;11282:8:0::1;:62::i;20704:182::-:0;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;20771:16:::1;::::0;::::1;::::0;::::1;;;20770:17;20762:58;;;::::0;-1:-1:-1;;;20762:58:0;;19756:2:1;20762:58:0::1;::::0;::::1;19738:21:1::0;19795:2;19775:18;;;19768:30;19834;19814:18;;;19807:58;19882:18;;20762:58:0::1;19554:352:1::0;20762:58:0::1;20839:6;::::0;20831:47:::1;::::0;-1:-1:-1;;;;;20839:6:0;;::::1;::::0;20856:21:::1;20831:47:::0;::::1;;;::::0;20839:6:::1;20831:47:::0;20839:6;20831:47;20856:21;20839:6;20831:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;14354:699:::0;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;14554:16;14534;4903:13:::1;4842:2;4903;:13;:::i;:::-;4886:30;::::0;4678:14:::1;4886:30;:::i;:::-;14524:26;;;;:::i;:::-;14523:47;;;;:::i;:::-;14507:13;:63:::0;14622:13;14605;4903::::1;4842:2;4903;:13;:::i;:::-;4886:30;::::0;4678:14:::1;4886:30;:::i;:::-;14595:23;;;;:::i;:::-;14594:41;;;;:::i;:::-;14581:10;:54:::0;;;14654:13:::1;::::0;:27:::1;;14646:73;;;::::0;-1:-1:-1;;;14646:73:0;;20113:2:1;14646:73:0::1;::::0;::::1;20095:21:1::0;20152:2;20132:18;;;20125:30;20191:34;20171:18;;;20164:62;-1:-1:-1;;;20242:18:1;;;20235:31;20283:19;;14646:73:0::1;19911:397:1::0;14646:73:0::1;14763:6;::::0;-1:-1:-1;;;;;14763:6:0::1;9456:7:::0;9483:16;;;;;;;;;;;5445:5:::1;::::0;14753:23:::1;::::0;14773:3:::1;14753:23;:::i;:::-;14752:44;;;;:::i;:::-;14738:10;;:58;;14730:106;;;::::0;-1:-1:-1;;;14730:106:0;;20515:2:1;14730:106:0::1;::::0;::::1;20497:21:1::0;20554:2;20534:18;;;20527:30;20593:34;20573:18;;;20566:62;-1:-1:-1;;;20644:18:1;;;20637:33;20687:19;;14730:106:0::1;20313:399:1::0;14730:106:0::1;14879:9;4903:13;4842:2;4903;:13;:::i;:::-;4886:30;::::0;4678:14:::1;4886:30;:::i;:::-;14869:19;;;;:::i;:::-;14855:10;;:33;;14847:92;;;::::0;-1:-1:-1;;;14847:92:0;;20919:2:1;14847:92:0::1;::::0;::::1;20901:21:1::0;20958:2;20938:18;;;20931:30;20997:34;20977:18;;;20970:62;-1:-1:-1;;;21048:18:1;;;21041:44;21102:19;;14847:92:0::1;20717:410:1::0;14847:92:0::1;14985:9;4903:13;4842:2;4903;:13;:::i;:::-;4886:30;::::0;4678:14:::1;4886:30;:::i;:::-;14975:19;;;;:::i;:::-;14958:13;;:36;;14950:95;;;::::0;-1:-1:-1;;;14950:95:0;;20919:2:1;14950:95:0::1;::::0;::::1;20901:21:1::0;20958:2;20938:18;;;20931:30;20997:34;20977:18;;;20970:62;-1:-1:-1;;;21048:18:1;;;21041:44;21102:19;;14950:95:0::1;20717:410:1::0;14950:95:0::1;14354:699:::0;;;;:::o;12922:148::-;7301:6;;-1:-1:-1;;;;;7301:6:0;7311:10;7301:20;7293:50;;;;-1:-1:-1;;;7293:50:0;;8463:2:1;7293:50:0;;;8445:21:1;8502:2;8482:18;;;8475:30;-1:-1:-1;;;;;;;;;;;8521:18:1;;;8514:47;8578:18;;7293:50:0;8261:341:1;7293:50:0;-1:-1:-1;;;;;13018:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13018:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12922:148::o;9857:310::-;-1:-1:-1;;;;;9952:20:0;;9944:52;;;;-1:-1:-1;;;9944:52:0;;21334:2:1;9944:52:0;;;21316:21:1;21373:2;21353:18;;;21346:30;-1:-1:-1;;;21392:18:1;;;21385:49;21451:18;;9944:52:0;21132:343:1;9944:52:0;-1:-1:-1;;;;;10015:21:0;;10007:53;;;;-1:-1:-1;;;10007:53:0;;21334:2:1;10007:53:0;;;21316:21:1;21373:2;21353:18;;;21346:30;-1:-1:-1;;;21392:18:1;;;21385:49;21451:18;;10007:53:0;21132:343:1;10007:53:0;-1:-1:-1;;;;;10073:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10126:33;;391:25:1;;;10126:33:0;;364:18:1;10126:33:0;;;;;;;9857:310;;;:::o;16828:1783::-;16907:4;-1:-1:-1;;;;;16932:18:0;;16924:68;;;;-1:-1:-1;;;16924:68:0;;21682:2:1;16924:68:0;;;21664:21:1;21721:2;21701:18;;;21694:30;21760:34;21740:18;;;21733:62;-1:-1:-1;;;21811:18:1;;;21804:35;21856:19;;16924:68:0;21480:401:1;16924:68:0;-1:-1:-1;;;;;17011:16:0;;17003:64;;;;-1:-1:-1;;;17003:64:0;;22088:2:1;17003:64:0;;;22070:21:1;22127:2;22107:18;;;22100:30;22166:34;22146:18;;;22139:62;-1:-1:-1;;;22217:18:1;;;22210:33;22260:19;;17003:64:0;21886:399:1;17003:64:0;17095:1;17086:6;:10;17078:64;;;;-1:-1:-1;;;17078:64:0;;22492:2:1;17078:64:0;;;22474:21:1;22531:2;22511:18;;;22504:30;22570:34;22550:18;;;22543:62;-1:-1:-1;;;22621:18:1;;;22614:39;22670:19;;17078:64:0;22290:405:1;17078:64:0;-1:-1:-1;;;;;17241:13:0;;17153:8;17241:13;;;:7;:13;;;;;;17153:8;;;;17241:13;;17237:162;;;17277:4;17271:10;;17237:162;;;-1:-1:-1;;;;;17303:11:0;;;;;;:7;:11;;;;;;;;17299:100;;;17338:4;17331:11;;17299:100;;;-1:-1:-1;17383:4:0;17299:100;17413:20;17424:4;17430:2;17413:10;:20::i;:::-;17409:371;;;17454:14;;;;17450:319;;17494:5;17489:265;;17524:34;;-1:-1:-1;;;17524:34:0;;22902:2:1;17524:34:0;;;22884:21:1;22941:2;22921:18;;;22914:30;22980:26;22960:18;;;22953:54;23024:18;;17524:34:0;22700:348:1;17489:265:0;-1:-1:-1;;;;;17589:31:0;;;;;;:25;:31;;;;;;;;17588:32;:66;;;;-1:-1:-1;;;;;;17625:29:0;;;;;;:25;:29;;;;;;;;17624:30;17588:66;17584:170;;;17679:55;;-1:-1:-1;;;17679:55:0;;23255:2:1;17679:55:0;;;23237:21:1;23294:2;23274:18;;;23267:30;23333:34;23313:18;;;23306:62;-1:-1:-1;;;23384:18:1;;;23377:43;23437:19;;17679:55:0;23053:409:1;17584:170:0;17796:4;17792:742;;;17822:6;;-1:-1:-1;;;17822:6:0;;;;17817:706;;17853:19;;-1:-1:-1;;;17853:19:0;;;;:64;;;;-1:-1:-1;;;;;;17897:20:0;;;;;;:16;:20;;;;;;;;17896:21;17853:64;:111;;;;-1:-1:-1;;;;;;17942:22:0;;;;;;:16;:22;;;;;;;;17941:23;17853:111;17849:659;;;18056:4;18007:28;9483:16;;;;;;;;;;;18113:13;;18089:37;;18085:404;;18173:10;;18214:22;;;;18210:97;;;18271:13;;18261:6;;-1:-1:-1;;;;;18261:6:0;9456:7;9483:16;;;;;;;;;;;5445:5;;18251:33;;;:::i;:::-;18250:54;;;;:::i;:::-;18240:64;;18210:97;18361:7;18337:20;:31;18333:72;;18395:7;18372:30;;18333:72;18431:34;18444:20;18431:12;:34::i;:::-;18128:361;18085:404;17984:524;17849:659;18551:52;18568:4;18574:2;18578:6;18586:3;18591:4;18597:5;18551:16;:52::i;:::-;18544:59;16828:1783;-1:-1:-1;;;;;;;16828:1783:0:o;21653:1055::-;21772:4;21793:20;21804:4;21810:2;21793:10;:20::i;:::-;21789:228;;;21848:11;;:39;;-1:-1:-1;;;21848:39:0;;-1:-1:-1;;;;;23748:15:1;;;21848:39:0;;;23730:34:1;23800:15;;;23780:18;;;23773:43;23832:18;;;23825:34;;;21817:12:0;;21848:11;;;;;:21;;23642:18:1;;21848:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;21848:39:0;;;;;;;;-1:-1:-1;;21848:39:0;;;;;;;;;;;;:::i;:::-;;;21844:122;;21955:8;;;21844:122;21938:5;-1:-1:-1;21984:7:0;21980:26;;21995:8;;;21980:26;21815:202;21789:228;-1:-1:-1;;;;;22061:25:0;;22027:12;22061:25;;;:19;:25;;;;;;22042:4;;22061:25;;;:52;;-1:-1:-1;;;;;;22090:23:0;;;;;;:19;:23;;;;;;;;22061:52;22057:99;;;-1:-1:-1;22139:5:0;22057:99;-1:-1:-1;;;;;22166:13:0;;:7;:13;;;;;;;;;;:23;;22183:6;;22166:7;:23;;22183:6;;22166:23;:::i;:::-;;;;-1:-1:-1;22200:22:0;;-1:-1:-1;22226:7:0;22225:55;;22274:6;22225:55;;;22237:34;22247:4;22253:6;22261:3;22266:4;22237:9;:34::i;:::-;22200:80;;22306:14;22291:7;:11;22299:2;-1:-1:-1;;;;;22291:11:0;-1:-1:-1;;;;;22291:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;22351:2;-1:-1:-1;;;;;22336:34:0;22345:4;-1:-1:-1;;;;;22336:34:0;;22355:14;22336:34;;;;391:25:1;;379:2;364:18;;245:177;22336:34:0;;;;;;;;22386:16;;;;;;;22381:298;;22419:28;22438:4;22444:2;22419:18;:28::i;:::-;22467:16;;;;;;;22466:17;:41;;;;;22487:20;22498:4;22504:2;22487:10;:20::i;:::-;22466:77;;;;-1:-1:-1;;;;;;22512:31:0;;;;;;:25;:31;;;;;;;;22511:32;22466:77;:111;;;;-1:-1:-1;;;;;;22548:29:0;;;;;;:25;:29;;;;;;;;22547:30;22466:111;:121;;;;;22582:5;22581:6;22466:121;22462:206;;;22608:44;;-1:-1:-1;;;22608:44:0;;24072:2:1;22608:44:0;;;24054:21:1;24111:2;24091:18;;;24084:30;24150:34;24130:18;;;24123:62;-1:-1:-1;;;24201:18:1;;;24194:32;24243:19;;22608:44:0;23870:398:1;22462:206:0;-1:-1:-1;22696:4:0;;21653:1055;-1:-1:-1;;;;;;;;21653:1055:0:o;16374:446::-;16475:6;;16443:4;;-1:-1:-1;;;;;16467:14:0;;;16475:6;;16467:14;;;;:43;;-1:-1:-1;16504:6:0;;-1:-1:-1;;;;;16498:12:0;;;16504:6;;16498:12;;16467:43;:79;;;;-1:-1:-1;16540:6:0;;-1:-1:-1;;;;;16540:6:0;16527:9;:19;;16467:79;:118;;;;-1:-1:-1;;;;;;16564:21:0;;;;;;:17;:21;;;;;;;;16563:22;16467:118;:159;;;;-1:-1:-1;;;;;;16603:23:0;;;;;;:17;:23;;;;;;;;16602:24;16467:159;:186;;;;-1:-1:-1;;;;;;16643:10:0;;5584:42;16643:10;;16467:186;:219;;;;-1:-1:-1;;;;;;16670:16:0;;;;16467:219;:257;;;;-1:-1:-1;;;;;;16703:21:0;;16719:4;16703:21;;16467:257;:302;;;;-1:-1:-1;16757:11:0;;-1:-1:-1;;;;;16741:28:0;;;16757:11;;;;;16741:28;;16467:302;:345;;;;-1:-1:-1;16800:11:0;;-1:-1:-1;;;;;16786:26:0;;;16800:11;;;;;16786:26;;16467:345;16460:352;16374:446;-1:-1:-1;;;16374:446:0:o;18619:761::-;6255:6;:13;;-1:-1:-1;;;;6255:13:0;-1:-1:-1;;;6255:13:0;;;18726:4:::1;6255:13:::0;18706:26;;;:11:::1;:26;::::0;;;;;;;18741:9:::1;::::0;6255:13;18741:9;::::1;-1:-1:-1::0;;;;;18741:9:0::1;18706:46:::0;;;;;;;;-1:-1:-1;;18706:67:0::1;18702:166;;18810:4;18790:26;::::0;;;:11:::1;:26;::::0;;;;;;;18825:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18825:9:0::1;18790:46:::0;;;;;;;-1:-1:-1;;18790:66:0;;18702:166:::1;18912:16;::::0;;18926:1:::1;18912:16:::0;;;;;::::1;::::0;;18888:21:::1;::::0;18912:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18912:16:0::1;18888:40;;18957:4;18939;18944:1;18939:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;18939:23:0::1;;;-1:-1:-1::0;;;;;18939:23:0::1;;;::::0;::::1;18983:9;;;;;;;;;-1:-1:-1::0;;;;;18983:9:0::1;-1:-1:-1::0;;;;;18983:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18973:4;18978:1;18973:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18973:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19016:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;19016:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;19091:20;;19126:1:::1;::::0;19142:4;;19169::::1;::::0;19189:15:::1;::::0;19016:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19012:246;;19240:7;;;19012:246;19306:15;::::0;:66:::1;::::0;19270:12:::1;::::0;-1:-1:-1;;;;;19306:15:0::1;::::0;19362:5:::1;::::0;19334:21:::1;::::0;19270:12;19306:66;19270:12;19306:66;19334:21;19306:15;19362:5;19306:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6279:1:0::1;-1:-1:-1::0;6291:6:0;:14;;-1:-1:-1;;;;6291:14:0;;;18619:761::o;22716:767::-;22804:7;22824:18;22857:3;22853:205;;;-1:-1:-1;22890:9:0;:16;;;22853:205;;;22928:4;22924:134;;;-1:-1:-1;22962:9:0;:17;;;;;;22924:134;;;-1:-1:-1;23025:9:0;:21;;;;;;22924:134;23072:10;23086:1;23072:15;23068:39;;23098:6;23091:13;;;;;23068:39;23129:11;;;;;-1:-1:-1;;;;;23129:11:0;23153:4;23121:37;:73;;;;;23175:13;23192:2;23175:19;;23121:73;23117:101;;;-1:-1:-1;23211:4:0;23117:101;23228:17;5445:5;23248:19;23257:10;23248:6;:19;:::i;:::-;:38;;;;:::i;:::-;23228:58;-1:-1:-1;23301:13:0;;23297:141;;23347:4;23331:7;:22;;;;;;;;;;:35;;23357:9;;23331:7;:35;;23357:9;;23331:35;:::i;:::-;;;;-1:-1:-1;;23386:40:0;;391:25:1;;;23409:4:0;;-1:-1:-1;;;;;23386:40:0;;;;;379:2:1;364:18;23386:40:0;;;;;;;23297:141;23457:18;23466:9;23457:6;:18;:::i;19388:563::-;19471:16;;;;;;;19470:17;19462:65;;;;-1:-1:-1;;;19462:65:0;;25716:2:1;19462:65:0;;;25698:21:1;25755:2;25735:18;;;25728:30;25794:34;25774:18;;;25767:62;-1:-1:-1;;;25845:18:1;;;25838:33;25888:19;;19462:65:0;25514:399:1;19462:65:0;19543:20;19554:4;19560:2;19543:10;:20::i;:::-;19542:21;:37;;;;-1:-1:-1;19573:6:0;;-1:-1:-1;;;;;19567:12:0;;;19573:6;;19567:12;19542:37;19538:406;;;-1:-1:-1;;;;;19596:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;19596:30:0;;;19622:4;19596:30;;;;;;19641:19;:25;;;;;:32;;;;;;;;;;19688:16;:23;;-1:-1:-1;;19688:23:0;19596:30;19688:23;;;;;19738:11;;;;19726:114;;19784:11;:40;;-1:-1:-1;;;;;;19784:40:0;19818:4;19784:40;;;;;19726:114;19854:19;:26;;-1:-1:-1;;;;19854:26:0;-1:-1:-1;;;19854:26:0;;;19900:32;;-1:-1:-1;2242:41:1;;19900:32:0;;2230:2:1;2215:18;19900:32:0;2102:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:548::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1585:3;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1840:2;1833;1829:7;1824:2;1816:6;1812:15;1808:29;1797:9;1793:45;1789:54;1781:62;;;;1301:548;;;;:::o;2294:154::-;-1:-1:-1;;;;;2373:5:1;2369:54;2362:5;2359:65;2349:93;;2438:1;2435;2428:12;2453:315;2521:6;2529;2582:2;2570:9;2561:7;2557:23;2553:32;2550:52;;;2598:1;2595;2588:12;2550:52;2637:9;2624:23;2656:31;2681:5;2656:31;:::i;:::-;2706:5;2758:2;2743:18;;;;2730:32;;-1:-1:-1;;;2453:315:1:o;2773:247::-;2832:6;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;3025:388::-;3093:6;3101;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3209:9;3196:23;3228:31;3253:5;3228:31;:::i;:::-;3278:5;-1:-1:-1;3335:2:1;3320:18;;3307:32;3348:33;3307:32;3348:33;:::i;3418:456::-;3495:6;3503;3511;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;-1:-1:-1;3745:2:1;3730:18;;3717:32;3758:33;3717:32;3758:33;:::i;:::-;3418:456;;3810:7;;-1:-1:-1;;;3864:2:1;3849:18;;;;3836:32;;3418:456::o;3879:127::-;3940:10;3935:3;3931:20;3928:1;3921:31;3971:4;3968:1;3961:15;3995:4;3992:1;3985:15;4011:275;4082:2;4076:9;4147:2;4128:13;;-1:-1:-1;;4124:27:1;4112:40;;4182:18;4167:34;;4203:22;;;4164:62;4161:88;;;4229:18;;:::i;:::-;4265:2;4258:22;4011:275;;-1:-1:-1;4011:275:1:o;4291:183::-;4351:4;4384:18;4376:6;4373:30;4370:56;;;4406:18;;:::i;:::-;-1:-1:-1;4451:1:1;4447:14;4463:4;4443:25;;4291:183::o;4479:662::-;4533:5;4586:3;4579:4;4571:6;4567:17;4563:27;4553:55;;4604:1;4601;4594:12;4553:55;4640:6;4627:20;4666:4;4690:60;4706:43;4746:2;4706:43;:::i;:::-;4690:60;:::i;:::-;4784:15;;;4870:1;4866:10;;;;4854:23;;4850:32;;;4815:12;;;;4894:15;;;4891:35;;;4922:1;4919;4912:12;4891:35;4958:2;4950:6;4946:15;4970:142;4986:6;4981:3;4978:15;4970:142;;;5052:17;;5040:30;;5090:12;;;;5003;;4970:142;;;-1:-1:-1;5130:5:1;4479:662;-1:-1:-1;;;;;;4479:662:1:o;5146:1215::-;5264:6;5272;5325:2;5313:9;5304:7;5300:23;5296:32;5293:52;;;5341:1;5338;5331:12;5293:52;5381:9;5368:23;5410:18;5451:2;5443:6;5440:14;5437:34;;;5467:1;5464;5457:12;5437:34;5505:6;5494:9;5490:22;5480:32;;5550:7;5543:4;5539:2;5535:13;5531:27;5521:55;;5572:1;5569;5562:12;5521:55;5608:2;5595:16;5630:4;5654:60;5670:43;5710:2;5670:43;:::i;5654:60::-;5748:15;;;5830:1;5826:10;;;;5818:19;;5814:28;;;5779:12;;;;5854:19;;;5851:39;;;5886:1;5883;5876:12;5851:39;5910:11;;;;5930:217;5946:6;5941:3;5938:15;5930:217;;;6026:3;6013:17;6043:31;6068:5;6043:31;:::i;:::-;6087:18;;5963:12;;;;6125;;;;5930:217;;;6166:5;-1:-1:-1;;6209:18:1;;6196:32;;-1:-1:-1;;6240:16:1;;;6237:36;;;6269:1;6266;6259:12;6237:36;;6292:63;6347:7;6336:8;6325:9;6321:24;6292:63;:::i;:::-;6282:73;;;5146:1215;;;;;:::o;6555:159::-;6622:20;;6682:6;6671:18;;6661:29;;6651:57;;6704:1;6701;6694:12;6651:57;6555:159;;;:::o;6719:328::-;6793:6;6801;6809;6862:2;6850:9;6841:7;6837:23;6833:32;6830:52;;;6878:1;6875;6868:12;6830:52;6901:28;6919:9;6901:28;:::i;:::-;6891:38;;6948:37;6981:2;6970:9;6966:18;6948:37;:::i;:::-;6938:47;;7004:37;7037:2;7026:9;7022:18;7004:37;:::i;:::-;6994:47;;6719:328;;;;;:::o;7052:180::-;7111:6;7164:2;7152:9;7143:7;7139:23;7135:32;7132:52;;;7180:1;7177;7170:12;7132:52;-1:-1:-1;7203:23:1;;7052:180;-1:-1:-1;7052:180:1:o;7237:382::-;7302:6;7310;7363:2;7351:9;7342:7;7338:23;7334:32;7331:52;;;7379:1;7376;7369:12;7331:52;7418:9;7405:23;7437:31;7462:5;7437:31;:::i;7871:385::-;7957:6;7965;7973;7981;8034:3;8022:9;8013:7;8009:23;8005:33;8002:53;;;8051:1;8048;8041:12;8002:53;-1:-1:-1;;8074:23:1;;;8144:2;8129:18;;8116:32;;-1:-1:-1;8195:2:1;8180:18;;8167:32;;8246:2;8231:18;8218:32;;-1:-1:-1;7871:385:1;-1:-1:-1;7871:385:1:o;9220:127::-;9281:10;9276:3;9272:20;9269:1;9262:31;9312:4;9309:1;9302:15;9336:4;9333:1;9326:15;9352:422;9441:1;9484:5;9441:1;9498:270;9519:7;9509:8;9506:21;9498:270;;;9578:4;9574:1;9570:6;9566:17;9560:4;9557:27;9554:53;;;9587:18;;:::i;:::-;9637:7;9627:8;9623:22;9620:55;;;9657:16;;;;9620:55;9736:22;;;;9696:15;;;;9498:270;;;9502:3;9352:422;;;;;:::o;9779:806::-;9828:5;9858:8;9848:80;;-1:-1:-1;9899:1:1;9913:5;;9848:80;9947:4;9937:76;;-1:-1:-1;9984:1:1;9998:5;;9937:76;10029:4;10047:1;10042:59;;;;10115:1;10110:130;;;;10022:218;;10042:59;10072:1;10063:10;;10086:5;;;10110:130;10147:3;10137:8;10134:17;10131:43;;;10154:18;;:::i;:::-;-1:-1:-1;;10210:1:1;10196:16;;10225:5;;10022:218;;10324:2;10314:8;10311:16;10305:3;10299:4;10296:13;10292:36;10286:2;10276:8;10273:16;10268:2;10262:4;10259:12;10255:35;10252:77;10249:159;;;-1:-1:-1;10361:19:1;;;10393:5;;10249:159;10440:34;10465:8;10459:4;10440:34;:::i;:::-;10510:6;10506:1;10502:6;10498:19;10489:7;10486:32;10483:58;;;10521:18;;:::i;:::-;10559:20;;9779:806;-1:-1:-1;;;9779:806:1:o;10590:140::-;10648:5;10677:47;10718:4;10708:8;10704:19;10698:4;10677:47;:::i;10735:168::-;10808:9;;;10839;;10856:15;;;10850:22;;10836:37;10826:71;;10877:18;;:::i;10908:128::-;10975:9;;;10996:11;;;10993:37;;;11010:18;;:::i;11391:127::-;11452:10;11447:3;11443:20;11440:1;11433:31;11483:4;11480:1;11473:15;11507:4;11504:1;11497:15;11870:197;11908:3;11936:6;11977:2;11970:5;11966:14;12004:2;11995:7;11992:15;11989:41;;12010:18;;:::i;:::-;12059:1;12046:15;;11870:197;-1:-1:-1;;;11870:197:1:o;12072:125::-;12137:9;;;12158:10;;;12155:36;;;12171:18;;:::i;12900:217::-;12940:1;12966;12956:132;;13010:10;13005:3;13001:20;12998:1;12991:31;13045:4;13042:1;13035:15;13073:4;13070:1;13063:15;12956:132;-1:-1:-1;13102:9:1;;12900:217::o;14246:385::-;14325:6;14333;14386:2;14374:9;14365:7;14361:23;14357:32;14354:52;;;14402:1;14399;14392:12;14354:52;14434:9;14428:16;14453:31;14478:5;14453:31;:::i;:::-;14553:2;14538:18;;14532:25;14503:5;;-1:-1:-1;14566:33:1;14532:25;14566:33;:::i;17260:245::-;17339:6;17347;17400:2;17388:9;17379:7;17375:23;17371:32;17368:52;;;17416:1;17413;17406:12;17368:52;-1:-1:-1;;17439:16:1;;17495:2;17480:18;;;17474:25;17439:16;;17474:25;;-1:-1:-1;17260:245:1:o;17866:184::-;17936:6;17989:2;17977:9;17968:7;17964:23;17960:32;17957:52;;;18005:1;18002;17995:12;17957:52;-1:-1:-1;18028:16:1;;17866:184;-1:-1:-1;17866:184:1:o;18357:245::-;18424:6;18477:2;18465:9;18456:7;18452:23;18448:32;18445:52;;;18493:1;18490;18483:12;18445:52;18525:9;18519:16;18544:28;18566:5;18544:28;:::i;18966:251::-;19036:6;19089:2;19077:9;19068:7;19064:23;19060:32;19057:52;;;19105:1;19102;19095:12;19057:52;19137:9;19131:16;19156:31;19181:5;19156:31;:::i;24273:1026::-;24535:4;24583:3;24572:9;24568:19;24614:6;24603:9;24596:25;24640:2;24678:6;24673:2;24662:9;24658:18;24651:34;24721:3;24716:2;24705:9;24701:18;24694:31;24745:6;24780;24774:13;24811:6;24803;24796:22;24849:3;24838:9;24834:19;24827:26;;24888:2;24880:6;24876:15;24862:29;;24909:1;24919:218;24933:6;24930:1;24927:13;24919:218;;;24998:13;;-1:-1:-1;;;;;24994:62:1;24982:75;;25112:15;;;;25077:12;;;;24955:1;24948:9;24919:218;;;-1:-1:-1;;;;;;;25193:55:1;;;;25188:2;25173:18;;25166:83;-1:-1:-1;;;25280:3:1;25265:19;25258:35;25154:3;24273:1026;-1:-1:-1;;;24273:1026:1:o

Swarm Source

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