ETH Price: $2,950.15 (-6.56%)
Gas: 8 Gwei

Token

PrincessLeiaOsamaSora1984Neko (HEX)
 

Overview

Max Total Supply

369,000,000,000 HEX

Holders

98

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
32,094,820,695.204949250460170054 HEX

Value
$0.00
0x03Fb19c762676DfEe7ece86380F46Bf23a2f82f0
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:
PrincessLeiaOsamaSora1984Neko

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-28
*/

// 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 PrincessLeiaOsamaSora1984Neko 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 _isExcludedFromLimits;
    uint256 constant private startingSupply = 369_000_000_000;
    string constant private _name = "PrincessLeiaOsamaSora1984Neko";
    string constant private _symbol = "HEX";
    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: 36900,
        sellFee: 36900,
        transferFee: 0
    });

    Ratios public _ratios = Ratios({
        liquidity: 200,
        marketing: 200,
        totalSwap: 400
    });

    uint256 constant public maxBuyTaxes = 36900;
    uint256 constant public maxSellTaxes = 36900;
    uint256 constant public maxTransferTaxes = 36900;
    uint256 constant masterTaxDivisor = 100000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0xd20045Df5AB336D9EbB6549b9525624F8DA215B3);
    
    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 isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

    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 setRatios(uint16 liquidity, uint16 marketing) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.totalSwap = liquidity + marketing;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable marketing) external onlyOwner {
        require(marketing != address(0), "Cannot be zero address.");
        marketingWallet = payable(marketing);
    }

    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 _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) {
                    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 {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } 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;
        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":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"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":[],"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":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"}],"name":"setRatios","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":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","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"}]

60006002819055619024608081905260a05260c0526008805465ffffffffffff1990811663902490241790915561014060405260c860e081905261010052610190610120526009805465019000c800c89216919091179055600c8054600161ff0160a01b03191673d20045df5ab336d9ebb6549b9525624f8da215b3179055600a60108190556011805461ffff19169055601380546001600160a01b03191633179055620000b090601290620002ce565b620000c1906455ea1d2a00620002e6565b601380546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001156012600a620002ce565b62000126906455ea1d2a00620002e6565b60405190815260200160405180910390a3601380546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548216831790559554909416835260049091529020805490921617905562000300565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000210578160001904821115620001f457620001f4620001b9565b808516156200020257918102915b93841c9390800290620001d4565b509250929050565b6000826200022957506001620002c8565b816200023857506000620002c8565b81600181146200025157600281146200025c576200027c565b6001915050620002c8565b60ff841115620002705762000270620001b9565b50506001821b620002c8565b5060208310610133831016604e8410600b8410161715620002a1575081810a620002c8565b620002ad8383620001cf565b8060001904821115620002c457620002c4620001b9565b0290505b92915050565b6000620002df60ff84168362000218565b9392505050565b8082028115828204841417620002c857620002c8620001b9565b613dce80620003106000396000f3fe6080604052600436106103645760003560e01c8063590ffdce116101c6578063ab558e4d116100f7578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610a44578063fb78680d14610a59578063fdb78c0e14610a79578063feadde9c14610a9a57600080fd5b8063dd62ed3e146109be578063eafb5a3c14610a04578063eb50e70e14610a2457600080fd5b8063b7df8b36116100d1578063b7df8b3614610933578063bcd96a251461094d578063bfc2fc351461096d578063cf8477061461098d57600080fd5b8063ab558e4d14610913578063b1b08f71146105b6578063b3d514fb146105b657600080fd5b806378648edf116101645780638a63bd9b1161013e5780638a63bd9b1461089d5780638a8c523c146108b257806395d89b41146108c7578063a9059cbb146108f357600080fd5b806378648edf1461084a57806380c581d11461085f578063893d20e81461087f57600080fd5b80635cce86cd116101a05780635cce86cd146107a657806370a08231146107df578063715018a61461081557806375f0a8741461082a57600080fd5b8063590ffdce146107505780635a6f0918146107705780635c24b0741461078657600080fd5b80632b112e49116102a0578063452ed4f11161023e5780634e718e48116102185780634e718e48146106b85780634fb2e45d146106d85780634fbee193146106f857806350a8e0161461073157600080fd5b8063452ed4f11461065e5780634ada218b1461067e5780634bbb93eb1461069857600080fd5b8063313ce5671161027a578063313ce567146105e257806332cde664146105fe57806333251a0b1461061e57806336fddb041461063e57600080fd5b80632b112e49146105a15780632b28fc7a146105b65780632e8fa821146105cc57600080fd5b806307dd79e01161030d57806318160ddd116102e757806318160ddd1461053657806323b872dd1461054b5780632610eaca1461056b578063285777511461058b57600080fd5b806307dd79e0146104b3578063095ea7b3146104dd5780630dcbcf1c146104fd57600080fd5b8063069d955f1161033e578063069d955f146103e957806306fdde031461043f5780630758d9241461048e57600080fd5b806303fd2a45146103705780630445b667146103a3578063044df726146103c757600080fd5b3661036b57005b600080fd5b34801561037c57600080fd5b5061038661dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103af57600080fd5b506103b9600d5481565b60405190815260200161039a565b3480156103d357600080fd5b506103e76103e2366004613690565b610aba565b005b3480156103f557600080fd5b5060085461041a9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161039a565b34801561044b57600080fd5b5060408051808201909152601d81527f5072696e636573734c6569614f73616d61536f7261313938344e656b6f00000060208201525b60405161039a91906136c9565b34801561049a57600080fd5b50600a546103869061010090046001600160a01b031681565b3480156104bf57600080fd5b50600a546104cd9060ff1681565b604051901515815260200161039a565b3480156104e957600080fd5b506104cd6104f836600461372c565b610b78565b34801561050957600080fd5b506104cd610518366004613758565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561054257600080fd5b506103b9610b8f565b34801561055757600080fd5b506104cd610566366004613775565b610bb1565b34801561057757600080fd5b506103e761058636600461388c565b610c29565b34801561059757600080fd5b506103b960105481565b3480156105ad57600080fd5b506103b9610dde565b3480156105c257600080fd5b506103b961902481565b3480156105d857600080fd5b506103b9600e5481565b3480156105ee57600080fd5b506040516012815260200161039a565b34801561060a57600080fd5b506103e7610619366004613965565b610e5d565b34801561062a57600080fd5b506103e7610639366004613758565b610fb1565b34801561064a57600080fd5b506103e76106593660046139a8565b611062565b34801561066a57600080fd5b50600b54610386906001600160a01b031681565b34801561068a57600080fd5b506011546104cd9060ff1681565b3480156106a457600080fd5b506103b96106b33660046139c6565b6110d5565b3480156106c457600080fd5b506103e76106d33660046139c6565b61110a565b3480156106e457600080fd5b506103e76106f3366004613758565b6111a8565b34801561070457600080fd5b506104cd610713366004613758565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561073d57600080fd5b506011546104cd90610100900460ff1681565b34801561075c57600080fd5b506103e761076b3660046139a8565b6113aa565b34801561077c57600080fd5b506103b960125481565b34801561079257600080fd5b506103e76107a1366004613758565b61141d565b3480156107b257600080fd5b506104cd6107c1366004613758565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156107eb57600080fd5b506103b96107fa366004613758565b6001600160a01b031660009081526020819052604090205490565b34801561082157600080fd5b506103e76115fb565b34801561083657600080fd5b50600c54610386906001600160a01b031681565b34801561085657600080fd5b506103e7611720565b34801561086b57600080fd5b506103e761087a3660046139a8565b611777565b34801561088b57600080fd5b506013546001600160a01b0316610386565b3480156108a957600080fd5b506104cd611950565b3480156108be57600080fd5b506103e76119c0565b3480156108d357600080fd5b506040805180820190915260038152620908ab60eb1b6020820152610481565b3480156108ff57600080fd5b506104cd61090e36600461372c565b611c0a565b34801561091f57600080fd5b506103e761092e366004613758565b611c21565b34801561093f57600080fd5b50600f546104cd9060ff1681565b34801561095957600080fd5b506103e76109683660046139df565b611dbb565b34801561097957600080fd5b506103e7610988366004613690565b611ed5565b34801561099957600080fd5b5060095461041a9061ffff808216916201000081048216916401000000009091041683565b3480156109ca57600080fd5b506103b96109d9366004613a12565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a1057600080fd5b506103e7610a1f366004613758565b611f80565b348015610a3057600080fd5b506103e7610a3f366004613758565b612381565b348015610a5057600080fd5b506103e7612441565b348015610a6557600080fd5b506103e7610a74366004613a40565b61251a565b348015610a8557600080fd5b50600c546104cd90600160a81b900460ff1681565b348015610aa657600080fd5b506103e7610ab53660046139a8565b6127e1565b6013546001600160a01b03163314610b075760405162461bcd60e51b81526020600482015260116024820152600080516020613d7983398151915260448201526064015b60405180910390fd5b60115460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b505050505050565b6000610b85338484612854565b5060015b92915050565b6000610b9d6012600a613b6c565b610bac906455ea1d2a00613b7b565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610c16576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610c10908490613b92565b90915550505b610c2184848461294d565b949350505050565b6013546001600160a01b03163314610c715760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b8051825114610cc25760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610afe565b60005b82518161ffff161015610dd957610cde6012600a613b6c565b828261ffff1681518110610cf457610cf4613ba5565b6020026020010151610d069190613b7b565b336000908152602081905260409020541015610d645760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610afe565b610dc633848361ffff1681518110610d7e57610d7e613ba5565b60200260200101516012600a610d949190613b6c565b858561ffff1681518110610daa57610daa613ba5565b6020026020010151610dbc9190613b7b565b6000806001612c98565b5080610dd181613bbb565b915050610cc5565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610e389190613bdc565b610e446012600a613b6c565b610e53906455ea1d2a00613b7b565b610bac9190613b92565b6013546001600160a01b03163314610ea55760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b600a5460ff1615610ef85760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610afe565b6190248361ffff1611158015610f1457506190248261ffff1611155b8015610f2657506190248161ffff1611155b610f725760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610afe565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6013546001600160a01b03163314610ff95760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6011546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b5050505050565b6013546001600160a01b031633146110aa5760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600b546001600160a01b0316600090815260208190526040812054620186a090611100908490613b7b565b610b899190613bef565b6013546001600160a01b031633146111525760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b60968111156111a35760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610afe565b601055565b6013546001600160a01b031633146111f05760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6001600160a01b03811661126c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610afe565b61deac196001600160a01b038216016112ed5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610afe565b601354611304906001600160a01b031660006113aa565b61130f8160016113aa565b6013546001600160a01b031660009081526020819052604090205415611358576013546001600160a01b031660008181526020819052604090205461135691908390610dbc565b505b601380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6013546001600160a01b031633146113f25760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b031633146114655760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b60115460ff161561147557600080fd5b306001600160a01b038216036114cd5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610afe565b6011805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611553575060408051601f3d908101601f1916820190925261155091810190613c11565b60015b61155c57600080fd5b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560135492546115d99383169291900416600019612854565b600a54610dd990309061010090046001600160a01b0316600019612854565b50565b6013546001600160a01b031633146116435760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b60115460ff166116bb5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610afe565b6013546116d2906001600160a01b031660006113aa565b601380546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b031633146117685760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b600a805460ff19166001179055565b6013546001600160a01b031633146117bf5760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b8061181d576001600160a01b03828116600081815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610b42565b60025415611884576203f480600254426118379190613b92565b116118845760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610afe565b6001600160a01b03821660009081526001602052604090205460ff16156118ed5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610afe565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610b42565b5050565b6013546000906001600160a01b0316331461199b5760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b600a546119ba90309061010090046001600160a01b0316600019612854565b50600190565b6013546001600160a01b03163314611a085760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b60115460ff1615611a5b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610afe565b601154610100900460ff16611ab25760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610afe565b6011546201000090046001600160a01b0316611ae2576011805462010000600160b01b0319163062010000021790555b601154600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611b5457600080fd5b505af1925050508015611b65575060015b50601154600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611be8575060408051601f3d908101601f19168201909252611be591810190613c40565b60015b15611bf757600d91909155600e555b6011805460ff1916600117905542601255565b6000611c1733848461294d565b5060019392505050565b6013546001600160a01b03163314611c695760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b601154610100900460ff1615611cd157306001600160a01b03821603611cd15760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610afe565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4c9190613c64565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190613c7d565b6013546001600160a01b03163314611e035760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6009805461ffff838116620100000263ffffffff1990921690851617179055611e2c8183613c9a565b6009805465ffff00000000191664010000000061ffff93841602179055600854600091611e629162010000810482169116613c9a565b60095461ffff9182169250640100000000900416811015610dd95760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610afe565b6013546001600160a01b03163314611f1d5760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b03163314611fc85760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b601154610100900460ff16156120205760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610afe565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120899190613cbc565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fa9190613cbc565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121699190613cbc565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166122ff57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f89190613cbc565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122699190613cbc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156122b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122da9190613cbc565b600b80546001600160a01b0319166001600160a01b039290921691909117905561231b565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610dd9923092910416600019612854565b6013546001600160a01b031633146123c95760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6001600160a01b03811661241f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610afe565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6013546001600160a01b031633146124895760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b601154610100900460ff16156124e15760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610afe565b6013546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156115f8573d6000803e3d6000fd5b6013546001600160a01b031633146125625760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b82846125706012600a613b6c565b61257f906455ea1d2a00613b7b565b6125899190613b7b565b6125939190613bef565b600d5580826125a46012600a613b6c565b6125b3906455ea1d2a00613b7b565b6125bd9190613b7b565b6125c79190613bef565b600e819055600d5411156126275760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610afe565b600b546001600160a01b0316600090815260208190526040902054620186a090612652906096613b7b565b61265c9190613bef565b600e5411156126b95760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610afe565b620f42406126c96012600a613b6c565b6126d8906455ea1d2a00613b7b565b6126e29190613bef565b600e54101561274a5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610afe565b620f424061275a6012600a613b6c565b612769906455ea1d2a00613b7b565b6127739190613bef565b600d5410156127db5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610afe565b50505050565b6013546001600160a01b031633146128295760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166128a05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610afe565b6001600160a01b0382166128ec5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610afe565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166129b35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610afe565b6001600160a01b038316612a155760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610afe565b60008211612a775760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610afe565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612aa55760019250612ad3565b6001600160a01b03861660009081526001602052604090205460ff1615612acf5760019150612ad3565b5060015b612add8787612f4b565b15612bde5760115460ff16612bde5780612b395760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610afe565b6001600160a01b03871660009081526005602052604090205460ff16158015612b7b57506001600160a01b03861660009081526005602052604090205460ff16155b15612bde5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610afe565b8115612c7f57600c54600160a01b900460ff16612c7f57600c54600160a81b900460ff1615612c7f5730600090815260208190526040902054600d548110612c7d57600e54600f5460ff1615612c6757601054600b546001600160a01b0316600090815260208190526040902054620186a091612c5a91613b7b565b612c649190613bef565b90505b808210612c72578091505b612c7b82613062565b505b505b612c8d878787868686612c98565b979650505050505050565b6000612ca48787612f4b565b15612d3e5760115460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612d27575060408051601f3d908101601f19168201909252612d2491810190613c7d565b60015b612d3057600080fd5b905080612d3c57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612d8057506001600160a01b03871660009081526006602052604090205460ff165b15612d89575060005b6001600160a01b03881660009081526020819052604081208054889290612db1908490613b92565b909155506000905081612dc45786612dd0565b612dd089888888613431565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612e069190613bdc565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e5291815260200190565b60405180910390a3601154610100900460ff16612f3c57612e73898961353e565b601154610100900460ff16158015612e905750612e908989612f4b565b8015612eb557506001600160a01b03891660009081526005602052604090205460ff16155b8015612eda57506001600160a01b03881660009081526005602052604090205460ff16155b8015612ee4575083155b15612f3c5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610afe565b50600198975050505050505050565b6013546000906001600160a01b03848116911614801590612f7a57506013546001600160a01b03838116911614155b8015612f9157506013546001600160a01b03163214155b8015612fb657506001600160a01b03821660009081526004602052604090205460ff16155b8015612fdb57506001600160a01b03831660009081526004602052604090205460ff16155b8015612ff257506001600160a01b03821661dead14155b801561300657506001600160a01b03821615155b801561301b57506001600160a01b0383163014155b801561303b57506011546001600160a01b03848116620100009092041614155b801561305b57506011546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b1790556040805160608101825260095461ffff80821683526201000082048116602084015264010000000090910416918101829052906000036130b55750613421565b306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461311857306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b60006002826040015161ffff16836000015161ffff16856131399190613b7b565b6131439190613bef565b61314d9190613bef565b9050600061315b8285613b92565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061319557613195613ba5565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322c9190613cbc565b8160018151811061323f5761323f613ba5565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac9479061328c908590600090869030904290600401613cd9565b600060405180830381600087803b1580156132a657600080fd5b505af19250505080156132b7575060015b6132c45750505050613421565b476000836132d28684613b7b565b6132dc9190613bef565b905084156133bf57600a5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015613373575060408051601f3d908101601f1916820190925261337091810190613d4a565b60015b61338257505050505050613421565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613411576040519150601f19603f3d011682016040523d82523d6000602084013e613416565b606091505b505050505050505050505b50600c805460ff60a01b19169055565b6000808315613447575060085461ffff16613471565b8215613460575060085462010000900461ffff16613471565b50600854640100000000900461ffff165b806000036134825784915050610c21565b6011546201000090046001600160a01b0316301480156134a3575046606114155b156134ad57506111945b6000620186a06134bd8388613b7b565b6134c79190613bef565b905080156135345730600090815260208190526040812080548392906134ee908490613bdc565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612c8d8187613b92565b601154610100900460ff16156135a25760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610afe565b6135ac8282612f4b565b1580156135c65750600b546001600160a01b038281169116145b1561194c576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556011805461ff00191661010017908190556201000090041661363e576011805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611f74565b80151581146115f857600080fd5b600080604083850312156136a357600080fd5b82356136ae81613682565b915060208301356136be81613682565b809150509250929050565b600060208083528351808285015260005b818110156136f6578581018301518582016040015282016136da565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115f857600080fd5b6000806040838503121561373f57600080fd5b823561374a81613717565b946020939093013593505050565b60006020828403121561376a57600080fd5b813561305b81613717565b60008060006060848603121561378a57600080fd5b833561379581613717565b925060208401356137a581613717565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156137f5576137f56137b6565b604052919050565b600067ffffffffffffffff821115613817576138176137b6565b5060051b60200190565b600082601f83011261383257600080fd5b81356020613847613842836137fd565b6137cc565b82815260059290921b8401810191818101908684111561386657600080fd5b8286015b84811015613881578035835291830191830161386a565b509695505050505050565b6000806040838503121561389f57600080fd5b823567ffffffffffffffff808211156138b757600080fd5b818501915085601f8301126138cb57600080fd5b813560206138db613842836137fd565b82815260059290921b840181019181810190898411156138fa57600080fd5b948201945b8386101561392157853561391281613717565b825294820194908201906138ff565b9650508601359250508082111561393757600080fd5b5061394485828601613821565b9150509250929050565b803561ffff8116811461396057600080fd5b919050565b60008060006060848603121561397a57600080fd5b6139838461394e565b92506139916020850161394e565b915061399f6040850161394e565b90509250925092565b600080604083850312156139bb57600080fd5b82356136ae81613717565b6000602082840312156139d857600080fd5b5035919050565b600080604083850312156139f257600080fd5b6139fb8361394e565b9150613a096020840161394e565b90509250929050565b60008060408385031215613a2557600080fd5b8235613a3081613717565b915060208301356136be81613717565b60008060008060808587031215613a5657600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613ac3578160001904821115613aa957613aa9613a72565b80851615613ab657918102915b93841c9390800290613a8d565b509250929050565b600082613ada57506001610b89565b81613ae757506000610b89565b8160018114613afd5760028114613b0757613b23565b6001915050610b89565b60ff841115613b1857613b18613a72565b50506001821b610b89565b5060208310610133831016604e8410600b8410161715613b46575081810a610b89565b613b508383613a88565b8060001904821115613b6457613b64613a72565b029392505050565b600061305b60ff841683613acb565b8082028115828204841417610b8957610b89613a72565b81810381811115610b8957610b89613a72565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613bd257613bd2613a72565b6001019392505050565b80820180821115610b8957610b89613a72565b600082613c0c57634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613c2457600080fd5b8251613c2f81613717565b60208401519092506136be81613717565b60008060408385031215613c5357600080fd5b505080516020909101519092909150565b600060208284031215613c7657600080fd5b5051919050565b600060208284031215613c8f57600080fd5b815161305b81613682565b61ffff818116838216019080821115613cb557613cb5613a72565b5092915050565b600060208284031215613cce57600080fd5b815161305b81613717565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613d295784516001600160a01b031683529383019391830191600101613d04565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613d5f57600080fd5b835192506020840151915060408401519050925092509256fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212207071ad1bd21374922d012b0d813b62af6919f2f0d77c927aaf3669762d4c6c8964736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103645760003560e01c8063590ffdce116101c6578063ab558e4d116100f7578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610a44578063fb78680d14610a59578063fdb78c0e14610a79578063feadde9c14610a9a57600080fd5b8063dd62ed3e146109be578063eafb5a3c14610a04578063eb50e70e14610a2457600080fd5b8063b7df8b36116100d1578063b7df8b3614610933578063bcd96a251461094d578063bfc2fc351461096d578063cf8477061461098d57600080fd5b8063ab558e4d14610913578063b1b08f71146105b6578063b3d514fb146105b657600080fd5b806378648edf116101645780638a63bd9b1161013e5780638a63bd9b1461089d5780638a8c523c146108b257806395d89b41146108c7578063a9059cbb146108f357600080fd5b806378648edf1461084a57806380c581d11461085f578063893d20e81461087f57600080fd5b80635cce86cd116101a05780635cce86cd146107a657806370a08231146107df578063715018a61461081557806375f0a8741461082a57600080fd5b8063590ffdce146107505780635a6f0918146107705780635c24b0741461078657600080fd5b80632b112e49116102a0578063452ed4f11161023e5780634e718e48116102185780634e718e48146106b85780634fb2e45d146106d85780634fbee193146106f857806350a8e0161461073157600080fd5b8063452ed4f11461065e5780634ada218b1461067e5780634bbb93eb1461069857600080fd5b8063313ce5671161027a578063313ce567146105e257806332cde664146105fe57806333251a0b1461061e57806336fddb041461063e57600080fd5b80632b112e49146105a15780632b28fc7a146105b65780632e8fa821146105cc57600080fd5b806307dd79e01161030d57806318160ddd116102e757806318160ddd1461053657806323b872dd1461054b5780632610eaca1461056b578063285777511461058b57600080fd5b806307dd79e0146104b3578063095ea7b3146104dd5780630dcbcf1c146104fd57600080fd5b8063069d955f1161033e578063069d955f146103e957806306fdde031461043f5780630758d9241461048e57600080fd5b806303fd2a45146103705780630445b667146103a3578063044df726146103c757600080fd5b3661036b57005b600080fd5b34801561037c57600080fd5b5061038661dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103af57600080fd5b506103b9600d5481565b60405190815260200161039a565b3480156103d357600080fd5b506103e76103e2366004613690565b610aba565b005b3480156103f557600080fd5b5060085461041a9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161039a565b34801561044b57600080fd5b5060408051808201909152601d81527f5072696e636573734c6569614f73616d61536f7261313938344e656b6f00000060208201525b60405161039a91906136c9565b34801561049a57600080fd5b50600a546103869061010090046001600160a01b031681565b3480156104bf57600080fd5b50600a546104cd9060ff1681565b604051901515815260200161039a565b3480156104e957600080fd5b506104cd6104f836600461372c565b610b78565b34801561050957600080fd5b506104cd610518366004613758565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561054257600080fd5b506103b9610b8f565b34801561055757600080fd5b506104cd610566366004613775565b610bb1565b34801561057757600080fd5b506103e761058636600461388c565b610c29565b34801561059757600080fd5b506103b960105481565b3480156105ad57600080fd5b506103b9610dde565b3480156105c257600080fd5b506103b961902481565b3480156105d857600080fd5b506103b9600e5481565b3480156105ee57600080fd5b506040516012815260200161039a565b34801561060a57600080fd5b506103e7610619366004613965565b610e5d565b34801561062a57600080fd5b506103e7610639366004613758565b610fb1565b34801561064a57600080fd5b506103e76106593660046139a8565b611062565b34801561066a57600080fd5b50600b54610386906001600160a01b031681565b34801561068a57600080fd5b506011546104cd9060ff1681565b3480156106a457600080fd5b506103b96106b33660046139c6565b6110d5565b3480156106c457600080fd5b506103e76106d33660046139c6565b61110a565b3480156106e457600080fd5b506103e76106f3366004613758565b6111a8565b34801561070457600080fd5b506104cd610713366004613758565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561073d57600080fd5b506011546104cd90610100900460ff1681565b34801561075c57600080fd5b506103e761076b3660046139a8565b6113aa565b34801561077c57600080fd5b506103b960125481565b34801561079257600080fd5b506103e76107a1366004613758565b61141d565b3480156107b257600080fd5b506104cd6107c1366004613758565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156107eb57600080fd5b506103b96107fa366004613758565b6001600160a01b031660009081526020819052604090205490565b34801561082157600080fd5b506103e76115fb565b34801561083657600080fd5b50600c54610386906001600160a01b031681565b34801561085657600080fd5b506103e7611720565b34801561086b57600080fd5b506103e761087a3660046139a8565b611777565b34801561088b57600080fd5b506013546001600160a01b0316610386565b3480156108a957600080fd5b506104cd611950565b3480156108be57600080fd5b506103e76119c0565b3480156108d357600080fd5b506040805180820190915260038152620908ab60eb1b6020820152610481565b3480156108ff57600080fd5b506104cd61090e36600461372c565b611c0a565b34801561091f57600080fd5b506103e761092e366004613758565b611c21565b34801561093f57600080fd5b50600f546104cd9060ff1681565b34801561095957600080fd5b506103e76109683660046139df565b611dbb565b34801561097957600080fd5b506103e7610988366004613690565b611ed5565b34801561099957600080fd5b5060095461041a9061ffff808216916201000081048216916401000000009091041683565b3480156109ca57600080fd5b506103b96109d9366004613a12565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a1057600080fd5b506103e7610a1f366004613758565b611f80565b348015610a3057600080fd5b506103e7610a3f366004613758565b612381565b348015610a5057600080fd5b506103e7612441565b348015610a6557600080fd5b506103e7610a74366004613a40565b61251a565b348015610a8557600080fd5b50600c546104cd90600160a81b900460ff1681565b348015610aa657600080fd5b506103e7610ab53660046139a8565b6127e1565b6013546001600160a01b03163314610b075760405162461bcd60e51b81526020600482015260116024820152600080516020613d7983398151915260448201526064015b60405180910390fd5b60115460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b505050505050565b6000610b85338484612854565b5060015b92915050565b6000610b9d6012600a613b6c565b610bac906455ea1d2a00613b7b565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610c16576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610c10908490613b92565b90915550505b610c2184848461294d565b949350505050565b6013546001600160a01b03163314610c715760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b8051825114610cc25760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610afe565b60005b82518161ffff161015610dd957610cde6012600a613b6c565b828261ffff1681518110610cf457610cf4613ba5565b6020026020010151610d069190613b7b565b336000908152602081905260409020541015610d645760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610afe565b610dc633848361ffff1681518110610d7e57610d7e613ba5565b60200260200101516012600a610d949190613b6c565b858561ffff1681518110610daa57610daa613ba5565b6020026020010151610dbc9190613b7b565b6000806001612c98565b5080610dd181613bbb565b915050610cc5565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610e389190613bdc565b610e446012600a613b6c565b610e53906455ea1d2a00613b7b565b610bac9190613b92565b6013546001600160a01b03163314610ea55760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b600a5460ff1615610ef85760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610afe565b6190248361ffff1611158015610f1457506190248261ffff1611155b8015610f2657506190248161ffff1611155b610f725760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610afe565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6013546001600160a01b03163314610ff95760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6011546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b5050505050565b6013546001600160a01b031633146110aa5760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600b546001600160a01b0316600090815260208190526040812054620186a090611100908490613b7b565b610b899190613bef565b6013546001600160a01b031633146111525760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b60968111156111a35760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610afe565b601055565b6013546001600160a01b031633146111f05760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6001600160a01b03811661126c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610afe565b61deac196001600160a01b038216016112ed5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610afe565b601354611304906001600160a01b031660006113aa565b61130f8160016113aa565b6013546001600160a01b031660009081526020819052604090205415611358576013546001600160a01b031660008181526020819052604090205461135691908390610dbc565b505b601380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6013546001600160a01b031633146113f25760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b031633146114655760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b60115460ff161561147557600080fd5b306001600160a01b038216036114cd5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610afe565b6011805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611553575060408051601f3d908101601f1916820190925261155091810190613c11565b60015b61155c57600080fd5b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560135492546115d99383169291900416600019612854565b600a54610dd990309061010090046001600160a01b0316600019612854565b50565b6013546001600160a01b031633146116435760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b60115460ff166116bb5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610afe565b6013546116d2906001600160a01b031660006113aa565b601380546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b031633146117685760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b600a805460ff19166001179055565b6013546001600160a01b031633146117bf5760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b8061181d576001600160a01b03828116600081815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610b42565b60025415611884576203f480600254426118379190613b92565b116118845760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610afe565b6001600160a01b03821660009081526001602052604090205460ff16156118ed5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610afe565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610b42565b5050565b6013546000906001600160a01b0316331461199b5760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b600a546119ba90309061010090046001600160a01b0316600019612854565b50600190565b6013546001600160a01b03163314611a085760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b60115460ff1615611a5b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610afe565b601154610100900460ff16611ab25760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610afe565b6011546201000090046001600160a01b0316611ae2576011805462010000600160b01b0319163062010000021790555b601154600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611b5457600080fd5b505af1925050508015611b65575060015b50601154600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611be8575060408051601f3d908101601f19168201909252611be591810190613c40565b60015b15611bf757600d91909155600e555b6011805460ff1916600117905542601255565b6000611c1733848461294d565b5060019392505050565b6013546001600160a01b03163314611c695760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b601154610100900460ff1615611cd157306001600160a01b03821603611cd15760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610afe565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4c9190613c64565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190613c7d565b6013546001600160a01b03163314611e035760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6009805461ffff838116620100000263ffffffff1990921690851617179055611e2c8183613c9a565b6009805465ffff00000000191664010000000061ffff93841602179055600854600091611e629162010000810482169116613c9a565b60095461ffff9182169250640100000000900416811015610dd95760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610afe565b6013546001600160a01b03163314611f1d5760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b03163314611fc85760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b601154610100900460ff16156120205760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610afe565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120899190613cbc565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fa9190613cbc565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121699190613cbc565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166122ff57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f89190613cbc565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122699190613cbc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156122b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122da9190613cbc565b600b80546001600160a01b0319166001600160a01b039290921691909117905561231b565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610dd9923092910416600019612854565b6013546001600160a01b031633146123c95760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6001600160a01b03811661241f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610afe565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6013546001600160a01b031633146124895760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b601154610100900460ff16156124e15760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610afe565b6013546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156115f8573d6000803e3d6000fd5b6013546001600160a01b031633146125625760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b82846125706012600a613b6c565b61257f906455ea1d2a00613b7b565b6125899190613b7b565b6125939190613bef565b600d5580826125a46012600a613b6c565b6125b3906455ea1d2a00613b7b565b6125bd9190613b7b565b6125c79190613bef565b600e819055600d5411156126275760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610afe565b600b546001600160a01b0316600090815260208190526040902054620186a090612652906096613b7b565b61265c9190613bef565b600e5411156126b95760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610afe565b620f42406126c96012600a613b6c565b6126d8906455ea1d2a00613b7b565b6126e29190613bef565b600e54101561274a5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610afe565b620f424061275a6012600a613b6c565b612769906455ea1d2a00613b7b565b6127739190613bef565b600d5410156127db5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610afe565b50505050565b6013546001600160a01b031633146128295760405162461bcd60e51b81526020600482015260116024820152600080516020613d798339815191526044820152606401610afe565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166128a05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610afe565b6001600160a01b0382166128ec5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610afe565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166129b35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610afe565b6001600160a01b038316612a155760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610afe565b60008211612a775760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610afe565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612aa55760019250612ad3565b6001600160a01b03861660009081526001602052604090205460ff1615612acf5760019150612ad3565b5060015b612add8787612f4b565b15612bde5760115460ff16612bde5780612b395760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610afe565b6001600160a01b03871660009081526005602052604090205460ff16158015612b7b57506001600160a01b03861660009081526005602052604090205460ff16155b15612bde5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610afe565b8115612c7f57600c54600160a01b900460ff16612c7f57600c54600160a81b900460ff1615612c7f5730600090815260208190526040902054600d548110612c7d57600e54600f5460ff1615612c6757601054600b546001600160a01b0316600090815260208190526040902054620186a091612c5a91613b7b565b612c649190613bef565b90505b808210612c72578091505b612c7b82613062565b505b505b612c8d878787868686612c98565b979650505050505050565b6000612ca48787612f4b565b15612d3e5760115460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612d27575060408051601f3d908101601f19168201909252612d2491810190613c7d565b60015b612d3057600080fd5b905080612d3c57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612d8057506001600160a01b03871660009081526006602052604090205460ff165b15612d89575060005b6001600160a01b03881660009081526020819052604081208054889290612db1908490613b92565b909155506000905081612dc45786612dd0565b612dd089888888613431565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612e069190613bdc565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e5291815260200190565b60405180910390a3601154610100900460ff16612f3c57612e73898961353e565b601154610100900460ff16158015612e905750612e908989612f4b565b8015612eb557506001600160a01b03891660009081526005602052604090205460ff16155b8015612eda57506001600160a01b03881660009081526005602052604090205460ff16155b8015612ee4575083155b15612f3c5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610afe565b50600198975050505050505050565b6013546000906001600160a01b03848116911614801590612f7a57506013546001600160a01b03838116911614155b8015612f9157506013546001600160a01b03163214155b8015612fb657506001600160a01b03821660009081526004602052604090205460ff16155b8015612fdb57506001600160a01b03831660009081526004602052604090205460ff16155b8015612ff257506001600160a01b03821661dead14155b801561300657506001600160a01b03821615155b801561301b57506001600160a01b0383163014155b801561303b57506011546001600160a01b03848116620100009092041614155b801561305b57506011546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b1790556040805160608101825260095461ffff80821683526201000082048116602084015264010000000090910416918101829052906000036130b55750613421565b306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461311857306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b60006002826040015161ffff16836000015161ffff16856131399190613b7b565b6131439190613bef565b61314d9190613bef565b9050600061315b8285613b92565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061319557613195613ba5565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322c9190613cbc565b8160018151811061323f5761323f613ba5565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac9479061328c908590600090869030904290600401613cd9565b600060405180830381600087803b1580156132a657600080fd5b505af19250505080156132b7575060015b6132c45750505050613421565b476000836132d28684613b7b565b6132dc9190613bef565b905084156133bf57600a5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015613373575060408051601f3d908101601f1916820190925261337091810190613d4a565b60015b61338257505050505050613421565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613411576040519150601f19603f3d011682016040523d82523d6000602084013e613416565b606091505b505050505050505050505b50600c805460ff60a01b19169055565b6000808315613447575060085461ffff16613471565b8215613460575060085462010000900461ffff16613471565b50600854640100000000900461ffff165b806000036134825784915050610c21565b6011546201000090046001600160a01b0316301480156134a3575046606114155b156134ad57506111945b6000620186a06134bd8388613b7b565b6134c79190613bef565b905080156135345730600090815260208190526040812080548392906134ee908490613bdc565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612c8d8187613b92565b601154610100900460ff16156135a25760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610afe565b6135ac8282612f4b565b1580156135c65750600b546001600160a01b038281169116145b1561194c576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556011805461ff00191661010017908190556201000090041661363e576011805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611f74565b80151581146115f857600080fd5b600080604083850312156136a357600080fd5b82356136ae81613682565b915060208301356136be81613682565b809150509250929050565b600060208083528351808285015260005b818110156136f6578581018301518582016040015282016136da565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115f857600080fd5b6000806040838503121561373f57600080fd5b823561374a81613717565b946020939093013593505050565b60006020828403121561376a57600080fd5b813561305b81613717565b60008060006060848603121561378a57600080fd5b833561379581613717565b925060208401356137a581613717565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156137f5576137f56137b6565b604052919050565b600067ffffffffffffffff821115613817576138176137b6565b5060051b60200190565b600082601f83011261383257600080fd5b81356020613847613842836137fd565b6137cc565b82815260059290921b8401810191818101908684111561386657600080fd5b8286015b84811015613881578035835291830191830161386a565b509695505050505050565b6000806040838503121561389f57600080fd5b823567ffffffffffffffff808211156138b757600080fd5b818501915085601f8301126138cb57600080fd5b813560206138db613842836137fd565b82815260059290921b840181019181810190898411156138fa57600080fd5b948201945b8386101561392157853561391281613717565b825294820194908201906138ff565b9650508601359250508082111561393757600080fd5b5061394485828601613821565b9150509250929050565b803561ffff8116811461396057600080fd5b919050565b60008060006060848603121561397a57600080fd5b6139838461394e565b92506139916020850161394e565b915061399f6040850161394e565b90509250925092565b600080604083850312156139bb57600080fd5b82356136ae81613717565b6000602082840312156139d857600080fd5b5035919050565b600080604083850312156139f257600080fd5b6139fb8361394e565b9150613a096020840161394e565b90509250929050565b60008060408385031215613a2557600080fd5b8235613a3081613717565b915060208301356136be81613717565b60008060008060808587031215613a5657600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613ac3578160001904821115613aa957613aa9613a72565b80851615613ab657918102915b93841c9390800290613a8d565b509250929050565b600082613ada57506001610b89565b81613ae757506000610b89565b8160018114613afd5760028114613b0757613b23565b6001915050610b89565b60ff841115613b1857613b18613a72565b50506001821b610b89565b5060208310610133831016604e8410600b8410161715613b46575081810a610b89565b613b508383613a88565b8060001904821115613b6457613b64613a72565b029392505050565b600061305b60ff841683613acb565b8082028115828204841417610b8957610b89613a72565b81810381811115610b8957610b89613a72565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613bd257613bd2613a72565b6001019392505050565b80820180821115610b8957610b89613a72565b600082613c0c57634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613c2457600080fd5b8251613c2f81613717565b60208401519092506136be81613717565b60008060408385031215613c5357600080fd5b505080516020909101519092909150565b600060208284031215613c7657600080fd5b5051919050565b600060208284031215613c8f57600080fd5b815161305b81613682565b61ffff818116838216019080821115613cb557613cb5613a72565b5092915050565b600060208284031215613cce57600080fd5b815161305b81613717565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613d295784516001600160a01b031683529383019391830191600101613d04565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613d5f57600080fd5b835192506020840151915060408401519050925092509256fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212207071ad1bd21374922d012b0d813b62af6919f2f0d77c927aaf3669762d4c6c8964736f6c63430008130033

Deployed Bytecode Sourcemap

4090:20194:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5662:73;;;;;;;;;;;;5693:42;5662:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5662:73:0;;;;;;;;5911:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5911:28:0;245:177:1;13740:153:0;;;;;;;;;;-1:-1:-1;13740:153:0;;;;;:::i;:::-;;:::i;:::-;;5118:111;;;;;;;;;;-1:-1:-1;5118:111: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;5118:111:0;931:365:1;9187:80:0;;;;;;;;;;-1:-1:-1;9259:5:0;;;;;;;;;;;;;;;;;9187:80;;;;;;;:::i;5601:26::-;;;;;;;;;;-1:-1:-1;5601:26:0;;;;;;;-1:-1:-1;;;;;5601:26:0;;;5568;;;;;;;;;;-1:-1:-1;5568:26:0;;;;;;;;;;;2267:14:1;;2260:22;2242:41;;2230:2;2215:18;5568:26:0;2102:187:1;9795:161:0;;;;;;;;;;-1:-1:-1;9795:161:0;;;;;:::i;:::-;;:::i;13169:140::-;;;;;;;;;;-1:-1:-1;13169:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13267:34:0;13243:4;13267:34;;;:25;:34;;;;;;;;;13169:140;8922:83;;;;;;;;;;;;;:::i;10465:306::-;;;;;;;;;;-1:-1:-1;10465:306:0;;;;;:::i;:::-;;:::i;21996:447::-;;;;;;;;;;-1:-1:-1;21996:447:0;;;;;:::i;:::-;;:::i;6019:33::-;;;;;;;;;;;;;;;;13473:141;;;;;;;;;;;;;:::i;5361:43::-;;;;;;;;;;;;5399:5;5361:43;;5946:25;;;;;;;;;;;;;;;;9011:80;;;;;;;;;;-1:-1:-1;9011:80:0;;4818:2;6115:36:1;;6103:2;6088:18;9011:80:0;5973:184:1;14091:453:0;;;;;;;;;;-1:-1:-1;14091:453:0;;;;;:::i;:::-;;:::i;13622:110::-;;;;;;;;;;-1:-1:-1;13622:110:0;;;;;:::i;:::-;;:::i;12744:140::-;;;;;;;;;;-1:-1:-1;12744:140:0;;;;;:::i;:::-;;:::i;5634:21::-;;;;;;;;;;-1:-1:-1;5634:21:0;;;;-1:-1:-1;;;;;5634:21:0;;;6059:34;;;;;;;;;;-1:-1:-1;6059:34:0;;;;;;;;15125:189;;;;;;;;;;-1:-1:-1;15125:189:0;;;;;:::i;:::-;;:::i;16029:217::-;;;;;;;;;;-1:-1:-1;16029:217:0;;;;;:::i;:::-;;:::i;7554:654::-;;;;;;;;;;-1:-1:-1;7554:654:0;;;;;:::i;:::-;;:::i;12892:127::-;;;;;;;;;;-1:-1:-1;12892:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;12983:28:0;12959:4;12983:28;;;:19;:28;;;;;;;;;12892:127;6100:36;;;;;;;;;;-1:-1:-1;6100:36:0;;;;;;;;;;;13027:134;;;;;;;;;;-1:-1:-1;13027:134:0;;;;;:::i;:::-;;:::i;6173:26::-;;;;;;;;;;;;;;;;12039:557;;;;;;;;;;-1:-1:-1;12039:557:0;;;;;:::i;:::-;;:::i;12604:132::-;;;;;;;;;;-1:-1:-1;12604:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;12698:30:0;12674:4;12698:30;;;:21;:30;;;;;;;;;12604:132;9497:117;;;;;;;;;;-1:-1:-1;9497:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;9590:16:0;9563:7;9590:16;;;;;;;;;;;;9497:117;8216:310;;;;;;;;;;;;;:::i;5742:92::-;;;;;;;;;;-1:-1:-1;5742:92:0;;;;-1:-1:-1;;;;;5742:92:0;;;13901:182;;;;;;;;;;;;;:::i;11467:564::-;;;;;;;;;;-1:-1:-1;11467:564:0;;;;;:::i;:::-;;:::i;9273:79::-;;;;;;;;;;-1:-1:-1;9343:6:0;;-1:-1:-1;;;;;9343:6:0;9273:79;;10282:175;;;;;;;;;;;;;:::i;20799:695::-;;;;;;;;;;;;;:::i;9097:84::-;;;;;;;;;;-1:-1:-1;9171:7:0;;;;;;;;;;;;-1:-1:-1;;;9171:7:0;;;;9097:84;;9622:165;;;;;;;;;;-1:-1:-1;9622:165:0;;;;;:::i;:::-;;:::i;21692:296::-;;;;;;;;;;-1:-1:-1;21692:296:0;;;;;:::i;:::-;;:::i;5978:34::-;;;;;;;;;;-1:-1:-1;5978:34:0;;;;;;;;14552:366;;;;;;;;;;-1:-1:-1;14552:366:0;;;;;:::i;:::-;;:::i;16254:263::-;;;;;;;;;;-1:-1:-1;16254:263:0;;;;;:::i;:::-;;:::i;5238:114::-;;;;;;;;;;-1:-1:-1;5238:114:0;;;;;;;;;;;;;;;;;;;;;;9358:133;;;;;;;;;;-1:-1:-1;9358:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9460:19:0;;;9442:7;9460:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9358:133;10779:680;;;;;;;;;;-1:-1:-1;10779:680:0;;;;;:::i;:::-;;:::i;14926:191::-;;;;;;;;;;-1:-1:-1;14926:191:0;;;;;:::i;:::-;;:::i;21502:182::-;;;;;;;;;;;;;:::i;15322:699::-;;;;;;;;;;-1:-1:-1;15322:699:0;;;;;:::i;:::-;;:::i;5865:39::-;;;;;;;;;;-1:-1:-1;5865:39:0;;;;-1:-1:-1;;;5865:39:0;;;;;;13317:148;;;;;;;;;;-1:-1:-1;13317:148:0;;;;;:::i;:::-;;:::i;13740:153::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;;;;;;;;;13835:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;13835:50:0;;9315:14:1;;9308:22;13835:50:0::1;::::0;::::1;9290:41:1::0;9374:14;;9367:22;9347:18;;;9340:50;13835:11:0;;;::::1;-1:-1:-1::0;;;;;13835:11:0::1;::::0;:26:::1;::::0;9263:18:1;;13835:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13740:153:::0;;:::o;9795:161::-;9872:4;9889:37;9898:10;9910:7;9919:6;9889:8;:37::i;:::-;-1:-1:-1;9944:4:0;9795:161;;;;;:::o;8922:83::-;8977:7;4879:13;4818:2;4879;:13;:::i;:::-;4862:30;;4645:15;4862:30;:::i;:::-;8988:14;;8922:83;:::o;10465:306::-;-1:-1:-1;;;;;10586:19:0;;10565:4;10586:19;;;:11;:19;;;;;;;;10606:10;10586:31;;;;;;;;-1:-1:-1;;10586:52:0;10582:126;;-1:-1:-1;;;;;10655:19:0;;;;;;:11;:19;;;;;;;;10675:10;10655:31;;;;;;;:41;;10690:6;;10655:19;:41;;10690:6;;10655:41;:::i;:::-;;;;-1:-1:-1;;10582:126:0;10727:36;10737:6;10745:9;10756:6;10727:9;:36::i;:::-;10720:43;10465:306;-1:-1:-1;;;;10465:306:0:o;21996:447::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;22131:7:::1;:14;22112:8;:15;:33;22104:67;;;::::0;-1:-1:-1;;;22104:67:0;;11424:2:1;22104:67:0::1;::::0;::::1;11406:21:1::0;11463:2;11443:18;;;11436:30;11502:23;11482:18;;;11475:51;11543:18;;22104:67:0::1;11222:345:1::0;22104:67:0::1;22187:8;22182:254;22205:8;:15;22201:1;:19;;;22182:254;;;22286:13;4818:2;22286;:13;:::i;:::-;22275:7;22283:1;22275:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;22260:10;9563:7:::0;9590:16;;;;;;;;;;;22250:49:::1;;22242:80;;;::::0;-1:-1:-1;;;22242:80:0;;11906:2:1;22242:80:0::1;::::0;::::1;11888:21:1::0;11945:2;11925:18;;;11918:30;11984:20;11964:18;;;11957:48;12022:18;;22242:80:0::1;11704:342:1::0;22242:80:0::1;22337:87;22354:10;22366:8;22375:1;22366:11;;;;;;;;;;:::i;:::-;;;;;;;4818:2;22390;:13;;;;:::i;:::-;22379:7;22387:1;22379:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;22405:5;22412::::0;22419:4:::1;22337:16;:87::i;:::-;-1:-1:-1::0;22222:3:0;::::1;::::0;::::1;:::i;:::-;;;;22182:254;;;;21996:447:::0;;:::o;13473:141::-;13526:7;9590:16;;;;;;5693:42;9590:16;;;;13565:39;;9590:16;13565:39;:::i;:::-;4879:13;4818:2;4879;:13;:::i;:::-;4862:30;;4645:15;4862:30;:::i;:::-;13554:51;;;;:::i;14091:453::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;14199:14:::1;::::0;::::1;;14198:15;14190:45;;;::::0;-1:-1:-1;;;14190:45:0;;12585:2:1;14190:45:0::1;::::0;::::1;12567:21:1::0;12624:2;12604:18;;;12597:30;12663:19;12643:18;;;12636:47;12700:18;;14190:45:0::1;12383:341:1::0;14190:45:0::1;5399:5;14254:6;:21;;;;:65;;;;;5450:5;14296:7;:23;;;;14254:65;:117;;;;;5505:5;14340:11;:31;;;;14254:117;14246:170;;;::::0;-1:-1:-1;;;14246:170:0;;12931:2:1;14246:170:0::1;::::0;::::1;12913:21:1::0;12970:2;12950:18;;;12943:30;13009:25;12989:18;;;12982:53;13052:18;;14246:170:0::1;12729:347:1::0;14246:170:0::1;14427:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;14463:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;14501:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14091:453::o;13622:110::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;13691:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;13691:33:0;;-1:-1:-1;;;;;178:55:1;;;13691:33:0::1;::::0;::::1;160:74:1::0;13691:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;13691:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13622:110:::0;:::o;12744:140::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;-1:-1:-1;;;;;12836:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;12836:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12744:140::o;15125:189::-;15254:6;;-1:-1:-1;;;;;15254:6:0;15216:7;9590:16;;;;;;;;;;;5553:6;;15244:41;;15264:21;;15244:41;:::i;:::-;15243:62;;;;:::i;16029:217::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;16159:3:::1;16133:22;:29;;16125:64;;;::::0;-1:-1:-1;;;16125:64:0;;13505:2:1;16125:64:0::1;::::0;::::1;13487:21:1::0;13544:2;13524:18;;;13517:30;13583:24;13563:18;;;13556:52;13625:18;;16125:64:0::1;13303:346:1::0;16125:64:0::1;16200:13;:38:::0;16029:217::o;7554:654::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;-1:-1:-1;;;;;7633:22:0;::::1;7625:96;;;::::0;-1:-1:-1;;;7625:96:0;;13856:2:1;7625:96:0::1;::::0;::::1;13838:21:1::0;13895:2;13875:18;;;13868:30;13934:34;13914:18;;;13907:62;14005:31;13985:18;;;13978:59;14054:19;;7625:96:0::1;13654:425:1::0;7625:96:0::1;-1:-1:-1::0;;;;;;;7740:16:0;::::1;::::0;7732:90:::1;;;::::0;-1:-1:-1;;;7732:90:0;;13856:2:1;7732:90:0::1;::::0;::::1;13838:21:1::0;13895:2;13875:18;;;13868:30;13934:34;13914:18;;;13907:62;14005:31;13985:18;;;13978:59;14054:19;;7732:90:0::1;13654:425:1::0;7732:90:0::1;7853:6;::::0;7833:34:::1;::::0;-1:-1:-1;;;;;7853:6:0::1;;7833:19;:34::i;:::-;7878:35;7898:8;7908:4;7878:19;:35::i;:::-;7948:6;::::0;-1:-1:-1;;;;;7948:6:0::1;7958:1;9590:16:::0;;;;;;;;;;;7938:21;7934:127:::1;;7993:6;::::0;-1:-1:-1;;;;;7993:6:0::1;9563:7:::0;9590:16;;;;;;;;;;;7976:73:::1;::::0;7993:6;8001:8;;8011:17:::1;9497:117:::0;7976:73:::1;;7934:127;8100:6;::::0;;-1:-1:-1;;;;;8117:17:0;;::::1;-1:-1:-1::0;;;;;;8117:17:0;::::1;::::0;::::1;::::0;;;8150:40:::1;::::0;8100:6;::::1;::::0;8117:17;8100:6;;8150:40:::1;::::0;8081:16:::1;::::0;8150:40:::1;7614:594;7554:654:::0;:::o;13027:134::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;-1:-1:-1;;;;;13115:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13115:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13027:134::o;12039:557::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;12114:14:::1;::::0;::::1;;12113:15;12105:24;;;::::0;::::1;;12164:4;-1:-1:-1::0;;;;;12148:21:0;::::1;::::0;12140:48:::1;;;::::0;-1:-1:-1;;;12140:48:0;;14286:2:1;12140:48:0::1;::::0;::::1;14268:21:1::0;14325:2;14305:18;;;14298:30;14364:16;14344:18;;;14337:44;14398:18;;12140:48:0::1;14084:338:1::0;12140:48:0::1;12199:11;:31:::0;;-1:-1:-1;;;;;;12199:31:0::1;::::0;-1:-1:-1;;;;;12199:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12245:23:::1;::::0;;-1:-1:-1;;;12245:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12245:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12245:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12245:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12241:348;;12578:8;::::0;::::1;12241:348;12332:9;:29:::0;;-1:-1:-1;;12332:29:0::1;;-1:-1:-1::0;;;;;12332:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12363:6:::1;:22:::0;;-1:-1:-1;;;;;;12363:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12387:15:0;;;-1:-1:-1;12387:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12387:22:0::1;::::0;;::::1;::::0;;12434:6:::1;::::0;12450:9;;12425:55:::1;::::0;12434:6;::::1;::::0;12450:9;;::::1;;-1:-1:-1::0;;12425:8:0::1;:55::i;:::-;12527:9;::::0;12495:62:::1;::::0;12512:4:::1;::::0;12527:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12527:9:0::1;-1:-1:-1::0;;12495:8:0::1;:62::i;12241:348::-;12039:557:::0;:::o;8216:310::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;8283:14:::1;::::0;::::1;;8275:74;;;::::0;-1:-1:-1;;;8275:74:0;;15019:2:1;8275:74:0::1;::::0;::::1;15001:21:1::0;15058:2;15038:18;;;15031:30;15097:34;15077:18;;;15070:62;15168:17;15148:18;;;15141:45;15203:19;;8275:74:0::1;14817:411:1::0;8275:74:0::1;8380:6;::::0;8360:34:::1;::::0;-1:-1:-1;;;;;8380:6:0::1;;8360:19;:34::i;:::-;8424:6;::::0;;-1:-1:-1;;;;;;8441:19:0;::::1;::::0;;;8476:42:::1;::::0;-1:-1:-1;;;;;8424:6:0;;::::1;::::0;8405:16:::1;::::0;8424:6;;8476:42:::1;::::0;8405:16;;8476:42:::1;8264:262;8216:310::o:0;13901:182::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;14054:14:::1;:21:::0;;-1:-1:-1;;14054:21:0::1;14071:4;14054:21;::::0;;13901:182::o;11467:564::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;11549:7:::1;11544:480;;-1:-1:-1::0;;;;;11573:13:0;;::::1;11589:5;11573:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;11573:21:0::1;::::0;;11609:11:::1;::::0;:34;;-1:-1:-1;;;11609:34:0;;::::1;::::0;::::1;15401:74:1::0;;;;15491:18;;;15484:50;;;;11609:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15374:18:1;;11609:34:0::1;15233:307:1::0;11544:480:0::1;11680:17;::::0;:22;11676:135:::1;;11769:6;11749:17;;11731:15;:35;;;;:::i;:::-;:44;11723:72;;;::::0;-1:-1:-1;;;11723:72:0;;15747:2:1;11723:72:0::1;::::0;::::1;15729:21:1::0;15786:2;15766:18;;;15759:30;15825:17;15805:18;;;15798:45;15860:18;;11723:72:0::1;15545:339:1::0;11723:72:0::1;-1:-1:-1::0;;;;;11834:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;11833:14;11825:54;;;::::0;-1:-1:-1;;;11825:54:0;;16091:2:1;11825:54:0::1;::::0;::::1;16073:21:1::0;16130:2;16110:18;;;16103:30;16169:29;16149:18;;;16142:57;16216:18;;11825:54:0::1;15889:351:1::0;11825:54:0::1;-1:-1:-1::0;;;;;11894:13:0;;::::1;;::::0;;;11910:4:::1;11894:13;::::0;;;;;;;;:20;;-1:-1:-1;;11894:20:0::1;::::0;::::1;::::0;;11949:15:::1;11929:17;:35:::0;11979:11:::1;::::0;:33;;-1:-1:-1;;;11979:33:0;;::::1;::::0;::::1;15401:74:1::0;;;;15491:18;;;15484:50;11979:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15374:18:1;;11979:33:0::1;15233:307:1::0;11544:480:0::1;11467:564:::0;;:::o;10282:175::-;7408:6;;10348:4;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;10397:9:::1;::::0;10365:62:::1;::::0;10382:4:::1;::::0;10397:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10397:9:0::1;-1:-1:-1::0;;10365:8:0::1;:62::i;:::-;-1:-1:-1::0;10445:4:0::1;10282:175:::0;:::o;20799:695::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;20861:14:::1;::::0;::::1;;20860:15;20852:52;;;::::0;-1:-1:-1;;;20852:52:0;;16447:2:1;20852:52:0::1;::::0;::::1;16429:21:1::0;16486:2;16466:18;;;16459:30;16525:26;16505:18;;;16498:54;16569:18;;20852:52:0::1;16245:348:1::0;20852:52:0::1;20923:16;::::0;::::1;::::0;::::1;;;20915:53;;;::::0;-1:-1:-1;;;20915:53:0;;16800:2:1;20915:53:0::1;::::0;::::1;16782:21:1::0;16839:2;16819:18;;;16812:30;16878:26;16858:18;;;16851:54;16922:18;;20915:53:0::1;16598:348:1::0;20915:53:0::1;20991:11;::::0;;;::::1;-1:-1:-1::0;;;;;20991:11:0::1;20979:106;;21033:11;:40:::0;;-1:-1:-1;;;;;;21033:40:0::1;21067:4;21033:40:::0;::::1;;::::0;;20979:106:::1;21099:11;::::0;21121:6:::1;::::0;21099:87:::1;::::0;-1:-1:-1;;;21099:87:0;;-1:-1:-1;;;;;21121:6:0;;::::1;21099:87;::::0;::::1;17174:74:1::0;17296:10;21136:12:0::1;17284:23:1::0;17264:18;;;17257:51;17356:18;21158:15:0::1;17344:31:1::0;17324:18;;;17317:59;4818:2:0::1;17392:18:1::0;;;17385:45;21099:11:0;;;::::1;;::::0;:21:::1;::::0;17146:19:1;;21099:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;21212:11:0::1;::::0;21243:6:::1;::::0;-1:-1:-1;;;;;21243:6:0;;::::1;9563:7:::0;9590:16;;;;;;;;;;;;;21212:39;;-1:-1:-1;;;21212:39:0;;::::1;::::0;::::1;391:25:1::0;;;;21212:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;21212:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;21212:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;21212:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;21208:207:::0;::::1;;21323:13;:29:::0;;;;21367:10:::1;:27:::0;21208:207:::1;21425:14;:21:::0;;-1:-1:-1;;21425:21:0::1;21442:4;21425:21;::::0;;21471:15:::1;21457:11;:29:::0;20799:695::o;9622:165::-;9700:4;9717:40;9727:10;9739:9;9750:6;9717:9;:40::i;:::-;-1:-1:-1;9775:4:0;;9622:165;-1:-1:-1;;;9622:165:0:o;21692:296::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;21770:16:::1;::::0;::::1;::::0;::::1;;;21766:111;;;21828:4;-1:-1:-1::0;;;;;21811:22:0;::::1;::::0;21803:62:::1;;;::::0;-1:-1:-1;;;21803:62:0;;17893:2:1;21803:62:0::1;::::0;::::1;17875:21:1::0;17932:2;17912:18;;;17905:30;17971:29;17951:18;;;17944:57;18018:18;;21803:62:0::1;17691:351:1::0;21803:62:0::1;21941:6;::::0;21949:30:::1;::::0;-1:-1:-1;;;21949:30:0;;21973:4:::1;21949:30;::::0;::::1;160:74:1::0;21909:5:0;;-1:-1:-1;;;;;21926:14:0;;::::1;::::0;::::1;::::0;21941:6;;;::::1;::::0;21926:14;;21949:15:::1;::::0;133:18:1;;21949:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21926:54;::::0;-1:-1:-1;;;;;;21926:54:0::1;::::0;;;;;;-1:-1:-1;;;;;18428:55:1;;;21926:54:0::1;::::0;::::1;18410:74:1::0;18500:18;;;18493:34;18383:18;;21926:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14552:366::-:0;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;14637:7:::1;:29:::0;;::::1;14677::::0;;::::1;::::0;::::1;-1:-1:-1::0;;14677:29:0;;;14637;;::::1;14677::::0;::::1;::::0;;14737:21:::1;14697:9:::0;14657;14737:21:::1;:::i;:::-;14717:7;:41:::0;;-1:-1:-1;;14717:41:0::1;::::0;::::1;::::0;;::::1;;;::::0;;14804:9:::1;:17:::0;-1:-1:-1;;14785:36:0::1;::::0;14804:17;;::::1;::::0;::::1;::::0;14785:16:::1;:36;:::i;:::-;14840:7;:17:::0;14769:52:::1;::::0;;::::1;::::0;-1:-1:-1;14840:17:0;;::::1;;:26:::0;-1:-1:-1;14840:26:0::1;14832:78;;;::::0;-1:-1:-1;;;14832:78:0;;19163:2:1;14832:78:0::1;::::0;::::1;19145:21:1::0;19202:2;19182:18;;;19175:30;19241:34;19221:18;;;19214:62;-1:-1:-1;;;19292:18:1;;;19285:37;19339:19;;14832:78:0::1;18961:403:1::0;16254:263:0;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;16363:19:::1;:33:::0;;-1:-1:-1;;;;16363:33:0::1;-1:-1:-1::0;;;16363:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;16407:22:::1;:47:::0;;-1:-1:-1;;16407:47:0::1;::::0;::::1;;;::::0;;16470:39:::1;::::0;2242:41:1;;;16470:39:0::1;::::0;2230:2:1;2215:18;16470:39:0::1;;;;;;;;16254:263:::0;;:::o;10779:680::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;10859:16:::1;::::0;::::1;::::0;::::1;;;10858:17;10850:60;;;::::0;-1:-1:-1;;;10850:60:0;;19571:2:1;10850:60:0::1;::::0;::::1;19553:21:1::0;19610:2;19590:18;;;19583:30;19649:32;19629:18;;;19622:60;19699:18;;10850:60:0::1;19369:354:1::0;10850:60:0::1;10921:20;10954:9;10921:43;;10975:16;11005:10;-1:-1:-1::0;;;;;11005:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10994:40:0::1;;11043:4;11050:10;-1:-1:-1::0;;;;;11050:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10994:74;::::0;-1:-1:-1;;;;;;10994:74:0::1;::::0;;;;;;-1:-1:-1;;;;;20237:15:1;;;10994:74:0::1;::::0;::::1;20219:34:1::0;20289:15;;20269:18;;;20262:43;20131:18;;10994:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11087:6;::::0;-1:-1:-1;;;;;11087:6:0;;::::1;11097:5;11079:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;11079:23:0::1;::::0;;10975:93;;-1:-1:-1;11117:22:0;::::1;11113:200;;11176:10;-1:-1:-1::0;;;;;11176:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11165:43:0::1;;11217:4;11224:10;-1:-1:-1::0;;;;;11224:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11165:77;::::0;-1:-1:-1;;;;;;11165:77:0::1;::::0;;;;;;-1:-1:-1;;;;;20237:15:1;;;11165:77:0::1;::::0;::::1;20219:34:1::0;20289:15;;20269:18;;;20262:43;20131:18;;11165:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11156:6;:86:::0;;-1:-1:-1;;;;;;11156:86:0::1;-1:-1:-1::0;;;;;11156:86:0;;;::::1;::::0;;;::::1;::::0;;11113:200:::1;;;11284:6;:17:::0;;-1:-1:-1;;;;;;11284:17:0::1;-1:-1:-1::0;;;;;11284:17:0;::::1;;::::0;;11113:200:::1;11323:9;:22:::0;;-1:-1:-1;;11323:22:0::1;;-1:-1:-1::0;;;;;11323:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11364:6:::1;::::0;;::::1;-1:-1:-1::0;11356:15:0;;;-1:-1:-1;11356:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;11356:22:0::1;::::0;;::::1;::::0;;11421:9;;11389:62:::1;::::0;11406:4:::1;::::0;11421:9;::::1;;-1:-1:-1::0;;11389:8:0::1;:62::i;14926:191::-:0;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;-1:-1:-1;;;;;15011:23:0;::::1;15003:59;;;::::0;-1:-1:-1;;;15003:59:0;;20518:2:1;15003:59:0::1;::::0;::::1;20500:21:1::0;20557:2;20537:18;;;20530:30;20596:25;20576:18;;;20569:53;20639:18;;15003:59:0::1;20316:347:1::0;15003:59:0::1;15073:15;:36:::0;;-1:-1:-1;;;;;;15073:36:0::1;-1:-1:-1::0;;;;;15073:36:0;;;::::1;::::0;;;::::1;::::0;;14926:191::o;21502:182::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;21569:16:::1;::::0;::::1;::::0;::::1;;;21568:17;21560:58;;;::::0;-1:-1:-1;;;21560:58:0;;20870:2:1;21560:58:0::1;::::0;::::1;20852:21:1::0;20909:2;20889:18;;;20882:30;20948;20928:18;;;20921:58;20996:18;;21560:58:0::1;20668:352:1::0;21560:58:0::1;21637:6;::::0;21629:47:::1;::::0;-1:-1:-1;;;;;21637:6:0;;::::1;::::0;21654:21:::1;21629:47:::0;::::1;;;::::0;21637:6:::1;21629:47:::0;21637:6;21629:47;21654:21;21637:6;21629:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;15322:699:::0;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;15522:16;15502;4879:13:::1;4818:2;4879;:13;:::i;:::-;4862:30;::::0;4645:15:::1;4862:30;:::i;:::-;15492:26;;;;:::i;:::-;15491:47;;;;:::i;:::-;15475:13;:63:::0;15590:13;15573;4879::::1;4818:2;4879;:13;:::i;:::-;4862:30;::::0;4645:15:::1;4862:30;:::i;:::-;15563:23;;;;:::i;:::-;15562:41;;;;:::i;:::-;15549:10;:54:::0;;;15622:13:::1;::::0;:27:::1;;15614:73;;;::::0;-1:-1:-1;;;15614:73:0;;21227:2:1;15614:73:0::1;::::0;::::1;21209:21:1::0;21266:2;21246:18;;;21239:30;21305:34;21285:18;;;21278:62;-1:-1:-1;;;21356:18:1;;;21349:31;21397:19;;15614:73:0::1;21025:397:1::0;15614:73:0::1;15731:6;::::0;-1:-1:-1;;;;;15731:6:0::1;9563:7:::0;9590:16;;;;;;;;;;;5553:6:::1;::::0;15721:23:::1;::::0;15741:3:::1;15721:23;:::i;:::-;15720:44;;;;:::i;:::-;15706:10;;:58;;15698:106;;;::::0;-1:-1:-1;;;15698:106:0;;21629:2:1;15698:106:0::1;::::0;::::1;21611:21:1::0;21668:2;21648:18;;;21641:30;21707:34;21687:18;;;21680:62;-1:-1:-1;;;21758:18:1;;;21751:33;21801:19;;15698:106:0::1;21427:399:1::0;15698:106:0::1;15847:9;4879:13;4818:2;4879;:13;:::i;:::-;4862:30;::::0;4645:15:::1;4862:30;:::i;:::-;15837:19;;;;:::i;:::-;15823:10;;:33;;15815:92;;;::::0;-1:-1:-1;;;15815:92:0;;22033:2:1;15815:92:0::1;::::0;::::1;22015:21:1::0;22072:2;22052:18;;;22045:30;22111:34;22091:18;;;22084:62;-1:-1:-1;;;22162:18:1;;;22155:44;22216:19;;15815:92:0::1;21831:410:1::0;15815:92:0::1;15953:9;4879:13;4818:2;4879;:13;:::i;:::-;4862:30;::::0;4645:15:::1;4862:30;:::i;:::-;15943:19;;;;:::i;:::-;15926:13;;:36;;15918:95;;;::::0;-1:-1:-1;;;15918:95:0;;22033:2:1;15918:95:0::1;::::0;::::1;22015:21:1::0;22072:2;22052:18;;;22045:30;22111:34;22091:18;;;22084:62;-1:-1:-1;;;22162:18:1;;;22155:44;22216:19;;15918:95:0::1;21831:410:1::0;15918:95:0::1;15322:699:::0;;;;:::o;13317:148::-;7408:6;;-1:-1:-1;;;;;7408:6:0;7418:10;7408:20;7400:50;;;;-1:-1:-1;;;7400:50:0;;8984:2:1;7400:50:0;;;8966:21:1;9023:2;9003:18;;;8996:30;-1:-1:-1;;;;;;;;;;;9042:18:1;;;9035:47;9099:18;;7400:50:0;8782:341:1;7400:50:0;-1:-1:-1;;;;;13413:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13413:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13317:148::o;9964:310::-;-1:-1:-1;;;;;10059:20:0;;10051:52;;;;-1:-1:-1;;;10051:52:0;;22448:2:1;10051:52:0;;;22430:21:1;22487:2;22467:18;;;22460:30;-1:-1:-1;;;22506:18:1;;;22499:49;22565:18;;10051:52:0;22246:343:1;10051:52:0;-1:-1:-1;;;;;10122:21:0;;10114:53;;;;-1:-1:-1;;;10114:53:0;;22448:2:1;10114:53:0;;;22430:21:1;22487:2;22467:18;;;22460:30;-1:-1:-1;;;22506:18:1;;;22499:49;22565:18;;10114:53:0;22246:343:1;10114:53:0;-1:-1:-1;;;;;10180:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10233:33;;391:25:1;;;10233:33:0;;364:18:1;10233:33:0;;;;;;;9964:310;;;:::o;16979:1673::-;17058:4;-1:-1:-1;;;;;17083:18:0;;17075:68;;;;-1:-1:-1;;;17075:68:0;;22796:2:1;17075:68:0;;;22778:21:1;22835:2;22815:18;;;22808:30;22874:34;22854:18;;;22847:62;-1:-1:-1;;;22925:18:1;;;22918:35;22970:19;;17075:68:0;22594:401:1;17075:68:0;-1:-1:-1;;;;;17162:16:0;;17154:64;;;;-1:-1:-1;;;17154:64:0;;23202:2:1;17154:64:0;;;23184:21:1;23241:2;23221:18;;;23214:30;23280:34;23260:18;;;23253:62;-1:-1:-1;;;23331:18:1;;;23324:33;23374:19;;17154:64:0;23000:399:1;17154:64:0;17246:1;17237:6;:10;17229:64;;;;-1:-1:-1;;;17229:64:0;;23606:2:1;17229:64:0;;;23588:21:1;23645:2;23625:18;;;23618:30;23684:34;23664:18;;;23657:62;-1:-1:-1;;;23735:18:1;;;23728:39;23784:19;;17229:64:0;23404:405:1;17229:64:0;-1:-1:-1;;;;;17392:13:0;;17304:8;17392:13;;;:7;:13;;;;;;17304:8;;;;17392:13;;17388:162;;;17428:4;17422:10;;17388:162;;;-1:-1:-1;;;;;17454:11:0;;;;;;:7;:11;;;;;;;;17450:100;;;17489:4;17482:11;;17450:100;;;-1:-1:-1;17534:4:0;17450:100;17564:20;17575:4;17581:2;17564:10;:20::i;:::-;17560:371;;;17605:14;;;;17601:319;;17645:5;17640:265;;17675:34;;-1:-1:-1;;;17675:34:0;;24016:2:1;17675:34:0;;;23998:21:1;24055:2;24035:18;;;24028:30;24094:26;24074:18;;;24067:54;24138:18;;17675:34:0;23814:348:1;17640:265:0;-1:-1:-1;;;;;17740:31:0;;;;;;:25;:31;;;;;;;;17739:32;:66;;;;-1:-1:-1;;;;;;17776:29:0;;;;;;:25;:29;;;;;;;;17775:30;17739:66;17735:170;;;17830:55;;-1:-1:-1;;;17830:55:0;;24369:2:1;17830:55:0;;;24351:21:1;24408:2;24388:18;;;24381:30;24447:34;24427:18;;;24420:62;-1:-1:-1;;;24498:18:1;;;24491:43;24551:19;;17830:55:0;24167:409:1;17735:170:0;17947:4;17943:632;;;17973:6;;-1:-1:-1;;;17973:6:0;;;;17968:596;;18004:19;;-1:-1:-1;;;18004:19:0;;;;18000:549;;;18097:4;18048:28;9590:16;;;;;;;;;;;18154:13;;18130:37;;18126:404;;18214:10;;18255:22;;;;18251:97;;;18312:13;;18302:6;;-1:-1:-1;;;;;18302:6:0;9563:7;9590:16;;;;;;;;;;;5553:6;;18292:33;;;:::i;:::-;18291:54;;;;:::i;:::-;18281:64;;18251:97;18402:7;18378:20;:31;18374:72;;18436:7;18413:30;;18374:72;18472:34;18485:20;18472:12;:34::i;:::-;18169:361;18126:404;18025:524;18000:549;18592:52;18609:4;18615:2;18619:6;18627:3;18632:4;18638:5;18592:16;:52::i;:::-;18585:59;16979:1673;-1:-1:-1;;;;;;;16979:1673:0:o;22451:1055::-;22570:4;22591:20;22602:4;22608:2;22591:10;:20::i;:::-;22587:228;;;22646:11;;:39;;-1:-1:-1;;;22646:39:0;;-1:-1:-1;;;;;24862:15:1;;;22646:39:0;;;24844:34:1;24914:15;;;24894:18;;;24887:43;24946:18;;;24939:34;;;22615:12:0;;22646:11;;;;;:21;;24756:18:1;;22646:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;22646:39:0;;;;;;;;-1:-1:-1;;22646:39:0;;;;;;;;;;;;:::i;:::-;;;22642:122;;22753:8;;;22642:122;22736:5;-1:-1:-1;22782:7:0;22778:26;;22793:8;;;22778:26;22613:202;22587:228;-1:-1:-1;;;;;22859:25:0;;22825:12;22859:25;;;:19;:25;;;;;;22840:4;;22859:25;;;:52;;-1:-1:-1;;;;;;22888:23:0;;;;;;:19;:23;;;;;;;;22859:52;22855:99;;;-1:-1:-1;22937:5:0;22855:99;-1:-1:-1;;;;;22964:13:0;;:7;:13;;;;;;;;;;:23;;22981:6;;22964:7;:23;;22981:6;;22964:23;:::i;:::-;;;;-1:-1:-1;22998:22:0;;-1:-1:-1;23024:7:0;23023:55;;23072:6;23023:55;;;23035:34;23045:4;23051:6;23059:3;23064:4;23035:9;:34::i;:::-;22998:80;;23104:14;23089:7;:11;23097:2;-1:-1:-1;;;;;23089:11:0;-1:-1:-1;;;;;23089:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;23149:2;-1:-1:-1;;;;;23134:34:0;23143:4;-1:-1:-1;;;;;23134:34:0;;23153:14;23134:34;;;;391:25:1;;379:2;364:18;;245:177;23134:34:0;;;;;;;;23184:16;;;;;;;23179:298;;23217:28;23236:4;23242:2;23217:18;:28::i;:::-;23265:16;;;;;;;23264:17;:41;;;;;23285:20;23296:4;23302:2;23285:10;:20::i;:::-;23264:77;;;;-1:-1:-1;;;;;;23310:31:0;;;;;;:25;:31;;;;;;;;23309:32;23264:77;:111;;;;-1:-1:-1;;;;;;23346:29:0;;;;;;:25;:29;;;;;;;;23345:30;23264:111;:121;;;;;23380:5;23379:6;23264:121;23260:206;;;23406:44;;-1:-1:-1;;;23406:44:0;;25186:2:1;23406:44:0;;;25168:21:1;25225:2;25205:18;;;25198:30;25264:34;25244:18;;;25237:62;-1:-1:-1;;;25315:18:1;;;25308:32;25357:19;;23406:44:0;24984:398:1;23260:206:0;-1:-1:-1;23494:4:0;;22451:1055;-1:-1:-1;;;;;;;;22451:1055:0:o;16525:446::-;16626:6;;16594:4;;-1:-1:-1;;;;;16618:14:0;;;16626:6;;16618:14;;;;:43;;-1:-1:-1;16655:6:0;;-1:-1:-1;;;;;16649:12:0;;;16655:6;;16649:12;;16618:43;:79;;;;-1:-1:-1;16691:6:0;;-1:-1:-1;;;;;16691:6:0;16678:9;:19;;16618:79;:118;;;;-1:-1:-1;;;;;;16715:21:0;;;;;;:17;:21;;;;;;;;16714:22;16618:118;:159;;;;-1:-1:-1;;;;;;16754:23:0;;;;;;:17;:23;;;;;;;;16753:24;16618:159;:186;;;;-1:-1:-1;;;;;;16794:10:0;;5693:42;16794:10;;16618:186;:219;;;;-1:-1:-1;;;;;;16821:16:0;;;;16618:219;:257;;;;-1:-1:-1;;;;;;16854:21:0;;16870:4;16854:21;;16618:257;:302;;;;-1:-1:-1;16908:11:0;;-1:-1:-1;;;;;16892:28:0;;;16908:11;;;;;16892:28;;16618:302;:345;;;;-1:-1:-1;16951:11:0;;-1:-1:-1;;;;;16937:26:0;;;16951:11;;;;;16937:26;;16618:345;16611:352;16525:446;-1:-1:-1;;;16525:446:0:o;18660:1560::-;6364:6;:13;;-1:-1:-1;;;;6364:13:0;-1:-1:-1;;;6364:13:0;;;18743:30:::1;::::0;;::::1;::::0;::::1;::::0;;18766:7:::1;18743:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;6364:13;18788:21;18784:60:::1;;18826:7;;;18784:60;18880:4;18860:26;::::0;;;:11:::1;:26;::::0;;;;;;;18895:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18895:9:0::1;18860:46:::0;;;;;;;;-1:-1:-1;;18860:67:0::1;18856:166;;18964:4;18944:26;::::0;;;:11:::1;:26;::::0;;;;;;;18979:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18979:9:0::1;18944:46:::0;;;;;;;-1:-1:-1;;18944:66:0;;18856:166:::1;19034:17;19119:1;19099:6;:16;;;19055:60;;19079:6;:16;;;19056:39;;:20;:39;;;;:::i;:::-;19055:60;;;;:::i;:::-;19054:66;;;;:::i;:::-;19034:86:::0;-1:-1:-1;19131:15:0::1;19149:32;19034:86:::0;19149:20;:32:::1;:::i;:::-;19226:16;::::0;;19240:1:::1;19226:16:::0;;;;;::::1;::::0;;19131:50;;-1:-1:-1;19202:21:0::1;::::0;19226:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19226:16:0::1;19202:40;;19271:4;19253;19258:1;19253:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;19253:23:0::1;;;-1:-1:-1::0;;;;;19253:23:0::1;;;::::0;::::1;19297:9;;;;;;;;;-1:-1:-1::0;;;;;19297:9:0::1;-1:-1:-1::0;;;;;19297:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19287:4;19292:1;19287:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19287:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19330:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;19330:186:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;19405:7;;19427:1:::1;::::0;19443:4;;19470::::1;::::0;19490:15:::1;::::0;19330:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19326:233;;19541:7;;;;;;19326:233;19592:21;19571:18;19678:7:::0;19652:22:::1;19665:9:::0;19592:21;19652:22:::1;:::i;:::-;19651:34;;;;:::i;:::-;19624:61:::0;-1:-1:-1;19702:13:0;;19698:400:::1;;19736:9;::::0;:222:::1;::::0;-1:-1:-1;;;19736:222:0;;19813:4:::1;19736:222;::::0;::::1;26782:34:1::0;26832:18;;;26825:34;;;19865:1:0::1;26875:18:1::0;;;26868:34;;;26918:18;;;26911:34;5693:42:0::1;26961:19:1::0;;;26954:44;19928:15:0::1;27014:19:1::0;;;27007:35;19736:9:0::1;::::0;;::::1;-1:-1:-1::0;;;;;19736:9:0::1;::::0;:25:::1;::::0;19769:16;;26693:19:1;;19736:222:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;19736:222:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;19736:222:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;19732:355;;20065:7;;;;;;;;19732:355;-1:-1:-1::0;;19983:40:0::1;::::0;;27538:25:1;;;27594:2;27579:18;;27572:34;;;19983:40:0::1;::::0;-1:-1:-1;27511:18:1;19983:40:0::1;;;;;;;19732:355;20146:15;::::0;:66:::1;::::0;20110:12:::1;::::0;-1:-1:-1;;;;;20146:15:0::1;::::0;20202:5:::1;::::0;20174:21:::1;::::0;20110:12;20146:66;20110:12;20146:66;20174:21;20146:15;20202:5;20146:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;6388:1:0::1;-1:-1:-1::0;6400:6:0;:14;;-1:-1:-1;;;;6400:14:0;;;18660:1560::o;23514:767::-;23602:7;23622:18;23655:3;23651:205;;;-1:-1:-1;23688:9:0;:16;;;23651:205;;;23726:4;23722:134;;;-1:-1:-1;23760:9:0;:17;;;;;;23722:134;;;-1:-1:-1;23823:9:0;:21;;;;;;23722:134;23870:10;23884:1;23870:15;23866:39;;23896:6;23889:13;;;;;23866:39;23927:11;;;;;-1:-1:-1;;;;;23927:11:0;23951:4;23919:37;:73;;;;;23973:13;23990:2;23973:19;;23919:73;23915:101;;;-1:-1:-1;24009:4:0;23915:101;24026:17;5553:6;24046:19;24055:10;24046:6;:19;:::i;:::-;:38;;;;:::i;:::-;24026:58;-1:-1:-1;24099:13:0;;24095:141;;24145:4;24129:7;:22;;;;;;;;;;:35;;24155:9;;24129:7;:35;;24155:9;;24129:35;:::i;:::-;;;;-1:-1:-1;;24184:40:0;;391:25:1;;;24207:4:0;;-1:-1:-1;;;;;24184:40:0;;;;;379:2:1;364:18;24184:40:0;;;;;;;24095:141;24255:18;24264:9;24255:6;:18;:::i;20228:563::-;20311:16;;;;;;;20310:17;20302:65;;;;-1:-1:-1;;;20302:65:0;;28029:2:1;20302:65:0;;;28011:21:1;28068:2;28048:18;;;28041:30;28107:34;28087:18;;;28080:62;-1:-1:-1;;;28158:18:1;;;28151:33;28201:19;;20302:65:0;27827:399:1;20302:65:0;20383:20;20394:4;20400:2;20383:10;:20::i;:::-;20382:21;:37;;;;-1:-1:-1;20413:6:0;;-1:-1:-1;;;;;20407:12:0;;;20413:6;;20407:12;20382:37;20378:406;;;-1:-1:-1;;;;;20436:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;20436:30:0;;;20462:4;20436:30;;;;;;20481:19;:25;;;;;:32;;;;;;;;;;20528:16;:23;;-1:-1:-1;;20528:23:0;20436:30;20528:23;;;;;20578:11;;;;20566:114;;20624:11;:40;;-1:-1:-1;;;;;;20624:40:0;20658:4;20624:40;;;;;20566:114;20694:19;:26;;-1:-1:-1;;;;20694:26:0;-1:-1:-1;;;20694:26:0;;;20740:32;;-1:-1:-1;2242:41:1;;20740:32:0;;2230:2:1;2215:18;20740: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:456::-;3102:6;3110;3118;3171:2;3159:9;3150:7;3146:23;3142:32;3139:52;;;3187:1;3184;3177:12;3139:52;3226:9;3213:23;3245:31;3270:5;3245:31;:::i;:::-;3295:5;-1:-1:-1;3352:2:1;3337:18;;3324:32;3365:33;3324:32;3365:33;:::i;:::-;3025:456;;3417:7;;-1:-1:-1;;;3471:2:1;3456:18;;;;3443:32;;3025:456::o;3486:127::-;3547:10;3542:3;3538:20;3535:1;3528:31;3578:4;3575:1;3568:15;3602:4;3599:1;3592:15;3618:275;3689:2;3683:9;3754:2;3735:13;;-1:-1:-1;;3731:27:1;3719:40;;3789:18;3774:34;;3810:22;;;3771:62;3768:88;;;3836:18;;:::i;:::-;3872:2;3865:22;3618:275;;-1:-1:-1;3618:275:1:o;3898:183::-;3958:4;3991:18;3983:6;3980:30;3977:56;;;4013:18;;:::i;:::-;-1:-1:-1;4058:1:1;4054:14;4070:4;4050:25;;3898:183::o;4086:662::-;4140:5;4193:3;4186:4;4178:6;4174:17;4170:27;4160:55;;4211:1;4208;4201:12;4160:55;4247:6;4234:20;4273:4;4297:60;4313:43;4353:2;4313:43;:::i;:::-;4297:60;:::i;:::-;4391:15;;;4477:1;4473:10;;;;4461:23;;4457:32;;;4422:12;;;;4501:15;;;4498:35;;;4529:1;4526;4519:12;4498:35;4565:2;4557:6;4553:15;4577:142;4593:6;4588:3;4585:15;4577:142;;;4659:17;;4647:30;;4697:12;;;;4610;;4577:142;;;-1:-1:-1;4737:5:1;4086:662;-1:-1:-1;;;;;;4086:662:1:o;4753:1215::-;4871:6;4879;4932:2;4920:9;4911:7;4907:23;4903:32;4900:52;;;4948:1;4945;4938:12;4900:52;4988:9;4975:23;5017:18;5058:2;5050:6;5047:14;5044:34;;;5074:1;5071;5064:12;5044:34;5112:6;5101:9;5097:22;5087:32;;5157:7;5150:4;5146:2;5142:13;5138:27;5128:55;;5179:1;5176;5169:12;5128:55;5215:2;5202:16;5237:4;5261:60;5277:43;5317:2;5277:43;:::i;5261:60::-;5355:15;;;5437:1;5433:10;;;;5425:19;;5421:28;;;5386:12;;;;5461:19;;;5458:39;;;5493:1;5490;5483:12;5458:39;5517:11;;;;5537:217;5553:6;5548:3;5545:15;5537:217;;;5633:3;5620:17;5650:31;5675:5;5650:31;:::i;:::-;5694:18;;5570:12;;;;5732;;;;5537:217;;;5773:5;-1:-1:-1;;5816:18:1;;5803:32;;-1:-1:-1;;5847:16:1;;;5844:36;;;5876:1;5873;5866:12;5844:36;;5899:63;5954:7;5943:8;5932:9;5928:24;5899:63;:::i;:::-;5889:73;;;4753:1215;;;;;:::o;6162:159::-;6229:20;;6289:6;6278:18;;6268:29;;6258:57;;6311:1;6308;6301:12;6258:57;6162:159;;;:::o;6326:328::-;6400:6;6408;6416;6469:2;6457:9;6448:7;6444:23;6440:32;6437:52;;;6485:1;6482;6475:12;6437:52;6508:28;6526:9;6508:28;:::i;:::-;6498:38;;6555:37;6588:2;6577:9;6573:18;6555:37;:::i;:::-;6545:47;;6611:37;6644:2;6633:9;6629:18;6611:37;:::i;:::-;6601:47;;6326:328;;;;;:::o;6659:382::-;6724:6;6732;6785:2;6773:9;6764:7;6760:23;6756:32;6753:52;;;6801:1;6798;6791:12;6753:52;6840:9;6827:23;6859:31;6884:5;6859:31;:::i;7046:180::-;7105:6;7158:2;7146:9;7137:7;7133:23;7129:32;7126:52;;;7174:1;7171;7164:12;7126:52;-1:-1:-1;7197:23:1;;7046:180;-1:-1:-1;7046:180:1:o;7478:256::-;7544:6;7552;7605:2;7593:9;7584:7;7580:23;7576:32;7573:52;;;7621:1;7618;7611:12;7573:52;7644:28;7662:9;7644:28;:::i;:::-;7634:38;;7691:37;7724:2;7713:9;7709:18;7691:37;:::i;:::-;7681:47;;7478:256;;;;;:::o;7739:388::-;7807:6;7815;7868:2;7856:9;7847:7;7843:23;7839:32;7836:52;;;7884:1;7881;7874:12;7836:52;7923:9;7910:23;7942:31;7967:5;7942:31;:::i;:::-;7992:5;-1:-1:-1;8049:2:1;8034:18;;8021:32;8062:33;8021:32;8062:33;:::i;8392:385::-;8478:6;8486;8494;8502;8555:3;8543:9;8534:7;8530:23;8526:33;8523:53;;;8572:1;8569;8562:12;8523:53;-1:-1:-1;;8595:23:1;;;8665:2;8650:18;;8637:32;;-1:-1:-1;8716:2:1;8701:18;;8688:32;;8767:2;8752:18;8739:32;;-1:-1:-1;8392:385:1;-1:-1:-1;8392:385:1:o;9401:127::-;9462:10;9457:3;9453:20;9450:1;9443:31;9493:4;9490:1;9483:15;9517:4;9514:1;9507:15;9533:422;9622:1;9665:5;9622:1;9679:270;9700:7;9690:8;9687:21;9679:270;;;9759:4;9755:1;9751:6;9747:17;9741:4;9738:27;9735:53;;;9768:18;;:::i;:::-;9818:7;9808:8;9804:22;9801:55;;;9838:16;;;;9801:55;9917:22;;;;9877:15;;;;9679:270;;;9683:3;9533:422;;;;;:::o;9960:806::-;10009:5;10039:8;10029:80;;-1:-1:-1;10080:1:1;10094:5;;10029:80;10128:4;10118:76;;-1:-1:-1;10165:1:1;10179:5;;10118:76;10210:4;10228:1;10223:59;;;;10296:1;10291:130;;;;10203:218;;10223:59;10253:1;10244:10;;10267:5;;;10291:130;10328:3;10318:8;10315:17;10312:43;;;10335:18;;:::i;:::-;-1:-1:-1;;10391:1:1;10377:16;;10406:5;;10203:218;;10505:2;10495:8;10492:16;10486:3;10480:4;10477:13;10473:36;10467:2;10457:8;10454:16;10449:2;10443:4;10440:12;10436:35;10433:77;10430:159;;;-1:-1:-1;10542:19:1;;;10574:5;;10430:159;10621:34;10646:8;10640:4;10621:34;:::i;:::-;10691:6;10687:1;10683:6;10679:19;10670:7;10667:32;10664:58;;;10702:18;;:::i;:::-;10740:20;;9960:806;-1:-1:-1;;;9960:806:1:o;10771:140::-;10829:5;10858:47;10899:4;10889:8;10885:19;10879:4;10858:47;:::i;10916:168::-;10989:9;;;11020;;11037:15;;;11031:22;;11017:37;11007:71;;11058:18;;:::i;11089:128::-;11156:9;;;11177:11;;;11174:37;;;11191:18;;:::i;11572:127::-;11633:10;11628:3;11624:20;11621:1;11614:31;11664:4;11661:1;11654:15;11688:4;11685:1;11678:15;12051:197;12089:3;12117:6;12158:2;12151:5;12147:14;12185:2;12176:7;12173:15;12170:41;;12191:18;;:::i;:::-;12240:1;12227:15;;12051:197;-1:-1:-1;;;12051:197:1:o;12253:125::-;12318:9;;;12339:10;;;12336:36;;;12352:18;;:::i;13081:217::-;13121:1;13147;13137:132;;13191:10;13186:3;13182:20;13179:1;13172:31;13226:4;13223:1;13216:15;13254:4;13251:1;13244:15;13137:132;-1:-1:-1;13283:9:1;;13081:217::o;14427:385::-;14506:6;14514;14567:2;14555:9;14546:7;14542:23;14538:32;14535:52;;;14583:1;14580;14573:12;14535:52;14615:9;14609:16;14634:31;14659:5;14634:31;:::i;:::-;14734:2;14719:18;;14713:25;14684:5;;-1:-1:-1;14747:33:1;14713:25;14747:33;:::i;17441:245::-;17520:6;17528;17581:2;17569:9;17560:7;17556:23;17552:32;17549:52;;;17597:1;17594;17587:12;17549:52;-1:-1:-1;;17620:16:1;;17676:2;17661:18;;;17655:25;17620:16;;17655:25;;-1:-1:-1;17441:245:1:o;18047:184::-;18117:6;18170:2;18158:9;18149:7;18145:23;18141:32;18138:52;;;18186:1;18183;18176:12;18138:52;-1:-1:-1;18209:16:1;;18047:184;-1:-1:-1;18047:184:1:o;18538:245::-;18605:6;18658:2;18646:9;18637:7;18633:23;18629:32;18626:52;;;18674:1;18671;18664:12;18626:52;18706:9;18700:16;18725:28;18747:5;18725:28;:::i;18788:168::-;18855:6;18881:10;;;18893;;;18877:27;;18916:11;;;18913:37;;;18930:18;;:::i;:::-;18913:37;18788:168;;;;:::o;19728:251::-;19798:6;19851:2;19839:9;19830:7;19826:23;19822:32;19819:52;;;19867:1;19864;19857:12;19819:52;19899:9;19893:16;19918:31;19943:5;19918:31;:::i;25387:1026::-;25649:4;25697:3;25686:9;25682:19;25728:6;25717:9;25710:25;25754:2;25792:6;25787:2;25776:9;25772:18;25765:34;25835:3;25830:2;25819:9;25815:18;25808:31;25859:6;25894;25888:13;25925:6;25917;25910:22;25963:3;25952:9;25948:19;25941:26;;26002:2;25994:6;25990:15;25976:29;;26023:1;26033:218;26047:6;26044:1;26041:13;26033:218;;;26112:13;;-1:-1:-1;;;;;26108:62:1;26096:75;;26226:15;;;;26191:12;;;;26069:1;26062:9;26033:218;;;-1:-1:-1;;;;;;;26307:55:1;;;;26302:2;26287:18;;26280:83;-1:-1:-1;;;26394:3:1;26379:19;26372:35;26268:3;25387:1026;-1:-1:-1;;;25387:1026:1:o;27053:306::-;27141:6;27149;27157;27210:2;27198:9;27189:7;27185:23;27181:32;27178:52;;;27226:1;27223;27216:12;27178:52;27255:9;27249:16;27239:26;;27305:2;27294:9;27290:18;27284:25;27274:35;;27349:2;27338:9;27334:18;27328:25;27318:35;;27053:306;;;;;:::o

Swarm Source

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