ETH Price: $3,309.12 (+0.00%)

Token

Lucky AI (LAI)
 

Overview

Max Total Supply

300,000,000 LAI

Holders

51

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
LuckyAI

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-03-17
*/

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

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

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

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

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

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

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

contract JackbotPrizes {
    address private owner;
    uint256 private jackpotFundAmount;
    uint256 private reserveFundAmount;
    uint256 private dailyRaffleFundAmount;

    struct LoadRatios {
        uint16 jackpot;
        uint16 reserve;
        uint16 dailyRaffle;
    }    

    struct Prizes {
        uint16 first;
        uint16 second;
        uint16 third;
    }

    LoadRatios private _loadRatios = LoadRatios({
        jackpot: 7000,
        reserve: 2000,
        dailyRaffle: 1000
    });

    Prizes private _jackpotPrizes = Prizes({
        first: 6500,
        second: 2500,
        third: 1000
    });

    Prizes private _dailyRafflePrizes = Prizes({
        first: 6500,
        second: 2500,
        third: 1000
    });

    uint256 masterDivisor = 10000;

    constructor() {
        owner = msg.sender;
    }

    modifier onlyOwner() { require(owner == msg.sender, "Caller =/= owner."); _; }

    receive() external payable {
        revert("Do not send BNB directly here, please call load().");
    }

    function getJackpotFundAmount() external view returns (uint256) {
        return jackpotFundAmount;
    }

    function getReserveFundAmount() external view returns (uint256) {
        return reserveFundAmount;
    }

    function getDailyRaffleAmount() external view returns (uint256) {
        return dailyRaffleFundAmount;
    }

    function getRatios() external view returns (uint16, uint16, uint16) {
        return (_loadRatios.jackpot, _loadRatios.reserve, _loadRatios.dailyRaffle);
    }

    function getDailyRafflePrizes() external view returns (uint16, uint16, uint16) {
        return (_dailyRafflePrizes.first, _dailyRafflePrizes.second, _dailyRafflePrizes.third);
    }

    function getJackpotPrizes() external view returns (uint16, uint16, uint16) {
        return (_jackpotPrizes.first, _jackpotPrizes.second, _jackpotPrizes.third);
    }

    function setLoadRatios(uint16 jackpot, uint16 reserve, uint16 dailyRaffle) external onlyOwner {
        require (jackpot + reserve + dailyRaffle == 10000, "Must equal 10000, or 100%.");
        _loadRatios.jackpot = jackpot;
        _loadRatios.reserve = reserve;
        _loadRatios.dailyRaffle = dailyRaffle;
    }

    function setJackpotPrizes(uint16 first, uint16 second, uint16 third) external onlyOwner {
        require (first + second + third == 10000, "Must equal 10000, or 100%.");
        _jackpotPrizes.first = first;
        _jackpotPrizes.second = second;
        _jackpotPrizes.third = third;
    }

    function setDailyRafflePrizes(uint16 first, uint16 second, uint16 third) external onlyOwner {
        require (first + second + third == 10000, "Must equal 10000, or 100%.");
        _dailyRafflePrizes.first = first;
        _dailyRafflePrizes.second = second;
        _dailyRafflePrizes.third = third;
    }

    function load() external payable {
        uint256 amount = msg.value;
        LoadRatios memory loadRatios = _loadRatios;
        uint256 jackpotAmount = (loadRatios.jackpot * amount) / masterDivisor;
        uint256 reserveAmount = (loadRatios.reserve * amount) / masterDivisor;
        uint256 dailyRaffleAmount = amount - (jackpotAmount + reserveAmount);
        jackpotFundAmount += jackpotAmount;
        reserveFundAmount += reserveAmount;
        dailyRaffleFundAmount += dailyRaffleAmount;
    }

    function allocateReserve() public onlyOwner {
        jackpotFundAmount += reserveFundAmount;
        delete reserveFundAmount;
    }

    function distributeJackpot(address first, address second, address third, uint256 gasAmount) external onlyOwner {
        require(gasAmount >= 90000, "Must use gas value of at least 30,000.");
        require(first != address(0) && second != address(0) && third != address(0), "No winner cann be zero address.");
        require(first != address(0xdead) && second != address(0xdead) && third != address(0xdead), "No winner cann be dead address.");
        Prizes memory prizes = _jackpotPrizes;
        bool success;
        uint256 firstPrize = (jackpotFundAmount * prizes.first) / masterDivisor;
        uint256 secondPrize = (jackpotFundAmount * prizes.second) / masterDivisor;
        uint256 thirdPrize = jackpotFundAmount - (firstPrize + secondPrize);
        delete jackpotFundAmount;
        (success,) = first.call{value: firstPrize, gas: gasAmount}("");
        (success,) = second.call{value: secondPrize, gas: gasAmount}("");
        (success,) = third.call{value: thirdPrize, gas: gasAmount}("");
        allocateReserve();
    }

    function distributeDailyRaffle(address first, address second, address third, uint256 gasAmount) external onlyOwner {
        require(gasAmount >= 30000, "Must use gas value of at least 30,000.");
        require(first != address(0) && second != address(0) && third != address(0), "No winner cann be zero address.");
        require(first != address(0xdead) && second != address(0xdead) && third != address(0xdead), "No winner cann be dead address.");
        Prizes memory prizes = _dailyRafflePrizes;
        bool success;
        uint256 firstPrize = (dailyRaffleFundAmount * prizes.first) / masterDivisor;
        uint256 secondPrize = (dailyRaffleFundAmount * prizes.second) / masterDivisor;
        uint256 thirdPrize = dailyRaffleFundAmount - (firstPrize + secondPrize);
        delete dailyRaffleFundAmount;
        (success,) = first.call{value: firstPrize, gas: gasAmount}("");
        (success,) = second.call{value: secondPrize, gas: gasAmount}("");
        (success,) = third.call{value: thirdPrize, gas: gasAmount}("");
    }
}


contract LuckyAI 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;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 300_000_000;
    string constant private _name = "Lucky AI";
    string constant private _symbol = "LAI";
    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 game;
        uint16 totalSwap;
    }

    Fees public _taxRates = Fees({
        buyFee: 800,
        sellFee: 800,
        transferFee: 600
    });

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

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant public maxRoundtripTax = 2500;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0x87eDCDb18F72F8293F070F61D2CBEE9B1B19520d);
    address payable public liquidityWallet = payable(0xCc2D319F29fC6F8907856AA903C6345C3806a44d);

    uint256 private _maxTxAmount = (_tTotal * 1) / 100;
    uint256 private _maxWalletSize = (_tTotal * 1) / 100;
    
    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;
    Protections protections;
    uint256 public launchStamp;

    JackbotPrizes public jackbotPrizes;

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

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

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

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

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

        jackbotPrizes = new JackbotPrizes();

        finalizeTransfer(_owner, 0x25f41B538F0a7B7802bd257e793dD023D31D08B0, (_tTotal * 6 / 100), false, false, true);
    }

    receive() external payable {}

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

    address private _owner;

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

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        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 {
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

    address public dappOperator = 0x1Ad5c6E5E59F9ea5964e1C83d23c86b35Ad6586E;

    function setDappOperator(address newOperator) external onlyOwner {
        dappOperator = newOperator;
    }

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function 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;
            protections.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;
            protections.setLpPair(pair, true);
        }
    }

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

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

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

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

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        protections.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.");
        require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed roundtrip maximum.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 liquidity, uint16 marketing, uint16 game) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.game = game;
        _ratios.totalSwap = marketing + game + liquidity;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
    }

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

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

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

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

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

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

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

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

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

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

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

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

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled
                   && !presaleAddresses[to]
                   && !presaleAddresses[from]
                ) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        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,
                liquidityWallet,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        bool success;
        uint256 gameBalance = (amtBalance * ratios.game) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - gameBalance;
        if (ratios.marketing > 0) {
            (success,) = marketingWallet.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.game > 0) {
            try jackbotPrizes.load{value: gameBalance, gas: 100_000}() {} catch {}
        }
    }

    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(protections) == address(0)){
                protections = Protections(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(protections) == address(0)){
            protections = Protections(address(this));
        }
        try protections.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
        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 {
        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 protections.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, buy, sell, amount) : 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, bool buy, bool sell, uint256 amount) 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(protections) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }

    function getJackpotFundAmount() public view returns (uint256) {
        return jackbotPrizes.getJackpotFundAmount();
    }

    function getReserveFundAmount() public view returns (uint256) {
        return jackbotPrizes.getReserveFundAmount();
    }

    function getDailyRaffleAmount() public view returns (uint256) {
        return jackbotPrizes.getDailyRaffleAmount();
    }

    function getFunds() public view returns (uint256 jackpotFund, uint256 reserveFund, uint256 dailyRaffleFund) {
        return (getJackpotFundAmount(), getReserveFundAmount(), getDailyRaffleAmount());
    }

    function getRatios() external view returns (uint256 jackpot, uint256 reserveFund, uint256 dailyRaffle) {
        return jackbotPrizes.getRatios();
    }

    function getJackpotPrizes() external view returns (uint16 first, uint16 second, uint16 third) {
        return jackbotPrizes.getJackpotPrizes();
    }

    function getDailyRafflePrizes() external view returns (uint16 first, uint16 second, uint16 third) {
        return jackbotPrizes.getDailyRafflePrizes();
    }

    function setLoadRatios(uint16 jackpot, uint16 reserve, uint16 dailyRaffle) external onlyOwner {
        jackbotPrizes.setLoadRatios(jackpot, reserve, dailyRaffle);
    }

    function setJackpotPrizes(uint16 first, uint16 second, uint16 third) external onlyOwner {
        jackbotPrizes.setJackpotPrizes(first, second, third);
    }

    function setDailyRafflePrizes(uint16 first, uint16 second, uint16 third) external onlyOwner {
        jackbotPrizes.setDailyRafflePrizes(first, second, third);
    }

    function load() external payable {
        jackbotPrizes.load{value: msg.value}();
    }

    function allocateReserve() external {
        require(msg.sender == dappOperator || msg.sender == _owner, "Only the DAPP operator or the owner can call this function.");
        jackbotPrizes.allocateReserve();
    }

    function distributeJackpot(address first, address second, address third, uint256 gasAmount) external {
        require(msg.sender == dappOperator || msg.sender == _owner, "Only the DAPP operator or the owner can call this function.");
        jackbotPrizes.distributeJackpot(first, second, third, gasAmount);
    }

    function distributeDailyRaffle(address first, address second, address third, uint256 gasAmount) external {
        require(msg.sender == dappOperator || msg.sender == _owner, "Only the DAPP operator or the owner can call this function.");
        jackbotPrizes.distributeDailyRaffle(first, second, third, gasAmount);
    }
}

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":"game","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":[],"name":"allocateReserve","outputs":[],"stateMutability":"nonpayable","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":"dappOperator","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"first","type":"address"},{"internalType":"address","name":"second","type":"address"},{"internalType":"address","name":"third","type":"address"},{"internalType":"uint256","name":"gasAmount","type":"uint256"}],"name":"distributeDailyRaffle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"first","type":"address"},{"internalType":"address","name":"second","type":"address"},{"internalType":"address","name":"third","type":"address"},{"internalType":"uint256","name":"gasAmount","type":"uint256"}],"name":"distributeJackpot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDailyRaffleAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDailyRafflePrizes","outputs":[{"internalType":"uint16","name":"first","type":"uint16"},{"internalType":"uint16","name":"second","type":"uint16"},{"internalType":"uint16","name":"third","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFunds","outputs":[{"internalType":"uint256","name":"jackpotFund","type":"uint256"},{"internalType":"uint256","name":"reserveFund","type":"uint256"},{"internalType":"uint256","name":"dailyRaffleFund","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getJackpotFundAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getJackpotPrizes","outputs":[{"internalType":"uint16","name":"first","type":"uint16"},{"internalType":"uint16","name":"second","type":"uint16"},{"internalType":"uint16","name":"third","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRatios","outputs":[{"internalType":"uint256","name":"jackpot","type":"uint256"},{"internalType":"uint256","name":"reserveFund","type":"uint256"},{"internalType":"uint256","name":"dailyRaffle","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserveFundAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"jackbotPrizes","outputs":[{"internalType":"contract JackbotPrizes","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"load","outputs":[],"stateMutability":"payable","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":"maxRoundtripTax","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":"uint16","name":"first","type":"uint16"},{"internalType":"uint16","name":"second","type":"uint16"},{"internalType":"uint16","name":"third","type":"uint16"}],"name":"setDailyRafflePrizes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"setDappOperator","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":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"first","type":"uint16"},{"internalType":"uint16","name":"second","type":"uint16"},{"internalType":"uint16","name":"third","type":"uint16"}],"name":"setJackpotPrizes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"jackpot","type":"uint16"},{"internalType":"uint16","name":"reserve","type":"uint16"},{"internalType":"uint16","name":"dailyRaffle","type":"uint16"}],"name":"setLoadRatios","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":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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"},{"internalType":"uint16","name":"game","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"},{"internalType":"address payable","name":"liquidity","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"}]

60006002556009805460ff19166001179055610320608081905260a05261025860c0819052600a80546502580320032065ffffffffffff1990911617815561016060405260c860e0819052610100526101906101205261014091909152600b8054670258019000c800c86001600160401b0319909116179055600e80546001600160a01b03199081167387edcdb18f72f8293f070f61d2cbee9b1b19520d17909155600f805490911673cc2d319f29fc6f8907856aa903c6345c3806a44d179055606490620000d19060129062000ed2565b620000e1906311e1a30062000ee3565b620000ee90600162000ee3565b620000fa919062000efd565b60105560646200010d6012600a62000ed2565b6200011d906311e1a30062000ee3565b6200012a90600162000ee3565b62000136919062000efd565b6011556012805461ff0019168155600a60168190556017805461ffff19169055601b80546001600160a01b0319908116731ad5c6e5e59f9ea5964e1c83d23c86b35ad6586e17909155601a80549091163317905562000196919062000ed2565b620001a6906311e1a30062000ee3565b601a80546001600160a01b03908116600090815260208190526040812093909355905416906000805160206200709f833981519152620001e96012600a62000ed2565b620001f9906311e1a30062000ee3565b60405190815260200160405180910390a3466038036200024157600c8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e001790556200033c565b466061036200027857600c8054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d1001790556200033c565b4660011480620002885750466004145b80620002945750466003145b15620002c857600c8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d001790556200033c565b4661a86a036200030057600c8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d4001790556200033c565b4660fa036200033757600c8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c29001790556200033c565b600080fd5b600c60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b6919062000f20565b6001600160a01b031663c9c65396600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000418573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043e919062000f20565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200048b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b1919062000f20565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055601a54600c546200050b9291821691610100909104166000196200065c565b600c546200052c90309061010090046001600160a01b03166000196200065c565b601a80546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905595549094168352600490915290819020805490931690911790915551620005b99062000db1565b604051809103906000f080158015620005d6573d6000803e3d6000fd5b50601980546001600160a01b0319166001600160a01b03928316179055601a546200065591167325f41b538f0a7b7802bd257e793dd023d31d08b06064620006216012600a62000ed2565b62000631906311e1a30062000ee3565b6200063e90600662000ee3565b6200064a919062000efd565b60008060016200075d565b5062000fa2565b6001600160a01b038316620006ae5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006fc5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620006a5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006200076b878762000a1d565b156200080b5760175460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015620007f2575060408051601f3d908101601f19168201909252620007ef9181019062000f52565b60015b620007fc57600080fd5b9050806200080957600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff16806200084e57506001600160a01b03871660009081526006602052604090205460ff165b1562000858575060005b6001600160a01b038816600090815260208190526040812080548892906200088290849062000f76565b909155506000905081620008975786620008a5565b620008a58987878a62000b3f565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254620008dd919062000f8c565b92505081905550876001600160a01b0316896001600160a01b03166000805160206200709f833981519152836040516200091991815260200190565b60405180910390a3601754610100900460ff1662000a0e576200093d898962000c62565b601754610100900460ff161580156200095d57506200095d898962000a1d565b80156200098357506001600160a01b03891660009081526005602052604090205460ff16155b8015620009a957506001600160a01b03881660009081526005602052604090205460ff16155b8015620009b4575083155b1562000a0e5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401620006a5565b50600198975050505050505050565b601a546000906001600160a01b0384811691161480159062000a4d5750601a546001600160a01b03838116911614155b801562000a655750601a546001600160a01b03163214155b801562000a8b57506001600160a01b03821660009081526004602052604090205460ff16155b801562000ab157506001600160a01b03831660009081526004602052604090205460ff16155b801562000ac957506001600160a01b03821661dead14155b801562000ade57506001600160a01b03821615155b801562000af457506001600160a01b0383163014155b801562000b1557506017546001600160a01b03848116620100009092041614155b801562000b3657506017546001600160a01b03838116620100009092041614155b90505b92915050565b600080841562000b575750600a5461ffff1662000b83565b831562000b725750600a5462010000900461ffff1662000b83565b50600a54640100000000900461ffff165b8060000362000b96578291505062000c5a565b6017546201000090046001600160a01b03163014801562000bc25750466001148062000bc25750466038145b1562000bcd57506111945b600061271062000bde838662000ee3565b62000bea919062000efd565b9050801562000c4957306000908152602081905260408120805483929062000c1490849062000f8c565b909155505060405181815230906001600160a01b038916906000805160206200709f8339815191529060200160405180910390a35b62000c55818562000f76565b925050505b949350505050565b601754610100900460ff161562000cc85760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401620006a5565b62000cd4828262000a1d565b15801562000cef5750600d546001600160a01b038281169116145b1562000dad576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556017805461ff00191661010017908190556201000090041662000d69576017805462010000600160b01b0319163062010000021790555b6012805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15b5050565b611051806200604e83390190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000e1657816000190482111562000dfa5762000dfa62000dbf565b8085161562000e0857918102915b93841c939080029062000dda565b509250929050565b60008262000e2f5750600162000b39565b8162000e3e5750600062000b39565b816001811462000e57576002811462000e625762000e82565b600191505062000b39565b60ff84111562000e765762000e7662000dbf565b50506001821b62000b39565b5060208310610133831016604e8410600b841016171562000ea7575081810a62000b39565b62000eb3838362000dd5565b806000190482111562000eca5762000eca62000dbf565b029392505050565b600062000b3660ff84168362000e1e565b808202811582820484141762000b395762000b3962000dbf565b60008262000f1b57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121562000f3357600080fd5b81516001600160a01b038116811462000f4b57600080fd5b9392505050565b60006020828403121562000f6557600080fd5b8151801515811462000f4b57600080fd5b8181038181111562000b395762000b3962000dbf565b8082018082111562000b395762000b3962000dbf565b61509c8062000fb26000396000f3fe60806040526004361061046c5760003560e01c80635a6f09181161024a578063ab558e4d11610139578063d3f6a157116100b6578063ee5d9c2d1161007a578063ee5d9c2d14610de7578063fa23848f14610dfc578063fb78680d14610e1c578063fdb78c0e14610e3c578063feadde9c14610e5b57600080fd5b8063d3f6a15714610d21578063d469801614610d41578063da91ed7d14610d61578063dd62ed3e14610d81578063eafb5a3c14610dc757600080fd5b8063b7df8b36116100fd578063b7df8b3614610c3c578063bfc2fc3514610c56578063c0e055e414610c76578063c177a7c514610c96578063cf84770614610cb657600080fd5b8063ab558e4d14610bf2578063afdaa40e14610c12578063b13c86a314610c27578063b1b08f7114610733578063b3d514fb1461073357600080fd5b806386e115ed116101c75780638fc5a29a1161018b5780638fc5a29a14610b5157806395d89b4114610b7157806397c0bba114610b9d578063a9059cbb14610bb2578063aa22b17214610bd257600080fd5b806386e115ed14610ad4578063893d20e814610af45780638a63bd9b14610b125780638a8c523c14610b275780638cc81c2e14610b3c57600080fd5b8063715018a61161020e578063715018a614610a6257806375f0a87414610a7757806378648edf14610a9757806380c581d114610aac57806386d5c4be14610acc57600080fd5b80635a6f0918146109a85780635c24b074146109be5780635cce86cd146109de5780636ebd007814610a1757806370a0823114610a2c57600080fd5b80632b28fc7a1161036657806346ea7ac8116102e35780634fb2e45d116102a75780634fb2e45d146108fb5780634fbee1931461091b57806350a8e01614610954578063590ffdce146109735780635a211e271461099357600080fd5b806346ea7ac81461085b5780634ada218b146108715780634bbb93eb1461088b5780634d9b3735146108ab5780634e718e48146108db57600080fd5b806333251a0b1161032a57806333251a0b146107c657806336fddb04146107e65780633bff8271146108065780633f3cf56c1461081b578063452ed4f11461083b57600080fd5b80632b28fc7a146107335780632c1540b8146107495780632e8fa82114610769578063313ce5671461077f57806332cde664146107a657600080fd5b80630dcbcf1c116103f457806323b872dd116103b857806323b872dd146106a857806326003957146106c85780632610eaca146106e857806328577751146107085780632b112e491461071e57600080fd5b80630dcbcf1c146106105780630fa604e41461064957806313b4a7f41461065e57806318160ddd1461067e5780631cb365691461069357600080fd5b806306fdde031161043b57806306fdde03146105475780630758d92414610581578063077116e6146105a657806307dd79e0146105c6578063095ea7b3146105f057600080fd5b806303fd2a45146104785780630445b667146104ab578063044df726146104cf578063069d955f146104f157600080fd5b3661047357005b600080fd5b34801561048457600080fd5b5061048e61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104b757600080fd5b506104c160135481565b6040519081526020016104a2565b3480156104db57600080fd5b506104ef6104ea366004614913565b610e7b565b005b3480156104fd57600080fd5b50600a546105229061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016104a2565b34801561055357600080fd5b506040805180820190915260088152674c75636b7920414960c01b60208201525b6040516104a2919061494c565b34801561058d57600080fd5b50600c5461048e9061010090046001600160a01b031681565b3480156105b257600080fd5b506104ef6105c13660046149af565b610f39565b3480156105d257600080fd5b50600c546105e09060ff1681565b60405190151581526020016104a2565b3480156105fc57600080fd5b506105e061060b3660046149cc565b610fa3565b34801561061c57600080fd5b506105e061062b3660046149af565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561065557600080fd5b506104c1610fba565b34801561066a57600080fd5b506104ef6106793660046149f8565b610fda565b34801561068a57600080fd5b506104c1611198565b34801561069f57600080fd5b506105226111da565b3480156106b457600080fd5b506105e06106c3366004614a26565b611261565b3480156106d457600080fd5b506104ef6106e3366004614a67565b6112d9565b3480156106f457600080fd5b506104ef610703366004614b5f565b611422565b34801561071457600080fd5b506104c160165481565b34801561072a57600080fd5b506104c16115d7565b34801561073f57600080fd5b506104c16107d081565b34801561075557600080fd5b5060195461048e906001600160a01b031681565b34801561077557600080fd5b506104c160145481565b34801561078b57600080fd5b50610794611655565b60405160ff90911681526020016104a2565b3480156107b257600080fd5b506104ef6107c1366004614c31565b611683565b3480156107d257600080fd5b506104ef6107e13660046149af565b611836565b3480156107f257600080fd5b506104ef610801366004614c7c565b6118e7565b34801561081257600080fd5b5061052261195a565b34801561082757600080fd5b506104ef610836366004614a67565b6119b2565b34801561084757600080fd5b50600d5461048e906001600160a01b031681565b34801561086757600080fd5b506104c16109c481565b34801561087d57600080fd5b506017546105e09060ff1681565b34801561089757600080fd5b506104c16108a6366004614c9a565b611afb565b3480156108b757600080fd5b506108c0611b2f565b604080519384526020840192909252908201526060016104a2565b3480156108e757600080fd5b506104ef6108f6366004614c9a565b611b4c565b34801561090757600080fd5b506104ef6109163660046149af565b611bea565b34801561092757600080fd5b506105e06109363660046149af565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561096057600080fd5b506017546105e090610100900460ff1681565b34801561097f57600080fd5b506104ef61098e366004614c7c565b611dec565b34801561099f57600080fd5b506104c1611e5f565b3480156109b457600080fd5b506104c160185481565b3480156109ca57600080fd5b506104ef6109d93660046149af565b611ecd565b3480156109ea57600080fd5b506105e06109f93660046149af565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610a2357600080fd5b506104c1611fa7565b348015610a3857600080fd5b506104c1610a473660046149af565b6001600160a01b031660009081526020819052604090205490565b348015610a6e57600080fd5b506104ef611fc2565b348015610a8357600080fd5b50600e5461048e906001600160a01b031681565b348015610aa357600080fd5b506104ef61206f565b348015610ab857600080fd5b506104ef610ac7366004614c7c565b6120c6565b6104ef6122b0565b348015610ae057600080fd5b506104ef610aef366004614cb3565b612300565b348015610b0057600080fd5b50601a546001600160a01b031661048e565b348015610b1e57600080fd5b506105e0612412565b348015610b3357600080fd5b506104ef612482565b348015610b4857600080fd5b506104c16126b5565b348015610b5d57600080fd5b506104ef610b6c366004614cb3565b6126ff565b348015610b7d57600080fd5b506040805180820190915260038152624c414960e81b6020820152610574565b348015610ba957600080fd5b506104ef6127dd565b348015610bbe57600080fd5b506105e0610bcd3660046149cc565b6128dc565b348015610bde57600080fd5b506104ef610bed366004614c31565b6128f3565b348015610bfe57600080fd5b506104ef610c0d3660046149af565b612a38565b348015610c1e57600080fd5b506104c1612bc2565b348015610c3357600080fd5b506108c0612c0c565b348015610c4857600080fd5b506015546105e09060ff1681565b348015610c6257600080fd5b506104ef610c71366004614913565b612c9d565b348015610c8257600080fd5b506104ef610c91366004614c31565b612d44565b348015610ca257600080fd5b50601b5461048e906001600160a01b031681565b348015610cc257600080fd5b50600b54610cf39061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016104a2565b348015610d2d57600080fd5b506104ef610d3c3660046149f8565b612e03565b348015610d4d57600080fd5b50600f5461048e906001600160a01b031681565b348015610d6d57600080fd5b506104ef610d7c366004614c31565b612ee5565b348015610d8d57600080fd5b506104c1610d9c3660046149f8565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610dd357600080fd5b506104ef610de23660046149af565b612f71565b348015610df357600080fd5b506104ef613372565b348015610e0857600080fd5b506104ef610e17366004614c31565b61344e565b348015610e2857600080fd5b506104ef610e37366004614d04565b6134da565b348015610e4857600080fd5b506012546105e090610100900460ff1681565b348015610e6757600080fd5b506104ef610e76366004614c7c565b613796565b601a546001600160a01b03163314610ec85760405162461bcd60e51b8152602060048201526011602482015260008051602061504783398151915260448201526064015b60405180910390fd5b60175460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610f1d57600080fd5b505af1158015610f31573d6000803e3d6000fd5b505050505050565b601a546001600160a01b03163314610f815760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610fb0338484613809565b5060015b92915050565b6000610fc86012600a614e30565b601154610fd59190614e3f565b905090565b601a546001600160a01b031633146110225760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b60095460ff1661103157600080fd5b6001600160a01b038216301480159061105357506001600160a01b0381163014155b801561106d5750600d546001600160a01b03838116911614155b80156110875750600d546001600160a01b03828116911614155b6110c15760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610ebf565b806001600160a01b0316826001600160a01b031603611123576001600160a01b03811660009081526004602090815260408083208054600160ff1991821681179092556008909352922080549091168217905561111f908290611dec565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff1991821681179092559587168085528285208054881683179055948452600890925280832080548616831790559282529190208054909216811790915561118d908390611dec565b61111f816001611dec565b60006111a66012600a614e30565b6111b4906311e1a300614e61565b6000036111c057600080fd5b6111cc6012600a614e30565b610fd5906311e1a300614e61565b6000806000601960009054906101000a90046001600160a01b03166001600160a01b0316631cb365696040518163ffffffff1660e01b8152600401606060405180830381865afa158015611232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112569190614e78565b925092509250909192565b6001600160a01b0383166000908152600360209081526040808320338452909152812054600019146112c6576001600160a01b0384166000908152600360209081526040808320338452909152812080548492906112c0908490614eba565b90915550505b6112d1848484613902565b949350505050565b601a546001600160a01b031633146113215760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b606461132f6012600a614e30565b61133d906311e1a300614e61565b6113479190614e3f565b81836113556012600a614e30565b611363906311e1a300614e61565b61136d9190614e61565b6113779190614e3f565b10156113eb5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610ebf565b80826113f96012600a614e30565b611407906311e1a300614e61565b6114119190614e61565b61141b9190614e3f565b6011555050565b601a546001600160a01b0316331461146a5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b80518251146114bb5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ebf565b60005b82518161ffff1610156115d2576114d76012600a614e30565b828261ffff16815181106114ed576114ed614ecd565b60200260200101516114ff9190614e61565b33600090815260208190526040902054101561155d5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ebf565b6115bf33848361ffff168151811061157757611577614ecd565b60200260200101516012600a61158d9190614e30565b858561ffff16815181106115a3576115a3614ecd565b60200260200101516115b59190614e61565b6000806001613e19565b50806115ca81614ee3565b9150506114be565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546116319190614f04565b61163d6012600a614e30565b61164b906311e1a300614e61565b610fd59190614eba565b60006116636012600a614e30565b611671906311e1a300614e61565b60000361167d57600080fd5b50601290565b601a546001600160a01b031633146116cb5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b600c5460ff161561171e5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610ebf565b6107d08361ffff161115801561173a57506107d08261ffff1611155b801561174c57506107d08161ffff1611155b6117985760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ebf565b6109c46117a58385614f17565b61ffff1611156117f75760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610ebf565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601a546001600160a01b0316331461187e5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6017546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156118cc57600080fd5b505af11580156118e0573d6000803e3d6000fd5b5050505050565b601a546001600160a01b0316331461192f5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000806000601960009054906101000a90046001600160a01b03166001600160a01b0316633bff82716040518163ffffffff1660e01b8152600401606060405180830381865afa158015611232573d6000803e3d6000fd5b601a546001600160a01b031633146119fa5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6064611a086012600a614e30565b611a16906311e1a300614e61565b611a209190614e3f565b8183611a2e6012600a614e30565b611a3c906311e1a300614e61565b611a469190614e61565b611a509190614e3f565b1015611ac45760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ebf565b8082611ad26012600a614e30565b611ae0906311e1a300614e61565b611aea9190614e61565b611af49190614e3f565b6010555050565b600d546001600160a01b031660009081526020819052604081205461271090611b25908490614e61565b610fb49190614e3f565b6000806000611b3c612bc2565b611b44611e5f565b6112566126b5565b601a546001600160a01b03163314611b945760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6096811115611be55760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ebf565b601655565b601a546001600160a01b03163314611c325760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6001600160a01b038116611cae5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ebf565b61deac196001600160a01b03821601611d2f5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ebf565b601a54611d46906001600160a01b03166000611dec565b611d51816001611dec565b601a546001600160a01b031660009081526020819052604090205415611d9a57601a546001600160a01b0316600081815260208190526040902054611d98919083906115b5565b505b601a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a546001600160a01b03163314611e345760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60195460408051635a211e2760e01b815290516000926001600160a01b031691635a211e279160048083019260209291908290030181865afa158015611ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190614f39565b601a546001600160a01b03163314611f155760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b60175460ff1615611f2557600080fd5b306001600160a01b03821603611f7d5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ebf565b601780546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000611fb56012600a614e30565b601054610fd59190614e3f565b601a546001600160a01b0316331461200a5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b601a54612021906001600160a01b03166000611dec565b601a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601a546001600160a01b031633146120b75760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b600c805460ff19166001179055565b601a546001600160a01b0316331461210e5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b80612181576001600160a01b03828116600081815260016020526040808220805460ff1916905560175490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610f1d57600080fd5b600254156121e8576203f4806002544261219b9190614eba565b116121e85760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ebf565b6001600160a01b03821660009081526001602052604090205460ff16156122515760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ebf565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610f03565b601960009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156118cc57600080fd5b601b546001600160a01b03163314806123235750601a546001600160a01b031633145b6123955760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79207468652044415050206f70657261746f72206f7220746865206f7760448201527f6e65722063616e2063616c6c20746869732066756e6374696f6e2e00000000006064820152608401610ebf565b6019546040516386e115ed60e01b81526001600160a01b0386811660048301528581166024830152848116604483015260648201849052909116906386e115ed906084015b600060405180830381600087803b1580156123f457600080fd5b505af1158015612408573d6000803e3d6000fd5b5050505050505050565b601a546000906001600160a01b0316331461245d5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b600c5461247c90309061010090046001600160a01b0316600019613809565b50600190565b601a546001600160a01b031633146124ca5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b60175460ff161561251d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ebf565b601754610100900460ff166125745760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ebf565b6017546201000090046001600160a01b03166125a4576017805462010000600160b01b0319163062010000021790555b601754600d54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561261657600080fd5b505af1925050508015612627575060015b5060178054600160ff1991821617909155600980549091169055600d546001600160a01b03166000908152602081905260409020546127109061266b90600a614e61565b6126759190614e3f565b601355600d546001600160a01b0316600090815260208190526040902054612710906126a290601e614e61565b6126ac9190614e3f565b60145542601855565b601954604080516346640e1760e11b815290516000926001600160a01b031691638cc81c2e9160048083019260209291908290030181865afa158015611ea9573d6000803e3d6000fd5b601b546001600160a01b03163314806127225750601a546001600160a01b031633145b6127945760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79207468652044415050206f70657261746f72206f7220746865206f7760448201527f6e65722063616e2063616c6c20746869732066756e6374696f6e2e00000000006064820152608401610ebf565b6019546040516347e2d14d60e11b81526001600160a01b038681166004830152858116602483015284811660448301526064820184905290911690638fc5a29a906084016123da565b601b546001600160a01b03163314806128005750601a546001600160a01b031633145b6128725760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79207468652044415050206f70657261746f72206f7220746865206f7760448201527f6e65722063616e2063616c6c20746869732066756e6374696f6e2e00000000006064820152608401610ebf565b601960009054906101000a90046001600160a01b03166001600160a01b03166397c0bba16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128c257600080fd5b505af11580156128d6573d6000803e3d6000fd5b50505050565b60006128e9338484613902565b5060019392505050565b601a546001600160a01b0316331461293b5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b600b805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff199094169288169290921792909217161790558261297f8284614f17565b6129899190614f17565b600b805467ffff0000000000001916660100000000000061ffff93841602179055600a546000916129c39162010000810482169116614f17565b600b5461ffff918216925066010000000000009004168110156128d65760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ebf565b601a546001600160a01b03163314612a805760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b306001600160a01b03821603612ad85760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ebf565b601a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b539190614f39565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612b9e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d29190614f52565b601954604080516357ed520760e11b815290516000926001600160a01b03169163afdaa40e9160048083019260209291908290030181865afa158015611ea9573d6000803e3d6000fd5b6000806000601960009054906101000a90046001600160a01b03166001600160a01b031663b13c86a36040518163ffffffff1660e01b8152600401606060405180830381865afa158015612c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c889190614e78565b61ffff92831696918316955090911692509050565b601a546001600160a01b03163314612ce55760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601a546001600160a01b03163314612d8c5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b601954604051633038157960e21b815261ffff80861660048301528085166024830152831660448201526001600160a01b039091169063c0e055e4906064015b600060405180830381600087803b158015612de657600080fd5b505af1158015612dfa573d6000803e3d6000fd5b50505050505050565b601a546001600160a01b03163314612e4b5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6001600160a01b03821615801590612e6b57506001600160a01b03811615155b612eb75760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ebf565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b601a546001600160a01b03163314612f2d5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b60195460405163da91ed7d60e01b815261ffff80861660048301528085166024830152831660448201526001600160a01b039091169063da91ed7d90606401612dcc565b601a546001600160a01b03163314612fb95760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b601754610100900460ff16156130115760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ebf565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015613056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307a9190614f6f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130eb9190614f6f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015613136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315a9190614f6f565b600d546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166132f057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e99190614f6f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325a9190614f6f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156132a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cb9190614f6f565b600d80546001600160a01b0319166001600160a01b039290921691909117905561330c565b600d80546001600160a01b0319166001600160a01b0383161790555b600c805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600d5482166000908152600160208190526040909120805460ff1916909117905591546115d2923092910416600019613809565b601a546001600160a01b031633146133ba5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b601754610100900460ff16156134125760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ebf565b601a546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561344b573d6000803e3d6000fd5b50565b601a546001600160a01b031633146134965760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b60195460405163fa23848f60e01b815261ffff80861660048301528085166024830152831660448201526001600160a01b039091169063fa23848f90606401612dcc565b601a546001600160a01b031633146135225760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b82846135306012600a614e30565b61353e906311e1a300614e61565b6135489190614e61565b6135529190614e3f565b60135580826135636012600a614e30565b613571906311e1a300614e61565b61357b9190614e61565b6135859190614e3f565b601481905560135411156135e55760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ebf565b600d546001600160a01b03166000908152602081905260409020546127109061360f906096614e61565b6136199190614e3f565b60145411156136765760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ebf565b620f42406136866012600a614e30565b613694906311e1a300614e61565b61369e9190614e3f565b60145410156137065760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ebf565b620f42406137166012600a614e30565b613724906311e1a300614e61565b61372e9190614e3f565b60135410156128d65760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ebf565b601a546001600160a01b031633146137de5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166138555760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ebf565b6001600160a01b0382166138a15760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ebf565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166139685760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ebf565b6001600160a01b0383166139ca5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ebf565b60008211613a2c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ebf565b6001600160a01b0384166000908152600160205260408120548190819060ff1615613a5a5760019250613a88565b6001600160a01b03861660009081526001602052604090205460ff1615613a845760019150613a88565b5060015b613a9287876140cc565b15613d1f5760175460ff16613b935780613aee5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ebf565b6001600160a01b03871660009081526005602052604090205460ff16158015613b3057506001600160a01b03861660009081526005602052604090205460ff16155b15613b935760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ebf565b8280613b9c5750815b15613c4b576001600160a01b03871660009081526007602052604090205460ff16158015613be357506001600160a01b03861660009081526007602052604090205460ff16155b15613c4b57601054851115613c4b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ebf565b600c546001600160a01b038781166101009092041614801590613c6c575081155b15613d1f576001600160a01b03861660009081526007602052604090205460ff16613d1f5760115485613cb4886001600160a01b031660009081526020819052604090205490565b613cbe9190614f04565b1115613d1f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610ebf565b8115613e005760125460ff16613e0057601254610100900460ff168015613d5f57506001600160a01b03861660009081526008602052604090205460ff16155b8015613d8457506001600160a01b03871660009081526008602052604090205460ff16155b15613e0057306000908152602081905260409020546013548110613dfe5760145460155460ff1615613de857601654600d546001600160a01b031660009081526020819052604090205461271091613ddb91614e61565b613de59190614e3f565b90505b808210613df3578091505b613dfc826141e3565b505b505b613e0e878787868686613e19565b979650505050505050565b6000613e2587876140cc565b15613ebf5760175460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613ea8575060408051601f3d908101601f19168201909252613ea591810190614f52565b60015b613eb157600080fd5b905080613ebd57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680613f0157506001600160a01b03871660009081526006602052604090205460ff165b15613f0a575060005b6001600160a01b03881660009081526020819052604081208054889290613f32908490614eba565b909155506000905081613f455786613f51565b613f518987878a6146b0565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613f879190614f04565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613fd391815260200190565b60405180910390a3601754610100900460ff166140bd57613ff489896147c5565b601754610100900460ff16158015614011575061401189896140cc565b801561403657506001600160a01b03891660009081526005602052604090205460ff16155b801561405b57506001600160a01b03881660009081526005602052604090205460ff16155b8015614065575083155b156140bd5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ebf565b50600198975050505050505050565b601a546000906001600160a01b038481169116148015906140fb5750601a546001600160a01b03838116911614155b80156141125750601a546001600160a01b03163214155b801561413757506001600160a01b03821660009081526004602052604090205460ff16155b801561415c57506001600160a01b03831660009081526004602052604090205460ff16155b801561417357506001600160a01b03821661dead14155b801561418757506001600160a01b03821615155b801561419c57506001600160a01b0383163014155b80156141bc57506017546001600160a01b03848116620100009092041614155b80156141dc57506017546001600160a01b03838116620100009092041614155b9392505050565b6012805460ff1916600117905560408051608081018252600b5461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000090049091166060820181905260000361424457506146a3565b306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902054600019146142a757306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff16856142c89190614e61565b6142d29190614e3f565b6142dc9190614e3f565b905060006142ea8285614eba565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061432457614324614ecd565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614397573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143bb9190614f6f565b816001815181106143ce576143ce614ecd565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac9479061441b908590600090869030904290600401614f8c565b600060405180830381600087803b15801561443557600080fd5b505af1925050508015614446575060015b61445357505050506146a3565b476000836144618684614e61565b61446b9190614e3f565b9050841561455157600c54600f5460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af193505050508015614505575060408051601f3d908101601f1916820190925261450291810190614ffd565b60015b614514575050505050506146a3565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b61455b8183614eba565b9150856000015186606001818151614573919061502b565b61ffff908116909152606088015160408901516000935083929182169161459b911686614e61565b6145a59190614e3f565b905060006145b38286614eba565b60208a015190915061ffff161561462157600e546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114614616576040519150601f19603f3d011682016040523d82523d6000602084013e61461b565b606091505b50909350505b604089015161ffff161561469957601960009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be83620186a0906040518363ffffffff1660e01b81526004016000604051808303818589803b15801561468457600080fd5b5088f19450505050508015614697575060015b505b5050505050505050505b506012805460ff19169055565b60008084156146c65750600a5461ffff166146f0565b83156146df5750600a5462010000900461ffff166146f0565b50600a54640100000000900461ffff165b8060000361470157829150506112d1565b6017546201000090046001600160a01b03163014801561472b5750466001148061472b5750466038145b1561473557506111945b60006127106147448386614e61565b61474e9190614e3f565b905080156147bb573060009081526020819052604081208054839290614775908490614f04565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613e0e8185614eba565b601754610100900460ff16156148295760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ebf565b61483382826140cc565b15801561484d5750600d546001600160a01b038281169116145b1561111f576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556017805461ff0019166101001790819055620100009004166148c5576017805462010000600160b01b0319163062010000021790555b6012805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612d38565b801515811461344b57600080fd5b6000806040838503121561492657600080fd5b823561493181614905565b9150602083013561494181614905565b809150509250929050565b600060208083528351808285015260005b818110156149795785810183015185820160400152820161495d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461344b57600080fd5b6000602082840312156149c157600080fd5b81356141dc8161499a565b600080604083850312156149df57600080fd5b82356149ea8161499a565b946020939093013593505050565b60008060408385031215614a0b57600080fd5b8235614a168161499a565b915060208301356149418161499a565b600080600060608486031215614a3b57600080fd5b8335614a468161499a565b92506020840135614a568161499a565b929592945050506040919091013590565b60008060408385031215614a7a57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614ac857614ac8614a89565b604052919050565b600067ffffffffffffffff821115614aea57614aea614a89565b5060051b60200190565b600082601f830112614b0557600080fd5b81356020614b1a614b1583614ad0565b614a9f565b82815260059290921b84018101918181019086841115614b3957600080fd5b8286015b84811015614b545780358352918301918301614b3d565b509695505050505050565b60008060408385031215614b7257600080fd5b823567ffffffffffffffff80821115614b8a57600080fd5b818501915085601f830112614b9e57600080fd5b81356020614bae614b1583614ad0565b82815260059290921b84018101918181019089841115614bcd57600080fd5b948201945b83861015614bf4578535614be58161499a565b82529482019490820190614bd2565b96505086013592505080821115614c0a57600080fd5b50614c1785828601614af4565b9150509250929050565b61ffff8116811461344b57600080fd5b600080600060608486031215614c4657600080fd5b8335614c5181614c21565b92506020840135614c6181614c21565b91506040840135614c7181614c21565b809150509250925092565b60008060408385031215614c8f57600080fd5b82356149318161499a565b600060208284031215614cac57600080fd5b5035919050565b60008060008060808587031215614cc957600080fd5b8435614cd48161499a565b93506020850135614ce48161499a565b92506040850135614cf48161499a565b9396929550929360600135925050565b60008060008060808587031215614d1a57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115614d87578160001904821115614d6d57614d6d614d36565b80851615614d7a57918102915b93841c9390800290614d51565b509250929050565b600082614d9e57506001610fb4565b81614dab57506000610fb4565b8160018114614dc15760028114614dcb57614de7565b6001915050610fb4565b60ff841115614ddc57614ddc614d36565b50506001821b610fb4565b5060208310610133831016604e8410600b8410161715614e0a575081810a610fb4565b614e148383614d4c565b8060001904821115614e2857614e28614d36565b029392505050565b60006141dc60ff841683614d8f565b600082614e5c57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610fb457610fb4614d36565b600080600060608486031215614e8d57600080fd5b8351614e9881614c21565b6020850151909350614ea981614c21565b6040850151909250614c7181614c21565b81810381811115610fb457610fb4614d36565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614efa57614efa614d36565b6001019392505050565b80820180821115610fb457610fb4614d36565b61ffff818116838216019080821115614f3257614f32614d36565b5092915050565b600060208284031215614f4b57600080fd5b5051919050565b600060208284031215614f6457600080fd5b81516141dc81614905565b600060208284031215614f8157600080fd5b81516141dc8161499a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614fdc5784516001600160a01b031683529383019391830191600101614fb7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561501257600080fd5b8351925060208401519150604084015190509250925092565b61ffff828116828216039080821115614f3257614f32614d3656fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220b80eeb49c87c6c1c9537172d367df63f30676082456eb8e2687bc84672feeb2e64736f6c63430008130033611b586080526107d060a0526103e860c0819052600480546503e807d01b5865ffffffffffff199182161790915561196460e08190526109c4610100819052610120849052600580546503e809c4196490851681179091556101a060405261014092909252610160526101809290925260068054909116909117905561271060075534801561008d57600080fd5b50600080546001600160a01b03191633179055610fa2806100af6000396000f3fe6080604052600436106100d65760003560e01c80638fc5a29a1161007f578063b13c86a311610059578063b13c86a31461027f578063c0e055e4146102ae578063da91ed7d146102ce578063fa23848f146102ee57600080fd5b80638fc5a29a1461023557806397c0bba114610255578063afdaa40e1461026a57600080fd5b806386d5c4be116100b057806386d5c4be146101f657806386e115ed146102005780638cc81c2e1461022057600080fd5b80631cb36569146101535780633bff8271146101a85780635a211e27146101d757600080fd5b3661014e5760405162461bcd60e51b815260206004820152603260248201527f446f206e6f742073656e6420424e42206469726563746c7920686572652c207060448201527f6c656173652063616c6c206c6f616428292e000000000000000000000000000060648201526084015b60405180910390fd5b600080fd5b34801561015f57600080fd5b5060065461ffff80821691620100008104821691640100000000909104165b6040805161ffff948516815292841660208401529216918101919091526060015b60405180910390f35b3480156101b457600080fd5b5060055461ffff808216916201000081048216916401000000009091041661017e565b3480156101e357600080fd5b506002545b60405190815260200161019f565b6101fe61030e565b005b34801561020c57600080fd5b506101fe61021b366004610e2f565b6103ef565b34801561022c57600080fd5b506003546101e8565b34801561024157600080fd5b506101fe610250366004610e2f565b61075f565b34801561026157600080fd5b506101fe610ac3565b34801561027657600080fd5b506001546101e8565b34801561028b57600080fd5b5060045461ffff808216916201000081048216916401000000009091041661017e565b3480156102ba57600080fd5b506101fe6102c9366004610e8c565b610b31565b3480156102da57600080fd5b506101fe6102e9366004610e8c565b610c27565b3480156102fa57600080fd5b506101fe610309366004610e8c565b610d1d565b6040805160608101825260045461ffff808216808452620100008304821660208501526401000000009092041692820192909252600754349260009190610356908590610ee5565b6103609190610f02565b9050600060075484846020015161ffff1661037b9190610ee5565b6103859190610f02565b905060006103938284610f24565b61039d9086610f37565b905082600160008282546103b19190610f24565b9250508190555081600260008282546103ca9190610f24565b9250508190555080600360008282546103e39190610f24565b90915550505050505050565b6000546001600160a01b0316331461043d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610145565b62015f9081101561049f5760405162461bcd60e51b815260206004820152602660248201527f4d75737420757365206761732076616c7565206f66206174206c65617374203360448201526518161818181760d11b6064820152608401610145565b6001600160a01b038416158015906104bf57506001600160a01b03831615155b80156104d357506001600160a01b03821615155b61051f5760405162461bcd60e51b815260206004820152601f60248201527f4e6f2077696e6e65722063616e6e206265207a65726f20616464726573732e006044820152606401610145565b6001600160a01b03841661dead1480159061054557506001600160a01b03831661dead14155b801561055c57506001600160a01b03821661dead14155b6105a85760405162461bcd60e51b815260206004820152601f60248201527f4e6f2077696e6e65722063616e6e206265206465616420616464726573732e006044820152606401610145565b6040805160608101825260055461ffff80821680845262010000830482166020850152640100000000909204169282019290925260075460015491926000928392916105f391610ee5565b6105fd9190610f02565b90506000600754846020015161ffff1660015461061a9190610ee5565b6106249190610f02565b905060006106328284610f24565b60015461063f9190610f37565b9050600160009055886001600160a01b0316838790604051600060405180830381858888f193505050503d8060008114610695576040519150601f19603f3d011682016040523d82523d6000602084013e61069a565b606091505b50506040519094506001600160a01b03891690879084906000818181858888f193505050503d80600081146106eb576040519150601f19603f3d011682016040523d82523d6000602084013e6106f0565b606091505b50506040519094506001600160a01b03881690879083906000818181858888f193505050503d8060008114610741576040519150601f19603f3d011682016040523d82523d6000602084013e610746565b606091505b505080945050610754610ac3565b505050505050505050565b6000546001600160a01b031633146107ad5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610145565b61753081101561080e5760405162461bcd60e51b815260206004820152602660248201527f4d75737420757365206761732076616c7565206f66206174206c65617374203360448201526518161818181760d11b6064820152608401610145565b6001600160a01b0384161580159061082e57506001600160a01b03831615155b801561084257506001600160a01b03821615155b61088e5760405162461bcd60e51b815260206004820152601f60248201527f4e6f2077696e6e65722063616e6e206265207a65726f20616464726573732e006044820152606401610145565b6001600160a01b03841661dead148015906108b457506001600160a01b03831661dead14155b80156108cb57506001600160a01b03821661dead14155b6109175760405162461bcd60e51b815260206004820152601f60248201527f4e6f2077696e6e65722063616e6e206265206465616420616464726573732e006044820152606401610145565b6040805160608101825260065461ffff808216808452620100008304821660208501526401000000009092041692820192909252600754600354919260009283929161096291610ee5565b61096c9190610f02565b90506000600754846020015161ffff166003546109899190610ee5565b6109939190610f02565b905060006109a18284610f24565b6003546109ae9190610f37565b9050600360009055886001600160a01b0316838790604051600060405180830381858888f193505050503d8060008114610a04576040519150601f19603f3d011682016040523d82523d6000602084013e610a09565b606091505b50506040519094506001600160a01b03891690879084906000818181858888f193505050503d8060008114610a5a576040519150601f19603f3d011682016040523d82523d6000602084013e610a5f565b606091505b50506040519094506001600160a01b03881690879083906000818181858888f193505050503d8060008114610ab0576040519150601f19603f3d011682016040523d82523d6000602084013e610ab5565b606091505b505050505050505050505050565b6000546001600160a01b03163314610b115760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610145565b60025460016000828254610b259190610f24565b90915550506000600255565b6000546001600160a01b03163314610b7f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610145565b80610b8a8385610f4a565b610b949190610f4a565b61ffff1661271014610be85760405162461bcd60e51b815260206004820152601a60248201527f4d75737420657175616c2031303030302c206f7220313030252e0000000000006044820152606401610145565b6005805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610c755760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610145565b80610c808385610f4a565b610c8a9190610f4a565b61ffff1661271014610cde5760405162461bcd60e51b815260206004820152601a60248201527f4d75737420657175616c2031303030302c206f7220313030252e0000000000006044820152606401610145565b6004805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610d6b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610145565b80610d768385610f4a565b610d809190610f4a565b61ffff1661271014610dd45760405162461bcd60e51b815260206004820152601a60248201527f4d75737420657175616c2031303030302c206f7220313030252e0000000000006044820152606401610145565b6006805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b80356001600160a01b0381168114610e2a57600080fd5b919050565b60008060008060808587031215610e4557600080fd5b610e4e85610e13565b9350610e5c60208601610e13565b9250610e6a60408601610e13565b9396929550929360600135925050565b803561ffff81168114610e2a57600080fd5b600080600060608486031215610ea157600080fd5b610eaa84610e7a565b9250610eb860208501610e7a565b9150610ec660408501610e7a565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610efc57610efc610ecf565b92915050565b600082610f1f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610efc57610efc610ecf565b81810381811115610efc57610efc610ecf565b61ffff818116838216019080821115610f6557610f65610ecf565b509291505056fea2646970667358221220053272d9e992f627e2164308fd27a148d396684658db9094182ebc70c6441bf064736f6c63430008130033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061046c5760003560e01c80635a6f09181161024a578063ab558e4d11610139578063d3f6a157116100b6578063ee5d9c2d1161007a578063ee5d9c2d14610de7578063fa23848f14610dfc578063fb78680d14610e1c578063fdb78c0e14610e3c578063feadde9c14610e5b57600080fd5b8063d3f6a15714610d21578063d469801614610d41578063da91ed7d14610d61578063dd62ed3e14610d81578063eafb5a3c14610dc757600080fd5b8063b7df8b36116100fd578063b7df8b3614610c3c578063bfc2fc3514610c56578063c0e055e414610c76578063c177a7c514610c96578063cf84770614610cb657600080fd5b8063ab558e4d14610bf2578063afdaa40e14610c12578063b13c86a314610c27578063b1b08f7114610733578063b3d514fb1461073357600080fd5b806386e115ed116101c75780638fc5a29a1161018b5780638fc5a29a14610b5157806395d89b4114610b7157806397c0bba114610b9d578063a9059cbb14610bb2578063aa22b17214610bd257600080fd5b806386e115ed14610ad4578063893d20e814610af45780638a63bd9b14610b125780638a8c523c14610b275780638cc81c2e14610b3c57600080fd5b8063715018a61161020e578063715018a614610a6257806375f0a87414610a7757806378648edf14610a9757806380c581d114610aac57806386d5c4be14610acc57600080fd5b80635a6f0918146109a85780635c24b074146109be5780635cce86cd146109de5780636ebd007814610a1757806370a0823114610a2c57600080fd5b80632b28fc7a1161036657806346ea7ac8116102e35780634fb2e45d116102a75780634fb2e45d146108fb5780634fbee1931461091b57806350a8e01614610954578063590ffdce146109735780635a211e271461099357600080fd5b806346ea7ac81461085b5780634ada218b146108715780634bbb93eb1461088b5780634d9b3735146108ab5780634e718e48146108db57600080fd5b806333251a0b1161032a57806333251a0b146107c657806336fddb04146107e65780633bff8271146108065780633f3cf56c1461081b578063452ed4f11461083b57600080fd5b80632b28fc7a146107335780632c1540b8146107495780632e8fa82114610769578063313ce5671461077f57806332cde664146107a657600080fd5b80630dcbcf1c116103f457806323b872dd116103b857806323b872dd146106a857806326003957146106c85780632610eaca146106e857806328577751146107085780632b112e491461071e57600080fd5b80630dcbcf1c146106105780630fa604e41461064957806313b4a7f41461065e57806318160ddd1461067e5780631cb365691461069357600080fd5b806306fdde031161043b57806306fdde03146105475780630758d92414610581578063077116e6146105a657806307dd79e0146105c6578063095ea7b3146105f057600080fd5b806303fd2a45146104785780630445b667146104ab578063044df726146104cf578063069d955f146104f157600080fd5b3661047357005b600080fd5b34801561048457600080fd5b5061048e61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104b757600080fd5b506104c160135481565b6040519081526020016104a2565b3480156104db57600080fd5b506104ef6104ea366004614913565b610e7b565b005b3480156104fd57600080fd5b50600a546105229061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016104a2565b34801561055357600080fd5b506040805180820190915260088152674c75636b7920414960c01b60208201525b6040516104a2919061494c565b34801561058d57600080fd5b50600c5461048e9061010090046001600160a01b031681565b3480156105b257600080fd5b506104ef6105c13660046149af565b610f39565b3480156105d257600080fd5b50600c546105e09060ff1681565b60405190151581526020016104a2565b3480156105fc57600080fd5b506105e061060b3660046149cc565b610fa3565b34801561061c57600080fd5b506105e061062b3660046149af565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561065557600080fd5b506104c1610fba565b34801561066a57600080fd5b506104ef6106793660046149f8565b610fda565b34801561068a57600080fd5b506104c1611198565b34801561069f57600080fd5b506105226111da565b3480156106b457600080fd5b506105e06106c3366004614a26565b611261565b3480156106d457600080fd5b506104ef6106e3366004614a67565b6112d9565b3480156106f457600080fd5b506104ef610703366004614b5f565b611422565b34801561071457600080fd5b506104c160165481565b34801561072a57600080fd5b506104c16115d7565b34801561073f57600080fd5b506104c16107d081565b34801561075557600080fd5b5060195461048e906001600160a01b031681565b34801561077557600080fd5b506104c160145481565b34801561078b57600080fd5b50610794611655565b60405160ff90911681526020016104a2565b3480156107b257600080fd5b506104ef6107c1366004614c31565b611683565b3480156107d257600080fd5b506104ef6107e13660046149af565b611836565b3480156107f257600080fd5b506104ef610801366004614c7c565b6118e7565b34801561081257600080fd5b5061052261195a565b34801561082757600080fd5b506104ef610836366004614a67565b6119b2565b34801561084757600080fd5b50600d5461048e906001600160a01b031681565b34801561086757600080fd5b506104c16109c481565b34801561087d57600080fd5b506017546105e09060ff1681565b34801561089757600080fd5b506104c16108a6366004614c9a565b611afb565b3480156108b757600080fd5b506108c0611b2f565b604080519384526020840192909252908201526060016104a2565b3480156108e757600080fd5b506104ef6108f6366004614c9a565b611b4c565b34801561090757600080fd5b506104ef6109163660046149af565b611bea565b34801561092757600080fd5b506105e06109363660046149af565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561096057600080fd5b506017546105e090610100900460ff1681565b34801561097f57600080fd5b506104ef61098e366004614c7c565b611dec565b34801561099f57600080fd5b506104c1611e5f565b3480156109b457600080fd5b506104c160185481565b3480156109ca57600080fd5b506104ef6109d93660046149af565b611ecd565b3480156109ea57600080fd5b506105e06109f93660046149af565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610a2357600080fd5b506104c1611fa7565b348015610a3857600080fd5b506104c1610a473660046149af565b6001600160a01b031660009081526020819052604090205490565b348015610a6e57600080fd5b506104ef611fc2565b348015610a8357600080fd5b50600e5461048e906001600160a01b031681565b348015610aa357600080fd5b506104ef61206f565b348015610ab857600080fd5b506104ef610ac7366004614c7c565b6120c6565b6104ef6122b0565b348015610ae057600080fd5b506104ef610aef366004614cb3565b612300565b348015610b0057600080fd5b50601a546001600160a01b031661048e565b348015610b1e57600080fd5b506105e0612412565b348015610b3357600080fd5b506104ef612482565b348015610b4857600080fd5b506104c16126b5565b348015610b5d57600080fd5b506104ef610b6c366004614cb3565b6126ff565b348015610b7d57600080fd5b506040805180820190915260038152624c414960e81b6020820152610574565b348015610ba957600080fd5b506104ef6127dd565b348015610bbe57600080fd5b506105e0610bcd3660046149cc565b6128dc565b348015610bde57600080fd5b506104ef610bed366004614c31565b6128f3565b348015610bfe57600080fd5b506104ef610c0d3660046149af565b612a38565b348015610c1e57600080fd5b506104c1612bc2565b348015610c3357600080fd5b506108c0612c0c565b348015610c4857600080fd5b506015546105e09060ff1681565b348015610c6257600080fd5b506104ef610c71366004614913565b612c9d565b348015610c8257600080fd5b506104ef610c91366004614c31565b612d44565b348015610ca257600080fd5b50601b5461048e906001600160a01b031681565b348015610cc257600080fd5b50600b54610cf39061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016104a2565b348015610d2d57600080fd5b506104ef610d3c3660046149f8565b612e03565b348015610d4d57600080fd5b50600f5461048e906001600160a01b031681565b348015610d6d57600080fd5b506104ef610d7c366004614c31565b612ee5565b348015610d8d57600080fd5b506104c1610d9c3660046149f8565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610dd357600080fd5b506104ef610de23660046149af565b612f71565b348015610df357600080fd5b506104ef613372565b348015610e0857600080fd5b506104ef610e17366004614c31565b61344e565b348015610e2857600080fd5b506104ef610e37366004614d04565b6134da565b348015610e4857600080fd5b506012546105e090610100900460ff1681565b348015610e6757600080fd5b506104ef610e76366004614c7c565b613796565b601a546001600160a01b03163314610ec85760405162461bcd60e51b8152602060048201526011602482015260008051602061504783398151915260448201526064015b60405180910390fd5b60175460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610f1d57600080fd5b505af1158015610f31573d6000803e3d6000fd5b505050505050565b601a546001600160a01b03163314610f815760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610fb0338484613809565b5060015b92915050565b6000610fc86012600a614e30565b601154610fd59190614e3f565b905090565b601a546001600160a01b031633146110225760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b60095460ff1661103157600080fd5b6001600160a01b038216301480159061105357506001600160a01b0381163014155b801561106d5750600d546001600160a01b03838116911614155b80156110875750600d546001600160a01b03828116911614155b6110c15760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610ebf565b806001600160a01b0316826001600160a01b031603611123576001600160a01b03811660009081526004602090815260408083208054600160ff1991821681179092556008909352922080549091168217905561111f908290611dec565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff1991821681179092559587168085528285208054881683179055948452600890925280832080548616831790559282529190208054909216811790915561118d908390611dec565b61111f816001611dec565b60006111a66012600a614e30565b6111b4906311e1a300614e61565b6000036111c057600080fd5b6111cc6012600a614e30565b610fd5906311e1a300614e61565b6000806000601960009054906101000a90046001600160a01b03166001600160a01b0316631cb365696040518163ffffffff1660e01b8152600401606060405180830381865afa158015611232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112569190614e78565b925092509250909192565b6001600160a01b0383166000908152600360209081526040808320338452909152812054600019146112c6576001600160a01b0384166000908152600360209081526040808320338452909152812080548492906112c0908490614eba565b90915550505b6112d1848484613902565b949350505050565b601a546001600160a01b031633146113215760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b606461132f6012600a614e30565b61133d906311e1a300614e61565b6113479190614e3f565b81836113556012600a614e30565b611363906311e1a300614e61565b61136d9190614e61565b6113779190614e3f565b10156113eb5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610ebf565b80826113f96012600a614e30565b611407906311e1a300614e61565b6114119190614e61565b61141b9190614e3f565b6011555050565b601a546001600160a01b0316331461146a5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b80518251146114bb5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ebf565b60005b82518161ffff1610156115d2576114d76012600a614e30565b828261ffff16815181106114ed576114ed614ecd565b60200260200101516114ff9190614e61565b33600090815260208190526040902054101561155d5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ebf565b6115bf33848361ffff168151811061157757611577614ecd565b60200260200101516012600a61158d9190614e30565b858561ffff16815181106115a3576115a3614ecd565b60200260200101516115b59190614e61565b6000806001613e19565b50806115ca81614ee3565b9150506114be565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546116319190614f04565b61163d6012600a614e30565b61164b906311e1a300614e61565b610fd59190614eba565b60006116636012600a614e30565b611671906311e1a300614e61565b60000361167d57600080fd5b50601290565b601a546001600160a01b031633146116cb5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b600c5460ff161561171e5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610ebf565b6107d08361ffff161115801561173a57506107d08261ffff1611155b801561174c57506107d08161ffff1611155b6117985760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ebf565b6109c46117a58385614f17565b61ffff1611156117f75760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610ebf565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601a546001600160a01b0316331461187e5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6017546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156118cc57600080fd5b505af11580156118e0573d6000803e3d6000fd5b5050505050565b601a546001600160a01b0316331461192f5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000806000601960009054906101000a90046001600160a01b03166001600160a01b0316633bff82716040518163ffffffff1660e01b8152600401606060405180830381865afa158015611232573d6000803e3d6000fd5b601a546001600160a01b031633146119fa5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6064611a086012600a614e30565b611a16906311e1a300614e61565b611a209190614e3f565b8183611a2e6012600a614e30565b611a3c906311e1a300614e61565b611a469190614e61565b611a509190614e3f565b1015611ac45760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ebf565b8082611ad26012600a614e30565b611ae0906311e1a300614e61565b611aea9190614e61565b611af49190614e3f565b6010555050565b600d546001600160a01b031660009081526020819052604081205461271090611b25908490614e61565b610fb49190614e3f565b6000806000611b3c612bc2565b611b44611e5f565b6112566126b5565b601a546001600160a01b03163314611b945760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6096811115611be55760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ebf565b601655565b601a546001600160a01b03163314611c325760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6001600160a01b038116611cae5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ebf565b61deac196001600160a01b03821601611d2f5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ebf565b601a54611d46906001600160a01b03166000611dec565b611d51816001611dec565b601a546001600160a01b031660009081526020819052604090205415611d9a57601a546001600160a01b0316600081815260208190526040902054611d98919083906115b5565b505b601a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a546001600160a01b03163314611e345760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60195460408051635a211e2760e01b815290516000926001600160a01b031691635a211e279160048083019260209291908290030181865afa158015611ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190614f39565b601a546001600160a01b03163314611f155760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b60175460ff1615611f2557600080fd5b306001600160a01b03821603611f7d5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ebf565b601780546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000611fb56012600a614e30565b601054610fd59190614e3f565b601a546001600160a01b0316331461200a5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b601a54612021906001600160a01b03166000611dec565b601a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601a546001600160a01b031633146120b75760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b600c805460ff19166001179055565b601a546001600160a01b0316331461210e5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b80612181576001600160a01b03828116600081815260016020526040808220805460ff1916905560175490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610f1d57600080fd5b600254156121e8576203f4806002544261219b9190614eba565b116121e85760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ebf565b6001600160a01b03821660009081526001602052604090205460ff16156122515760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ebf565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610f03565b601960009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156118cc57600080fd5b601b546001600160a01b03163314806123235750601a546001600160a01b031633145b6123955760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79207468652044415050206f70657261746f72206f7220746865206f7760448201527f6e65722063616e2063616c6c20746869732066756e6374696f6e2e00000000006064820152608401610ebf565b6019546040516386e115ed60e01b81526001600160a01b0386811660048301528581166024830152848116604483015260648201849052909116906386e115ed906084015b600060405180830381600087803b1580156123f457600080fd5b505af1158015612408573d6000803e3d6000fd5b5050505050505050565b601a546000906001600160a01b0316331461245d5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b600c5461247c90309061010090046001600160a01b0316600019613809565b50600190565b601a546001600160a01b031633146124ca5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b60175460ff161561251d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ebf565b601754610100900460ff166125745760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ebf565b6017546201000090046001600160a01b03166125a4576017805462010000600160b01b0319163062010000021790555b601754600d54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561261657600080fd5b505af1925050508015612627575060015b5060178054600160ff1991821617909155600980549091169055600d546001600160a01b03166000908152602081905260409020546127109061266b90600a614e61565b6126759190614e3f565b601355600d546001600160a01b0316600090815260208190526040902054612710906126a290601e614e61565b6126ac9190614e3f565b60145542601855565b601954604080516346640e1760e11b815290516000926001600160a01b031691638cc81c2e9160048083019260209291908290030181865afa158015611ea9573d6000803e3d6000fd5b601b546001600160a01b03163314806127225750601a546001600160a01b031633145b6127945760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79207468652044415050206f70657261746f72206f7220746865206f7760448201527f6e65722063616e2063616c6c20746869732066756e6374696f6e2e00000000006064820152608401610ebf565b6019546040516347e2d14d60e11b81526001600160a01b038681166004830152858116602483015284811660448301526064820184905290911690638fc5a29a906084016123da565b601b546001600160a01b03163314806128005750601a546001600160a01b031633145b6128725760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79207468652044415050206f70657261746f72206f7220746865206f7760448201527f6e65722063616e2063616c6c20746869732066756e6374696f6e2e00000000006064820152608401610ebf565b601960009054906101000a90046001600160a01b03166001600160a01b03166397c0bba16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128c257600080fd5b505af11580156128d6573d6000803e3d6000fd5b50505050565b60006128e9338484613902565b5060019392505050565b601a546001600160a01b0316331461293b5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b600b805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff199094169288169290921792909217161790558261297f8284614f17565b6129899190614f17565b600b805467ffff0000000000001916660100000000000061ffff93841602179055600a546000916129c39162010000810482169116614f17565b600b5461ffff918216925066010000000000009004168110156128d65760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ebf565b601a546001600160a01b03163314612a805760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b306001600160a01b03821603612ad85760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ebf565b601a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b539190614f39565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612b9e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d29190614f52565b601954604080516357ed520760e11b815290516000926001600160a01b03169163afdaa40e9160048083019260209291908290030181865afa158015611ea9573d6000803e3d6000fd5b6000806000601960009054906101000a90046001600160a01b03166001600160a01b031663b13c86a36040518163ffffffff1660e01b8152600401606060405180830381865afa158015612c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c889190614e78565b61ffff92831696918316955090911692509050565b601a546001600160a01b03163314612ce55760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601a546001600160a01b03163314612d8c5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b601954604051633038157960e21b815261ffff80861660048301528085166024830152831660448201526001600160a01b039091169063c0e055e4906064015b600060405180830381600087803b158015612de657600080fd5b505af1158015612dfa573d6000803e3d6000fd5b50505050505050565b601a546001600160a01b03163314612e4b5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6001600160a01b03821615801590612e6b57506001600160a01b03811615155b612eb75760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ebf565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b601a546001600160a01b03163314612f2d5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b60195460405163da91ed7d60e01b815261ffff80861660048301528085166024830152831660448201526001600160a01b039091169063da91ed7d90606401612dcc565b601a546001600160a01b03163314612fb95760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b601754610100900460ff16156130115760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ebf565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015613056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307a9190614f6f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130eb9190614f6f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015613136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315a9190614f6f565b600d546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166132f057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e99190614f6f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325a9190614f6f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156132a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cb9190614f6f565b600d80546001600160a01b0319166001600160a01b039290921691909117905561330c565b600d80546001600160a01b0319166001600160a01b0383161790555b600c805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600d5482166000908152600160208190526040909120805460ff1916909117905591546115d2923092910416600019613809565b601a546001600160a01b031633146133ba5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b601754610100900460ff16156134125760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ebf565b601a546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561344b573d6000803e3d6000fd5b50565b601a546001600160a01b031633146134965760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b60195460405163fa23848f60e01b815261ffff80861660048301528085166024830152831660448201526001600160a01b039091169063fa23848f90606401612dcc565b601a546001600160a01b031633146135225760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b82846135306012600a614e30565b61353e906311e1a300614e61565b6135489190614e61565b6135529190614e3f565b60135580826135636012600a614e30565b613571906311e1a300614e61565b61357b9190614e61565b6135859190614e3f565b601481905560135411156135e55760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ebf565b600d546001600160a01b03166000908152602081905260409020546127109061360f906096614e61565b6136199190614e3f565b60145411156136765760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ebf565b620f42406136866012600a614e30565b613694906311e1a300614e61565b61369e9190614e3f565b60145410156137065760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ebf565b620f42406137166012600a614e30565b613724906311e1a300614e61565b61372e9190614e3f565b60135410156128d65760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ebf565b601a546001600160a01b031633146137de5760405162461bcd60e51b815260206004820152601160248201526000805160206150478339815191526044820152606401610ebf565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166138555760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ebf565b6001600160a01b0382166138a15760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ebf565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166139685760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ebf565b6001600160a01b0383166139ca5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ebf565b60008211613a2c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ebf565b6001600160a01b0384166000908152600160205260408120548190819060ff1615613a5a5760019250613a88565b6001600160a01b03861660009081526001602052604090205460ff1615613a845760019150613a88565b5060015b613a9287876140cc565b15613d1f5760175460ff16613b935780613aee5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ebf565b6001600160a01b03871660009081526005602052604090205460ff16158015613b3057506001600160a01b03861660009081526005602052604090205460ff16155b15613b935760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ebf565b8280613b9c5750815b15613c4b576001600160a01b03871660009081526007602052604090205460ff16158015613be357506001600160a01b03861660009081526007602052604090205460ff16155b15613c4b57601054851115613c4b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ebf565b600c546001600160a01b038781166101009092041614801590613c6c575081155b15613d1f576001600160a01b03861660009081526007602052604090205460ff16613d1f5760115485613cb4886001600160a01b031660009081526020819052604090205490565b613cbe9190614f04565b1115613d1f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610ebf565b8115613e005760125460ff16613e0057601254610100900460ff168015613d5f57506001600160a01b03861660009081526008602052604090205460ff16155b8015613d8457506001600160a01b03871660009081526008602052604090205460ff16155b15613e0057306000908152602081905260409020546013548110613dfe5760145460155460ff1615613de857601654600d546001600160a01b031660009081526020819052604090205461271091613ddb91614e61565b613de59190614e3f565b90505b808210613df3578091505b613dfc826141e3565b505b505b613e0e878787868686613e19565b979650505050505050565b6000613e2587876140cc565b15613ebf5760175460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613ea8575060408051601f3d908101601f19168201909252613ea591810190614f52565b60015b613eb157600080fd5b905080613ebd57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680613f0157506001600160a01b03871660009081526006602052604090205460ff165b15613f0a575060005b6001600160a01b03881660009081526020819052604081208054889290613f32908490614eba565b909155506000905081613f455786613f51565b613f518987878a6146b0565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613f879190614f04565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613fd391815260200190565b60405180910390a3601754610100900460ff166140bd57613ff489896147c5565b601754610100900460ff16158015614011575061401189896140cc565b801561403657506001600160a01b03891660009081526005602052604090205460ff16155b801561405b57506001600160a01b03881660009081526005602052604090205460ff16155b8015614065575083155b156140bd5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ebf565b50600198975050505050505050565b601a546000906001600160a01b038481169116148015906140fb5750601a546001600160a01b03838116911614155b80156141125750601a546001600160a01b03163214155b801561413757506001600160a01b03821660009081526004602052604090205460ff16155b801561415c57506001600160a01b03831660009081526004602052604090205460ff16155b801561417357506001600160a01b03821661dead14155b801561418757506001600160a01b03821615155b801561419c57506001600160a01b0383163014155b80156141bc57506017546001600160a01b03848116620100009092041614155b80156141dc57506017546001600160a01b03838116620100009092041614155b9392505050565b6012805460ff1916600117905560408051608081018252600b5461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000090049091166060820181905260000361424457506146a3565b306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902054600019146142a757306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff16856142c89190614e61565b6142d29190614e3f565b6142dc9190614e3f565b905060006142ea8285614eba565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061432457614324614ecd565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614397573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143bb9190614f6f565b816001815181106143ce576143ce614ecd565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac9479061441b908590600090869030904290600401614f8c565b600060405180830381600087803b15801561443557600080fd5b505af1925050508015614446575060015b61445357505050506146a3565b476000836144618684614e61565b61446b9190614e3f565b9050841561455157600c54600f5460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af193505050508015614505575060408051601f3d908101601f1916820190925261450291810190614ffd565b60015b614514575050505050506146a3565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b61455b8183614eba565b9150856000015186606001818151614573919061502b565b61ffff908116909152606088015160408901516000935083929182169161459b911686614e61565b6145a59190614e3f565b905060006145b38286614eba565b60208a015190915061ffff161561462157600e546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114614616576040519150601f19603f3d011682016040523d82523d6000602084013e61461b565b606091505b50909350505b604089015161ffff161561469957601960009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be83620186a0906040518363ffffffff1660e01b81526004016000604051808303818589803b15801561468457600080fd5b5088f19450505050508015614697575060015b505b5050505050505050505b506012805460ff19169055565b60008084156146c65750600a5461ffff166146f0565b83156146df5750600a5462010000900461ffff166146f0565b50600a54640100000000900461ffff165b8060000361470157829150506112d1565b6017546201000090046001600160a01b03163014801561472b5750466001148061472b5750466038145b1561473557506111945b60006127106147448386614e61565b61474e9190614e3f565b905080156147bb573060009081526020819052604081208054839290614775908490614f04565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613e0e8185614eba565b601754610100900460ff16156148295760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ebf565b61483382826140cc565b15801561484d5750600d546001600160a01b038281169116145b1561111f576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556017805461ff0019166101001790819055620100009004166148c5576017805462010000600160b01b0319163062010000021790555b6012805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612d38565b801515811461344b57600080fd5b6000806040838503121561492657600080fd5b823561493181614905565b9150602083013561494181614905565b809150509250929050565b600060208083528351808285015260005b818110156149795785810183015185820160400152820161495d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461344b57600080fd5b6000602082840312156149c157600080fd5b81356141dc8161499a565b600080604083850312156149df57600080fd5b82356149ea8161499a565b946020939093013593505050565b60008060408385031215614a0b57600080fd5b8235614a168161499a565b915060208301356149418161499a565b600080600060608486031215614a3b57600080fd5b8335614a468161499a565b92506020840135614a568161499a565b929592945050506040919091013590565b60008060408385031215614a7a57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614ac857614ac8614a89565b604052919050565b600067ffffffffffffffff821115614aea57614aea614a89565b5060051b60200190565b600082601f830112614b0557600080fd5b81356020614b1a614b1583614ad0565b614a9f565b82815260059290921b84018101918181019086841115614b3957600080fd5b8286015b84811015614b545780358352918301918301614b3d565b509695505050505050565b60008060408385031215614b7257600080fd5b823567ffffffffffffffff80821115614b8a57600080fd5b818501915085601f830112614b9e57600080fd5b81356020614bae614b1583614ad0565b82815260059290921b84018101918181019089841115614bcd57600080fd5b948201945b83861015614bf4578535614be58161499a565b82529482019490820190614bd2565b96505086013592505080821115614c0a57600080fd5b50614c1785828601614af4565b9150509250929050565b61ffff8116811461344b57600080fd5b600080600060608486031215614c4657600080fd5b8335614c5181614c21565b92506020840135614c6181614c21565b91506040840135614c7181614c21565b809150509250925092565b60008060408385031215614c8f57600080fd5b82356149318161499a565b600060208284031215614cac57600080fd5b5035919050565b60008060008060808587031215614cc957600080fd5b8435614cd48161499a565b93506020850135614ce48161499a565b92506040850135614cf48161499a565b9396929550929360600135925050565b60008060008060808587031215614d1a57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115614d87578160001904821115614d6d57614d6d614d36565b80851615614d7a57918102915b93841c9390800290614d51565b509250929050565b600082614d9e57506001610fb4565b81614dab57506000610fb4565b8160018114614dc15760028114614dcb57614de7565b6001915050610fb4565b60ff841115614ddc57614ddc614d36565b50506001821b610fb4565b5060208310610133831016604e8410600b8410161715614e0a575081810a610fb4565b614e148383614d4c565b8060001904821115614e2857614e28614d36565b029392505050565b60006141dc60ff841683614d8f565b600082614e5c57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610fb457610fb4614d36565b600080600060608486031215614e8d57600080fd5b8351614e9881614c21565b6020850151909350614ea981614c21565b6040850151909250614c7181614c21565b81810381811115610fb457610fb4614d36565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614efa57614efa614d36565b6001019392505050565b80820180821115610fb457610fb4614d36565b61ffff818116838216019080821115614f3257614f32614d36565b5092915050565b600060208284031215614f4b57600080fd5b5051919050565b600060208284031215614f6457600080fd5b81516141dc81614905565b600060208284031215614f8157600080fd5b81516141dc8161499a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614fdc5784516001600160a01b031683529383019391830191600101614fb7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561501257600080fd5b8351925060208401519150604084015190509250925092565b61ffff828116828216039080821115614f3257614f32614d3656fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220b80eeb49c87c6c1c9537172d367df63f30676082456eb8e2687bc84672feeb2e64736f6c63430008130033

Deployed Bytecode Sourcemap

9665:27076:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11391:73;;;;;;;;;;;;11422:42;11391:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;11391:73:0;;;;;;;;11857:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;11857:28:0;245:177:1;20793:153:0;;;;;;;;;;-1:-1:-1;20793:153:0;;;;;:::i;:::-;;:::i;:::-;;10780:109;;;;;;;;;;-1:-1:-1;10780:109: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;10780:109:0;931:365:1;16573:80:0;;;;;;;;;;-1:-1:-1;16645:5:0;;;;;;;;;;;;-1:-1:-1;;;16645:5:0;;;;16573:80;;;;;;;:::i;11330:26::-;;;;;;;;;;-1:-1:-1;11330:26:0;;;;;;;-1:-1:-1;;;;;11330:26:0;;;15779:110;;;;;;;;;;-1:-1:-1;15779:110:0;;;;;:::i;:::-;;:::i;11297:26::-;;;;;;;;;;-1:-1:-1;11297:26:0;;;;;;;;;;;2678:14:1;;2671:22;2653:41;;2641:2;2626:18;11297:26:0;2513:187:1;17183:161:0;;;;;;;;;;-1:-1:-1;17183:161:0;;;;;:::i;:::-;;:::i;20222:140::-;;;;;;;;;;-1:-1:-1;20222:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;20320:34:0;20296:4;20320:34;;;:25;:34;;;;;;;;;20222:140;23084:114;;;;;;;;;;;;;:::i;24606:809::-;;;;;;;;;;-1:-1:-1;24606:809:0;;;;;:::i;:::-;;:::i;16244:115::-;;;;;;;;;;;;;:::i;35074:160::-;;;;;;;;;;;;;:::i;17853:306::-;;;;;;;;;;-1:-1:-1;17853:306:0;;;;;:::i;:::-;;:::i;22696:264::-;;;;;;;;;;-1:-1:-1;22696:264:0;;;;;:::i;:::-;;:::i;31812:447::-;;;;;;;;;;-1:-1:-1;31812:447:0;;;;;:::i;:::-;;:::i;11965:33::-;;;;;;;;;;;;;;;;20526:141;;;;;;;;;;;;;:::i;11041:42::-;;;;;;;;;;;;11079:4;11041:42;;12154:34;;;;;;;;;;-1:-1:-1;12154:34:0;;;;-1:-1:-1;;;;;12154:34:0;;;11892:25;;;;;;;;;;;;;;;;16365:112;;;;;;;;;;;;;:::i;:::-;;;7051:4:1;7039:17;;;7021:36;;7009:2;6994:18;16365:112:0;6879:184:1;21144:544:0;;;;;;;;;;-1:-1:-1;21144:544:0;;;;;:::i;:::-;;:::i;20675:110::-;;;;;;;;;;-1:-1:-1;20675:110:0;;;;;:::i;:::-;;:::i;19797:140::-;;;;;;;;;;-1:-1:-1;19797:140:0;;;;;:::i;:::-;;:::i;34914:152::-;;;;;;;;;;;;;:::i;22420:268::-;;;;;;;;;;-1:-1:-1;22420:268:0;;;;;:::i;:::-;;:::i;11363:21::-;;;;;;;;;;-1:-1:-1;11363:21:0;;;;-1:-1:-1;;;;;11363:21:0;;;11194:46;;;;;;;;;;;;11236:4;11194:46;;12005:34;;;;;;;;;;-1:-1:-1;12005:34:0;;;;;;;;23206:189;;;;;;;;;;-1:-1:-1;23206:189:0;;;;;:::i;:::-;;:::i;34538:206::-;;;;;;;;;;;;;:::i;:::-;;;;8492:25:1;;;8548:2;8533:18;;8526:34;;;;8576:18;;;8569:34;8480:2;8465:18;34538:206:0;8290:319:1;24110:217:0;;;;;;;;;;-1:-1:-1;24110:217:0;;;;;:::i;:::-;;:::i;14803:654::-;;;;;;;;;;-1:-1:-1;14803:654:0;;;;;:::i;:::-;;:::i;19945:127::-;;;;;;;;;;-1:-1:-1;19945:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;20036:28:0;20012:4;20036:28;;;:19;:28;;;;;;;;;19945:127;12046:36;;;;;;;;;;-1:-1:-1;12046:36:0;;;;;;;;;;;20080:134;;;;;;;;;;-1:-1:-1;20080:134:0;;;;;:::i;:::-;;:::i;34274:124::-;;;;;;;;;;;;;:::i;12119:26::-;;;;;;;;;;;;;;;;19427:222;;;;;;;;;;-1:-1:-1;19427:222:0;;;;;:::i;:::-;;:::i;19657:132::-;;;;;;;;;;-1:-1:-1;19657:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;19751:30:0;19727:4;19751:30;;;:21;:30;;;;;;;;;19657:132;22968:108;;;;;;;;;;;;;:::i;16885:117::-;;;;;;;;;;-1:-1:-1;16885:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;16978:16:0;16951:7;16978:16;;;;;;;;;;;;16885:117;15465:225;;;;;;;;;;;;;:::i;11471:92::-;;;;;;;;;;-1:-1:-1;11471:92:0;;;;-1:-1:-1;;;;;11471:92:0;;;20954:182;;;;;;;;;;;;;:::i;18855:564::-;;;;;;;;;;-1:-1:-1;18855:564:0;;;;;:::i;:::-;;:::i;35763:90::-;;;:::i;36088:317::-;;;;;;;;;;-1:-1:-1;36088:317:0;;;;;:::i;:::-;;:::i;16659:79::-;;;;;;;;;;-1:-1:-1;16729:6:0;;-1:-1:-1;;;;;16729:6:0;16659:79;;17670:175;;;;;;;;;;;;;:::i;30723:635::-;;;;;;;;;;;;;:::i;34406:124::-;;;;;;;;;;;;;:::i;36413:325::-;;;;;;;;;;-1:-1:-1;36413:325:0;;;;;:::i;:::-;;:::i;16483:84::-;;;;;;;;;;-1:-1:-1;16557:7:0;;;;;;;;;;;;-1:-1:-1;;;16557:7:0;;;;16483:84;;35861:219;;;;;;;;;;;;;:::i;17010:165::-;;;;;;;;;;-1:-1:-1;17010:165:0;;;;;:::i;:::-;;:::i;21696:416::-;;;;;;;;;;-1:-1:-1;21696:416:0;;;;;:::i;:::-;;:::i;31556:248::-;;;;;;;;;;-1:-1:-1;31556:248:0;;;;;:::i;:::-;;:::i;34142:124::-;;;;;;;;;;;;;:::i;34752:154::-;;;;;;;;;;;;;:::i;11924:34::-;;;;;;;;;;-1:-1:-1;11924:34:0;;;;;;;;24335:263;;;;;;;;;;-1:-1:-1;24335:263:0;;;;;:::i;:::-;;:::i;35421:159::-;;;;;;;;;;-1:-1:-1;35421:159:0;;;;;:::i;:::-;;:::i;15698:72::-;;;;;;;;;;-1:-1:-1;15698:72:0;;;;-1:-1:-1;;;;;15698:72:0;;;10898:134;;;;;;;;;;-1:-1:-1;10898:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9697:6:1;9730:15;;;9712:34;;9782:15;;;9777:2;9762:18;;9755:43;9834:15;;;9814:18;;;9807:43;;;;9886:15;;;9881:2;9866:18;;9859:43;9674:3;9659:19;10898:134:0;9464:444:1;22120:292:0;;;;;;;;;;-1:-1:-1;22120:292:0;;;;;:::i;:::-;;:::i;11570:92::-;;;;;;;;;;-1:-1:-1;11570:92:0;;;;-1:-1:-1;;;;;11570:92:0;;;35242:171;;;;;;;;;;-1:-1:-1;35242:171:0;;;;;:::i;:::-;;:::i;16744:133::-;;;;;;;;;;-1:-1:-1;16744:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;16846:19:0;;;16828:7;16846:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16744:133;18167:680;;;;;;;;;;-1:-1:-1;18167:680:0;;;;;:::i;:::-;;:::i;31366:182::-;;;;;;;;;;;;;:::i;35588:167::-;;;;;;;;;;-1:-1:-1;35588:167:0;;;;;:::i;:::-;;:::i;23403:699::-;;;;;;;;;;-1:-1:-1;23403:699:0;;;;;:::i;:::-;;:::i;11811:39::-;;;;;;;;;;-1:-1:-1;11811:39:0;;;;;;;;;;;20370:148;;;;;;;;;;-1:-1:-1;20370:148:0;;;;;:::i;:::-;;:::i;20793:153::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;;;;;;;;;20888:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;20888:50:0;;11245:14:1;;11238:22;20888:50:0::1;::::0;::::1;11220:41:1::0;11304:14;;11297:22;11277:18;;;11270:50;20888:11:0;;;::::1;-1:-1:-1::0;;;;;20888:11:0::1;::::0;:26:::1;::::0;11193:18:1;;20888:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20793:153:::0;;:::o;15779:110::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;15855:12:::1;:26:::0;;-1:-1:-1;;;;;;15855:26:0::1;-1:-1:-1::0;;;;;15855:26:0;;;::::1;::::0;;;::::1;::::0;;15779:110::o;17183:161::-;17260:4;17277:37;17286:10;17298:7;17307:6;17277:8;:37::i;:::-;-1:-1:-1;17332:4:0;17183:161;;;;;:::o;23084:114::-;23131:7;23176:13;10458:2;23176;:13;:::i;:::-;23158:14;;:32;;;;:::i;:::-;23151:39;;23084:114;:::o;24606:809::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;24710:23:::1;::::0;::::1;;24702:32;;;::::0;::::1;;-1:-1:-1::0;;;;;24753:23:0;::::1;24771:4;24753:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;24798:24:0;::::1;24817:4;24798:24;;24753:69;:107;;;;-1:-1:-1::0;24844:6:0::1;::::0;-1:-1:-1;;;;;24844:16:0;;::::1;:6:::0;::::1;:16;;24753:107;:146;;;;-1:-1:-1::0;24882:6:0::1;::::0;-1:-1:-1;;;;;24882:17:0;;::::1;:6:::0;::::1;:17;;24753:146;24745:170;;;::::0;-1:-1:-1;;;24745:170:0;;13270:2:1;24745:170:0::1;::::0;::::1;13252:21:1::0;13309:2;13289:18;;;13282:30;-1:-1:-1;;;13328:18:1;;;13321:41;13379:18;;24745:170:0::1;13068:335:1::0;24745:170:0::1;24940:7;-1:-1:-1::0;;;;;24930:17:0::1;:6;-1:-1:-1::0;;;;;24930:17:0::1;::::0;24926:482:::1;;-1:-1:-1::0;;;;;24964:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;24993:4:::1;-1:-1:-1::0;;24964:33:0;;::::1;::::0;::::1;::::0;;;25012:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;25059:34:::1;::::0;24964:26;;25059:19:::1;:34::i;:::-;24606:809:::0;;:::o;24926:482::-:1;-1:-1:-1::0;;;;;25126:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;25154:4:::1;-1:-1:-1::0;;25126:32:0;;::::1;::::0;::::1;::::0;;;25173:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;25221:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;25267:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;25314:33:::1;::::0;25126:25;;25314:19:::1;:33::i;:::-;25362:34;25382:7;25391:4;25362:19;:34::i;16244:115::-:0;16299:7;10519:13;10458:2;10519;:13;:::i;:::-;10502:30;;10310:11;10502:30;:::i;:::-;16325:1;16314:12;16310:31;;16330:8;;;16310:31;10519:13;10458:2;10519;:13;:::i;:::-;10502:30;;10310:11;10502:30;:::i;35074:160::-;35129:12;35143:13;35158:12;35190:13;;;;;;;;;-1:-1:-1;;;;;35190:13:0;-1:-1:-1;;;;;35190:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35183:43;;;;;;35074:160;;;:::o;17853:306::-;-1:-1:-1;;;;;17974:19:0;;17953:4;17974:19;;;:11;:19;;;;;;;;17994:10;17974:31;;;;;;;;-1:-1:-1;;17974:52:0;17970:126;;-1:-1:-1;;;;;18043:19:0;;;;;;:11;:19;;;;;;;;18063:10;18043:31;;;;;;;:41;;18078:6;;18043:19;:41;;18078:6;;18043:41;:::i;:::-;;;;-1:-1:-1;;17970:126:0;18115:36;18125:6;18133:9;18144:6;18115:9;:36::i;:::-;18108:43;17853:306;-1:-1:-1;;;;17853:306:0:o;22696:264::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;22838:3:::1;10519:13;10458:2;10519;:13;:::i;:::-;10502:30;::::0;10310:11:::1;10502:30;:::i;:::-;22828:13;;;;:::i;:::-;22816:7:::0;22805;10519:13:::1;10458:2;10519;:13;:::i;:::-;10502:30;::::0;10310:11:::1;10502:30;:::i;:::-;22795:17;;;;:::i;:::-;22794:29;;;;:::i;:::-;:48;;22786:109;;;::::0;-1:-1:-1;;;22786:109:0;;14434:2:1;22786:109:0::1;::::0;::::1;14416:21:1::0;14473:2;14453:18;;;14446:30;14512:34;14492:18;;;14485:62;14583:18;14563;;;14556:46;14619:19;;22786:109:0::1;14232:412:1::0;22786:109:0::1;22945:7:::0;22934;10519:13:::1;10458:2;10519;:13;:::i;:::-;10502:30;::::0;10310:11:::1;10502:30;:::i;:::-;22924:17;;;;:::i;:::-;22923:29;;;;:::i;:::-;22906:14;:46:::0;-1:-1:-1;;22696:264:0:o;31812:447::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;31947:7:::1;:14;31928:8;:15;:33;31920:67;;;::::0;-1:-1:-1;;;31920:67:0;;14851:2:1;31920:67:0::1;::::0;::::1;14833:21:1::0;14890:2;14870:18;;;14863:30;14929:23;14909:18;;;14902:51;14970:18;;31920:67:0::1;14649:345:1::0;31920:67:0::1;32003:8;31998:254;32021:8;:15;32017:1;:19;;;31998:254;;;32102:13;10458:2;32102;:13;:::i;:::-;32091:7;32099:1;32091:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;32076:10;16951:7:::0;16978:16;;;;;;;;;;;32066:49:::1;;32058:80;;;::::0;-1:-1:-1;;;32058:80:0;;15333:2:1;32058:80:0::1;::::0;::::1;15315:21:1::0;15372:2;15352:18;;;15345:30;15411:20;15391:18;;;15384:48;15449:18;;32058:80:0::1;15131:342:1::0;32058:80:0::1;32153:87;32170:10;32182:8;32191:1;32182:11;;;;;;;;;;:::i;:::-;;;;;;;10458:2;32206;:13;;;;:::i;:::-;32195:7;32203:1;32195:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;32221:5;32228::::0;32235:4:::1;32153:16;:87::i;:::-;-1:-1:-1::0;32038:3:0;::::1;::::0;::::1;:::i;:::-;;;;31998:254;;;;31812:447:::0;;:::o;20526:141::-;20579:7;16978:16;;;;;;11422:42;16978:16;;;;20618:39;;16978:16;20618:39;:::i;:::-;10519:13;10458:2;10519;:13;:::i;:::-;10502:30;;10310:11;10502:30;:::i;:::-;20607:51;;;;:::i;16365:112::-;16417:5;10519:13;10458:2;10519;:13;:::i;:::-;10502:30;;10310:11;10502:30;:::i;:::-;16441:1;16430:12;16426:31;;16446:8;;;16426:31;-1:-1:-1;10458:2:0;;16365:112::o;21144:544::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;21252:14:::1;::::0;::::1;;21251:15;21243:45;;;::::0;-1:-1:-1;;;21243:45:0;;16012:2:1;21243:45:0::1;::::0;::::1;15994:21:1::0;16051:2;16031:18;;;16024:30;16090:19;16070:18;;;16063:47;16127:18;;21243:45:0::1;15810:341:1::0;21243:45:0::1;11079:4;21307:6;:21;;;;:65;;;;;11129:4;21349:7;:23;;;;21307:65;:117;;;;;11183:4;21393:11;:31;;;;21307:117;21299:170;;;::::0;-1:-1:-1;;;21299:170:0;;16358:2:1;21299:170:0::1;::::0;::::1;16340:21:1::0;16397:2;16377:18;;;16370:30;16436:25;16416:18;;;16409:53;16479:18;;21299:170:0::1;16156:347:1::0;21299:170:0::1;11236:4;21488:16;21497:7:::0;21488:6;:16:::1;:::i;:::-;:35;;;;21480:80;;;::::0;-1:-1:-1;;;21480:80:0;;16883:2:1;21480:80:0::1;::::0;::::1;16865:21:1::0;;;16902:18;;;16895:30;16961:34;16941:18;;;16934:62;17013:18;;21480:80:0::1;16681:356:1::0;21480:80:0::1;21571:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;21607:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;21645:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;21144:544::o;20675:110::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;20744:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;20744:33:0;;-1:-1:-1;;;;;178:55:1;;;20744:33:0::1;::::0;::::1;160:74:1::0;20744:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;20744:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20675:110:::0;:::o;19797:140::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;-1:-1:-1;;;;;19889:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;19889:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19797:140::o;34914:152::-;34965:12;34979:13;34994:12;35026:13;;;;;;;;;-1:-1:-1;;;;;35026:13:0;-1:-1:-1;;;;;35026:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22420:268;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;22561:3:::1;10519:13;10458:2;10519;:13;:::i;:::-;10502:30;::::0;10310:11:::1;10502:30;:::i;:::-;22551:13;;;;:::i;:::-;22539:7:::0;22528;10519:13:::1;10458:2;10519;:13;:::i;:::-;10502:30;::::0;10310:11:::1;10502:30;:::i;:::-;22518:17;;;;:::i;:::-;22517:29;;;;:::i;:::-;:48;;22509:116;;;::::0;-1:-1:-1;;;22509:116:0;;17244:2:1;22509:116:0::1;::::0;::::1;17226:21:1::0;17283:2;17263:18;;;17256:30;17322:34;17302:18;;;17295:62;17393:25;17373:18;;;17366:53;17436:19;;22509:116:0::1;17042:419:1::0;22509:116:0::1;22673:7:::0;22662;10519:13:::1;10458:2;10519;:13;:::i;:::-;10502:30;::::0;10310:11:::1;10502:30;:::i;:::-;22652:17;;;;:::i;:::-;22651:29;;;;:::i;:::-;22636:12;:44:::0;-1:-1:-1;;22420:268:0:o;23206:189::-;23335:6;;-1:-1:-1;;;;;23335:6:0;23297:7;16978:16;;;;;;;;;;;11283:5;;23325:41;;23345:21;;23325:41;:::i;:::-;23324:62;;;;:::i;34538:206::-;34579:19;34600;34621:23;34665:22;:20;:22::i;:::-;34689;:20;:22::i;:::-;34713;:20;:22::i;24110:217::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;24240:3:::1;24214:22;:29;;24206:64;;;::::0;-1:-1:-1;;;24206:64:0;;17668:2:1;24206:64:0::1;::::0;::::1;17650:21:1::0;17707:2;17687:18;;;17680:30;17746:24;17726:18;;;17719:52;17788:18;;24206:64:0::1;17466:346:1::0;24206:64:0::1;24281:13;:38:::0;24110:217::o;14803:654::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;-1:-1:-1;;;;;14882:22:0;::::1;14874:96;;;::::0;-1:-1:-1;;;14874:96:0;;18019:2:1;14874:96:0::1;::::0;::::1;18001:21:1::0;18058:2;18038:18;;;18031:30;18097:34;18077:18;;;18070:62;18168:31;18148:18;;;18141:59;18217:19;;14874:96:0::1;17817:425:1::0;14874:96:0::1;-1:-1:-1::0;;;;;;;14989:16:0;::::1;::::0;14981:90:::1;;;::::0;-1:-1:-1;;;14981:90:0;;18019:2:1;14981:90:0::1;::::0;::::1;18001:21:1::0;18058:2;18038:18;;;18031:30;18097:34;18077:18;;;18070:62;18168:31;18148:18;;;18141:59;18217:19;;14981:90:0::1;17817:425:1::0;14981:90:0::1;15102:6;::::0;15082:34:::1;::::0;-1:-1:-1;;;;;15102:6:0::1;;15082:19;:34::i;:::-;15127:35;15147:8;15157:4;15127:19;:35::i;:::-;15197:6;::::0;-1:-1:-1;;;;;15197:6:0::1;15207:1;16978:16:::0;;;;;;;;;;;15187:21;15183:127:::1;;15242:6;::::0;-1:-1:-1;;;;;15242:6:0::1;16951:7:::0;16978:16;;;;;;;;;;;15225:73:::1;::::0;15242:6;15250:8;;15260:17:::1;16885:117:::0;15225:73:::1;;15183:127;15349:6;::::0;;-1:-1:-1;;;;;15366:17:0;;::::1;-1:-1:-1::0;;;;;;15366:17:0;::::1;::::0;::::1;::::0;;;15399:40:::1;::::0;15349:6;::::1;::::0;15366:17;15349:6;;15399:40:::1;::::0;15330:16:::1;::::0;15399:40:::1;14863:594;14803:654:::0;:::o;20080:134::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;-1:-1:-1;;;;;20168:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;20168:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20080:134::o;34274:124::-;34354:13;;:36;;;-1:-1:-1;;;34354:36:0;;;;34327:7;;-1:-1:-1;;;;;34354:13:0;;:34;;:36;;;;;;;;;;;;;;:13;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19427:222::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;19511:14:::1;::::0;::::1;;19510:15;19502:24;;;::::0;::::1;;19568:4;-1:-1:-1::0;;;;;19545:28:0;::::1;::::0;19537:55:::1;;;::::0;-1:-1:-1;;;19537:55:0;;18638:2:1;19537:55:0::1;::::0;::::1;18620:21:1::0;18677:2;18657:18;;;18650:30;18716:16;18696:18;;;18689:44;18750:18;;19537:55:0::1;18436:338:1::0;19537:55:0::1;19603:11;:38:::0;;-1:-1:-1;;;;;19603:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;19603:38:0;;::::1;::::0;;;::::1;::::0;;19427:222::o;22968:108::-;23011:7;23054:13;10458:2;23054;:13;:::i;:::-;23038:12;;:30;;;;:::i;15465:225::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;15544:6:::1;::::0;15524:34:::1;::::0;-1:-1:-1;;;;;15544:6:0::1;;15524:19;:34::i;:::-;15588:6;::::0;;-1:-1:-1;;;;;;15605:19:0;::::1;::::0;;;15640:42:::1;::::0;-1:-1:-1;;;;;15588:6:0;;::::1;::::0;15569:16:::1;::::0;15588:6;;15640:42:::1;::::0;15569:16;;15640:42:::1;15513:177;15465:225::o:0;20954:182::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;21107:14:::1;:21:::0;;-1:-1:-1;;21107:21:0::1;21124:4;21107:21;::::0;;20954:182::o;18855:564::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;18937:7:::1;18932:480;;-1:-1:-1::0;;;;;18961:13:0;;::::1;18977:5;18961:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;18961:21:0::1;::::0;;18997:11:::1;::::0;:34;;-1:-1:-1;;;18997:34:0;;::::1;::::0;::::1;18947:74:1::0;;;;19037:18;;;19030:50;;;;18997:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18920:18:1;;18997:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;18932:480;19068:17;::::0;:22;19064:135:::1;;19157:6;19137:17;;19119:15;:35;;;;:::i;:::-;:44;19111:72;;;::::0;-1:-1:-1;;;19111:72:0;;19293:2:1;19111:72:0::1;::::0;::::1;19275:21:1::0;19332:2;19312:18;;;19305:30;19371:17;19351:18;;;19344:45;19406:18;;19111:72:0::1;19091:339:1::0;19111:72:0::1;-1:-1:-1::0;;;;;19222:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;19221:14;19213:54;;;::::0;-1:-1:-1;;;19213:54:0;;19637:2:1;19213:54:0::1;::::0;::::1;19619:21:1::0;19676:2;19656:18;;;19649:30;19715:29;19695:18;;;19688:57;19762:18;;19213:54:0::1;19435:351:1::0;19213:54:0::1;-1:-1:-1::0;;;;;19282:13:0;;::::1;;::::0;;;19298:4:::1;19282:13;::::0;;;;;;;;:20;;-1:-1:-1;;19282:20:0::1;::::0;::::1;::::0;;19337:15:::1;19317:17;:35:::0;19367:11:::1;::::0;:33;;-1:-1:-1;;;19367:33:0;;::::1;::::0;::::1;18947:74:1::0;;;;19037:18;;;19030:50;19367:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18920:18:1;;19367:33:0::1;18779:307:1::0;35763:90:0;35807:13;;;;;;;;;-1:-1:-1;;;;;35807:13:0;-1:-1:-1;;;;;35807:18:0;;35833:9;35807:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36088:317;36222:12;;-1:-1:-1;;;;;36222:12:0;36208:10;:26;;:50;;-1:-1:-1;36252:6:0;;-1:-1:-1;;;;;36252:6:0;36238:10;:20;36208:50;36200:122;;;;-1:-1:-1;;;36200:122:0;;19993:2:1;36200:122:0;;;19975:21:1;20032:2;20012:18;;;20005:30;20071:34;20051:18;;;20044:62;20142:29;20122:18;;;20115:57;20189:19;;36200:122:0;19791:423:1;36200:122:0;36333:13;;:64;;-1:-1:-1;;;36333:64:0;;-1:-1:-1;;;;;20529:15:1;;;36333:64:0;;;20511:34:1;20581:15;;;20561:18;;;20554:43;20633:15;;;20613:18;;;20606:43;20665:18;;;20658:34;;;36333:13:0;;;;:31;;20422:19:1;;36333:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36088:317;;;;:::o;17670:175::-;14657:6;;17736:4;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;17785:9:::1;::::0;17753:62:::1;::::0;17770:4:::1;::::0;17785:9:::1;::::0;::::1;-1:-1:-1::0;;;;;17785:9:0::1;-1:-1:-1::0;;17753:8:0::1;:62::i;:::-;-1:-1:-1::0;17833:4:0::1;17670:175:::0;:::o;30723:635::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;30785:14:::1;::::0;::::1;;30784:15;30776:52;;;::::0;-1:-1:-1;;;30776:52:0;;20905:2:1;30776:52:0::1;::::0;::::1;20887:21:1::0;20944:2;20924:18;;;20917:30;20983:26;20963:18;;;20956:54;21027:18;;30776:52:0::1;20703:348:1::0;30776:52:0::1;30847:16;::::0;::::1;::::0;::::1;;;30839:53;;;::::0;-1:-1:-1;;;30839:53:0;;21258:2:1;30839:53:0::1;::::0;::::1;21240:21:1::0;21297:2;21277:18;;;21270:30;21336:26;21316:18;;;21309:54;21380:18;;30839:53:0::1;21056:348:1::0;30839:53:0::1;30915:11;::::0;;;::::1;-1:-1:-1::0;;;;;30915:11:0::1;30903:106;;30957:11;:40:::0;;-1:-1:-1;;;;;;30957:40:0::1;30991:4;30957:40:::0;::::1;;::::0;;30903:106:::1;31023:11;::::0;31045:6:::1;::::0;31023:87:::1;::::0;-1:-1:-1;;;31023:87:0;;-1:-1:-1;;;;;31045:6:0;;::::1;31023:87;::::0;::::1;21632:74:1::0;21754:10;31060:12:0::1;21742:23:1::0;21722:18;;;21715:51;21814:18;31082:15:0::1;21802:31:1::0;21782:18;;;21775:59;10458:2:0::1;21850:18:1::0;;;21843:45;31023:11:0;;;::::1;;::::0;:21:::1;::::0;21604:19:1;;31023:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;31019:103:::0;31132:14:::1;:21:::0;;31149:4:::1;-1:-1:-1::0;;31132:21:0;;::::1;;::::0;;;31164:23:::1;:31:::0;;;;::::1;::::0;;31233:6:::1;::::0;-1:-1:-1;;;;;31233:6:0::1;-1:-1:-1::0;16978:16:0;;;;;;;;;;;31249:5:::1;::::0;31223:22:::1;::::0;31243:2:::1;31223:22;:::i;:::-;31222:32;;;;:::i;:::-;31206:13;:48:::0;31289:6:::1;::::0;-1:-1:-1;;;;;31289:6:0::1;16951:7:::0;16978:16;;;;;;;;;;;31305:5:::1;::::0;31279:22:::1;::::0;31299:2:::1;31279:22;:::i;:::-;31278:32;;;;:::i;:::-;31265:10;:45:::0;31335:15:::1;31321:11;:29:::0;30723:635::o;34406:124::-;34486:13;;:36;;;-1:-1:-1;;;34486:36:0;;;;34459:7;;-1:-1:-1;;;;;34486:13:0;;:34;;:36;;;;;;;;;;;;;;:13;:36;;;;;;;;;;;;;;36413:325;36551:12;;-1:-1:-1;;;;;36551:12:0;36537:10;:26;;:50;;-1:-1:-1;36581:6:0;;-1:-1:-1;;;;;36581:6:0;36567:10;:20;36537:50;36529:122;;;;-1:-1:-1;;;36529:122:0;;19993:2:1;36529:122:0;;;19975:21:1;20032:2;20012:18;;;20005:30;20071:34;20051:18;;;20044:62;20142:29;20122:18;;;20115:57;20189:19;;36529:122:0;19791:423:1;36529:122:0;36662:13;;:68;;-1:-1:-1;;;36662:68:0;;-1:-1:-1;;;;;20529:15:1;;;36662:68:0;;;20511:34:1;20581:15;;;20561:18;;;20554:43;20633:15;;;20613:18;;;20606:43;20665:18;;;20658:34;;;36662:13:0;;;;:35;;20422:19:1;;36662:68:0;20219:479:1;35861:219:0;35930:12;;-1:-1:-1;;;;;35930:12:0;35916:10;:26;;:50;;-1:-1:-1;35960:6:0;;-1:-1:-1;;;;;35960:6:0;35946:10;:20;35916:50;35908:122;;;;-1:-1:-1;;;35908:122:0;;19993:2:1;35908:122:0;;;19975:21:1;20032:2;20012:18;;;20005:30;20071:34;20051:18;;;20044:62;20142:29;20122:18;;;20115:57;20189:19;;35908:122:0;19791:423:1;35908:122:0;36041:13;;;;;;;;;-1:-1:-1;;;;;36041:13:0;-1:-1:-1;;;;;36041:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35861:219::o;17010:165::-;17088:4;17105:40;17115:10;17127:9;17138:6;17105:9;:40::i;:::-;-1:-1:-1;17163:4:0;;17010:165;-1:-1:-1;;;17010:165:0:o;21696:416::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;21794:7:::1;:29:::0;;::::1;21874:19:::0;;::::1;::::0;::::1;-1:-1:-1::0;;21834:29:0;;::::1;::::0;::::1;-1:-1:-1::0;;21834:29:0;;;21794;;::::1;21834::::0;;;;;;;::::1;21874:19;;::::0;;21814:9;21924:16:::1;21889:4:::0;21854:9;21924:16:::1;:::i;:::-;:28;;;;:::i;:::-;21904:7;:48:::0;;-1:-1:-1;;21904:48:0::1;::::0;::::1;::::0;;::::1;;;::::0;;21998:9:::1;:17:::0;-1:-1:-1;;21979:36:0::1;::::0;21998:17;;::::1;::::0;::::1;::::0;21979:16:::1;:36;:::i;:::-;22034:7;:17:::0;21963:52:::1;::::0;;::::1;::::0;-1:-1:-1;22034:17:0;;::::1;;:26:::0;-1:-1:-1;22034:26:0::1;22026:78;;;::::0;-1:-1:-1;;;22026:78:0;;22101:2:1;22026:78:0::1;::::0;::::1;22083:21:1::0;22140:2;22120:18;;;22113:30;22179:34;22159:18;;;22152:62;-1:-1:-1;;;22230:18:1;;;22223:37;22277:19;;22026:78:0::1;21899:403:1::0;31556:248:0;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;31655:4:::1;-1:-1:-1::0;;;;;31638:22:0;::::1;::::0;31630:62:::1;;;::::0;-1:-1:-1;;;31630:62:0;;22509:2:1;31630:62:0::1;::::0;::::1;22491:21:1::0;22548:2;22528:18;;;22521:30;22587:29;22567:18;;;22560:57;22634:18;;31630:62:0::1;22307:351:1::0;31630:62:0::1;31757:6;::::0;31765:30:::1;::::0;-1:-1:-1;;;31765:30:0;;31789:4:::1;31765:30;::::0;::::1;160:74:1::0;31725:5:0;;-1:-1:-1;;;;;31742:14:0;;::::1;::::0;::::1;::::0;31757:6;;;::::1;::::0;31742:14;;31765:15:::1;::::0;133:18:1;;31765:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31742:54;::::0;-1:-1:-1;;;;;;31742:54:0::1;::::0;;;;;;-1:-1:-1;;;;;22855:55:1;;;31742:54:0::1;::::0;::::1;22837:74:1::0;22927:18;;;22920:34;22810:18;;31742:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34142:124::-:0;34222:13;;:36;;;-1:-1:-1;;;34222:36:0;;;;34195:7;;-1:-1:-1;;;;;34222:13:0;;:34;;:36;;;;;;;;;;;;;;:13;:36;;;;;;;;;;;;;;34752:154;34796:15;34813:19;34834;34873:13;;;;;;;;;-1:-1:-1;;;;;34873:13:0;-1:-1:-1;;;;;34873:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34866:32;;;;;;;;;-1:-1:-1;34866:32:0;;;;-1:-1:-1;34752:154:0;-1:-1:-1;34752:154:0:o;24335:263::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;24444:19:::1;:33:::0;;-1:-1:-1;;24444:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;24488:22:::1;:47:::0;;-1:-1:-1;;24488:47:0::1;::::0;::::1;;;::::0;;24551:39:::1;::::0;2653:41:1;;;24551:39:0::1;::::0;2641:2:1;2626:18;24551:39:0::1;;;;;;;;24335:263:::0;;:::o;35421:159::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;35520:13:::1;::::0;:52:::1;::::0;-1:-1:-1;;;35520:52:0;;1137:6:1;1170:15;;;35520:52:0::1;::::0;::::1;1152:34:1::0;1222:15;;;1202:18;;;1195:43;1274:15;;1254:18;;;1247:43;-1:-1:-1;;;;;35520:13:0;;::::1;::::0;:30:::1;::::0;1100:18:1;;35520:52:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;35421:159:::0;;;:::o;22120:292::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;-1:-1:-1;;;;;22232:23:0;::::1;::::0;;::::1;::::0;:50:::1;;-1:-1:-1::0;;;;;;22259:23:0;::::1;::::0;::::1;22232:50;22224:86;;;::::0;-1:-1:-1;;;22224:86:0;;23417:2:1;22224:86:0::1;::::0;::::1;23399:21:1::0;23456:2;23436:18;;;23429:30;23495:25;23475:18;;;23468:53;23538:18;;22224:86:0::1;23215:347:1::0;22224:86:0::1;22321:15;:36:::0;;-1:-1:-1;;;;;22321:36:0;;::::1;-1:-1:-1::0;;;;;;22321:36:0;;::::1;;::::0;;;22368:15:::1;:36:::0;;;;;::::1;::::0;::::1;;::::0;;22120:292::o;35242:171::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;35347:13:::1;::::0;:58:::1;::::0;-1:-1:-1;;;35347:58:0;;1137:6:1;1170:15;;;35347:58:0::1;::::0;::::1;1152:34:1::0;1222:15;;;1202:18;;;1195:43;1274:15;;1254:18;;;1247:43;-1:-1:-1;;;;;35347:13:0;;::::1;::::0;:27:::1;::::0;1100:18:1;;35347:58:0::1;931:365:1::0;18167:680:0;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;18247:16:::1;::::0;::::1;::::0;::::1;;;18246:17;18238:60;;;::::0;-1:-1:-1;;;18238:60:0;;23769:2:1;18238:60:0::1;::::0;::::1;23751:21:1::0;23808:2;23788:18;;;23781:30;23847:32;23827:18;;;23820:60;23897:18;;18238:60:0::1;23567:354:1::0;18238:60:0::1;18309:20;18342:9;18309:43;;18363:16;18393:10;-1:-1:-1::0;;;;;18393:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18382:40:0::1;;18431:4;18438:10;-1:-1:-1::0;;;;;18438:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18382:74;::::0;-1:-1:-1;;;;;;18382:74:0::1;::::0;;;;;;-1:-1:-1;;;;;24435:15:1;;;18382:74:0::1;::::0;::::1;24417:34:1::0;24487:15;;24467:18;;;24460:43;24329:18;;18382:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18475:6;::::0;-1:-1:-1;;;;;18475:6:0;;::::1;18485:5;18467:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;18467:23:0::1;::::0;;18363:93;;-1:-1:-1;18505:22:0;::::1;18501:200;;18564:10;-1:-1:-1::0;;;;;18564:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18553:43:0::1;;18605:4;18612:10;-1:-1:-1::0;;;;;18612:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18553:77;::::0;-1:-1:-1;;;;;;18553:77:0::1;::::0;;;;;;-1:-1:-1;;;;;24435:15:1;;;18553:77:0::1;::::0;::::1;24417:34:1::0;24487:15;;24467:18;;;24460:43;24329:18;;18553:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18544:6;:86:::0;;-1:-1:-1;;;;;;18544:86:0::1;-1:-1:-1::0;;;;;18544:86:0;;;::::1;::::0;;;::::1;::::0;;18501:200:::1;;;18672:6;:17:::0;;-1:-1:-1;;;;;;18672:17:0::1;-1:-1:-1::0;;;;;18672:17:0;::::1;;::::0;;18501:200:::1;18711:9;:22:::0;;-1:-1:-1;;18711:22:0::1;;-1:-1:-1::0;;;;;18711:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;18752:6:::1;::::0;;::::1;-1:-1:-1::0;18744:15:0;;;-1:-1:-1;18744:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;18744:22:0::1;::::0;;::::1;::::0;;18809:9;;18777:62:::1;::::0;18794:4:::1;::::0;18809:9;::::1;;-1:-1:-1::0;;18777:8:0::1;:62::i;31366:182::-:0;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;31433:16:::1;::::0;::::1;::::0;::::1;;;31432:17;31424:58;;;::::0;-1:-1:-1;;;31424:58:0;;24716:2:1;31424:58:0::1;::::0;::::1;24698:21:1::0;24755:2;24735:18;;;24728:30;24794;24774:18;;;24767:58;24842:18;;31424:58:0::1;24514:352:1::0;31424:58:0::1;31501:6;::::0;31493:47:::1;::::0;-1:-1:-1;;;;;31501:6:0;;::::1;::::0;31518:21:::1;31493:47:::0;::::1;;;::::0;31501:6:::1;31493:47:::0;31501:6;31493:47;31518:21;31501:6;31493:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;31366:182::o:0;35588:167::-;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;35691:13:::1;::::0;:56:::1;::::0;-1:-1:-1;;;35691:56:0;;1137:6:1;1170:15;;;35691:56:0::1;::::0;::::1;1152:34:1::0;1222:15;;;1202:18;;;1195:43;1274:15;;1254:18;;;1247:43;-1:-1:-1;;;;;35691:13:0;;::::1;::::0;:34:::1;::::0;1100:18:1;;35691:56:0::1;931:365:1::0;23403:699:0;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;23603:16;23583;10519:13:::1;10458:2;10519;:13;:::i;:::-;10502:30;::::0;10310:11:::1;10502:30;:::i;:::-;23573:26;;;;:::i;:::-;23572:47;;;;:::i;:::-;23556:13;:63:::0;23671:13;23654;10519::::1;10458:2;10519;:13;:::i;:::-;10502:30;::::0;10310:11:::1;10502:30;:::i;:::-;23644:23;;;;:::i;:::-;23643:41;;;;:::i;:::-;23630:10;:54:::0;;;23703:13:::1;::::0;:27:::1;;23695:73;;;::::0;-1:-1:-1;;;23695:73:0;;25073:2:1;23695:73:0::1;::::0;::::1;25055:21:1::0;25112:2;25092:18;;;25085:30;25151:34;25131:18;;;25124:62;-1:-1:-1;;;25202:18:1;;;25195:31;25243:19;;23695:73:0::1;24871:397:1::0;23695:73:0::1;23812:6;::::0;-1:-1:-1;;;;;23812:6:0::1;16951:7:::0;16978:16;;;;;;;;;;;11283:5:::1;::::0;23802:23:::1;::::0;23822:3:::1;23802:23;:::i;:::-;23801:44;;;;:::i;:::-;23787:10;;:58;;23779:106;;;::::0;-1:-1:-1;;;23779:106:0;;25475:2:1;23779:106:0::1;::::0;::::1;25457:21:1::0;25514:2;25494:18;;;25487:30;25553:34;25533:18;;;25526:62;-1:-1:-1;;;25604:18:1;;;25597:33;25647:19;;23779:106:0::1;25273:399:1::0;23779:106:0::1;23928:9;10519:13;10458:2;10519;:13;:::i;:::-;10502:30;::::0;10310:11:::1;10502:30;:::i;:::-;23918:19;;;;:::i;:::-;23904:10;;:33;;23896:92;;;::::0;-1:-1:-1;;;23896:92:0;;25879:2:1;23896:92:0::1;::::0;::::1;25861:21:1::0;25918:2;25898:18;;;25891:30;25957:34;25937:18;;;25930:62;-1:-1:-1;;;26008:18:1;;;26001:44;26062:19;;23896:92:0::1;25677:410:1::0;23896:92:0::1;24034:9;10519:13;10458:2;10519;:13;:::i;:::-;10502:30;::::0;10310:11:::1;10502:30;:::i;:::-;24024:19;;;;:::i;:::-;24007:13;;:36;;23999:95;;;::::0;-1:-1:-1;;;23999:95:0;;25879:2:1;23999:95:0::1;::::0;::::1;25861:21:1::0;25918:2;25898:18;;;25891:30;25957:34;25937:18;;;25930:62;-1:-1:-1;;;26008:18:1;;;26001:44;26062:19;;23999:95:0::1;25677:410:1::0;20370:148:0;14657:6;;-1:-1:-1;;;;;14657:6:0;14667:10;14657:20;14649:50;;;;-1:-1:-1;;;14649:50:0;;10914:2:1;14649:50:0;;;10896:21:1;10953:2;10933:18;;;10926:30;-1:-1:-1;;;;;;;;;;;10972:18:1;;;10965:47;11029:18;;14649:50:0;10712:341:1;14649:50:0;-1:-1:-1;;;;;20466:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;20466:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20370:148::o;17352:310::-;-1:-1:-1;;;;;17447:20:0;;17439:52;;;;-1:-1:-1;;;17439:52:0;;26294:2:1;17439:52:0;;;26276:21:1;26333:2;26313:18;;;26306:30;-1:-1:-1;;;26352:18:1;;;26345:49;26411:18;;17439:52:0;26092:343:1;17439:52:0;-1:-1:-1;;;;;17510:21:0;;17502:53;;;;-1:-1:-1;;;17502:53:0;;26294:2:1;17502:53:0;;;26276:21:1;26333:2;26313:18;;;26306:30;-1:-1:-1;;;26352:18:1;;;26345:49;26411:18;;17502:53:0;26092:343:1;17502:53:0;-1:-1:-1;;;;;17568:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;17621:33;;391:25:1;;;17621:33:0;;364:18:1;17621:33:0;;;;;;;17352:310;;;:::o;25877:2286::-;25956:4;-1:-1:-1;;;;;25981:18:0;;25973:68;;;;-1:-1:-1;;;25973:68:0;;26642:2:1;25973:68:0;;;26624:21:1;26681:2;26661:18;;;26654:30;26720:34;26700:18;;;26693:62;-1:-1:-1;;;26771:18:1;;;26764:35;26816:19;;25973:68:0;26440:401:1;25973:68:0;-1:-1:-1;;;;;26060:16:0;;26052:64;;;;-1:-1:-1;;;26052:64:0;;27048:2:1;26052:64:0;;;27030:21:1;27087:2;27067:18;;;27060:30;27126:34;27106:18;;;27099:62;-1:-1:-1;;;27177:18:1;;;27170:33;27220:19;;26052:64:0;26846:399:1;26052:64:0;26144:1;26135:6;:10;26127:64;;;;-1:-1:-1;;;26127:64:0;;27452:2:1;26127:64:0;;;27434:21:1;27491:2;27471:18;;;27464:30;27530:34;27510:18;;;27503:62;-1:-1:-1;;;27581:18:1;;;27574:39;27630:19;;26127:64:0;27250:405:1;26127:64:0;-1:-1:-1;;;;;26290:13:0;;26202:8;26290:13;;;:7;:13;;;;;;26202:8;;;;26290:13;;26286:162;;;26326:4;26320:10;;26286:162;;;-1:-1:-1;;;;;26352:11:0;;;;;;:7;:11;;;;;;;;26348:100;;;26387:4;26380:11;;26348:100;;;-1:-1:-1;26432:4:0;26348:100;26462:20;26473:4;26479:2;26462:10;:20::i;:::-;26458:874;;;26503:14;;;;26499:319;;26543:5;26538:265;;26573:34;;-1:-1:-1;;;26573:34:0;;27862:2:1;26573:34:0;;;27844:21:1;27901:2;27881:18;;;27874:30;27940:26;27920:18;;;27913:54;27984:18;;26573:34:0;27660:348:1;26538:265:0;-1:-1:-1;;;;;26638:31:0;;;;;;:25;:31;;;;;;;;26637:32;:66;;;;-1:-1:-1;;;;;;26674:29:0;;;;;;:25;:29;;;;;;;;26673:30;26637:66;26633:170;;;26728:55;;-1:-1:-1;;;26728:55:0;;28215:2:1;26728:55:0;;;28197:21:1;28254:2;28234:18;;;28227:30;28293:34;28273:18;;;28266:62;-1:-1:-1;;;28344:18:1;;;28337:43;28397:19;;26728:55:0;28013:409:1;26633:170:0;26836:3;:11;;;;26843:4;26836:11;26832:232;;;-1:-1:-1;;;;;26872:27:0;;;;;;:21;:27;;;;;;;;26871:28;:58;;;;-1:-1:-1;;;;;;26904:25:0;;;;;;:21;:25;;;;;;;;26903:26;26871:58;26867:182;;;26972:12;;26962:6;:22;;26954:75;;;;-1:-1:-1;;;26954:75:0;;28629:2:1;26954:75:0;;;28611:21:1;28668:2;28648:18;;;28641:30;28707:34;28687:18;;;28680:62;-1:-1:-1;;;28758:18:1;;;28751:38;28806:19;;26954:75:0;28427:404:1;26954:75:0;27096:9;;-1:-1:-1;;;;;27082:24:0;;;27096:9;;;;;27082:24;;;;:33;;;27111:4;27110:5;27082:33;27078:243;;;-1:-1:-1;;;;;27141:25:0;;;;;;:21;:25;;;;;;;;27136:170;;27225:14;;27215:6;27199:13;27209:2;-1:-1:-1;;;;;16978:16:0;16951:7;16978:16;;;;;;;;;;;;16885:117;27199:13;:22;;;;:::i;:::-;:40;;27191:95;;;;-1:-1:-1;;;27191:95:0;;29038:2:1;27191:95:0;;;29020:21:1;29077:2;29057:18;;;29050:30;29116:34;29096:18;;;29089:62;-1:-1:-1;;;29167:18:1;;;29160:40;29217:19;;27191:95:0;28836:406:1;27191:95:0;27348:4;27344:742;;;27374:6;;;;27369:706;;27405:19;;;;;;;:64;;;;-1:-1:-1;;;;;;27449:20:0;;;;;;:16;:20;;;;;;;;27448:21;27405:64;:111;;;;-1:-1:-1;;;;;;27494:22:0;;;;;;:16;:22;;;;;;;;27493:23;27405:111;27401:659;;;27608:4;27559:28;16978:16;;;;;;;;;;;27665:13;;27641:37;;27637:404;;27725:10;;27766:22;;;;27762:97;;;27823:13;;27813:6;;-1:-1:-1;;;;;27813:6:0;16951:7;16978:16;;;;;;;;;;;11283:5;;27803:33;;;:::i;:::-;27802:54;;;;:::i;:::-;27792:64;;27762:97;27913:7;27889:20;:31;27885:72;;27947:7;27924:30;;27885:72;27983:34;27996:20;27983:12;:34::i;:::-;27680:361;27637:404;27536:524;27401:659;28103:52;28120:4;28126:2;28130:6;28138:3;28143:4;28149:5;28103:16;:52::i;:::-;28096:59;25877:2286;-1:-1:-1;;;;;;;25877:2286:0:o;32267:1055::-;32386:4;32407:20;32418:4;32424:2;32407:10;:20::i;:::-;32403:228;;;32462:11;;:39;;-1:-1:-1;;;32462:39:0;;-1:-1:-1;;;;;29528:15:1;;;32462:39:0;;;29510:34:1;29580:15;;;29560:18;;;29553:43;29612:18;;;29605:34;;;32431:12:0;;32462:11;;;;;:21;;29422:18:1;;32462:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;32462:39:0;;;;;;;;-1:-1:-1;;32462:39:0;;;;;;;;;;;;:::i;:::-;;;32458:122;;32569:8;;;32458:122;32552:5;-1:-1:-1;32598:7:0;32594:26;;32609:8;;;32594:26;32429:202;32403:228;-1:-1:-1;;;;;32675:25:0;;32641:12;32675:25;;;:19;:25;;;;;;32656:4;;32675:25;;;:52;;-1:-1:-1;;;;;;32704:23:0;;;;;;:19;:23;;;;;;;;32675:52;32671:99;;;-1:-1:-1;32753:5:0;32671:99;-1:-1:-1;;;;;32780:13:0;;:7;:13;;;;;;;;;;:23;;32797:6;;32780:7;:23;;32797:6;;32780:23;:::i;:::-;;;;-1:-1:-1;32814:22:0;;-1:-1:-1;32840:7:0;32839:55;;32888:6;32839:55;;;32851:34;32861:4;32867:3;32872:4;32878:6;32851:9;:34::i;:::-;32814:80;;32920:14;32905:7;:11;32913:2;-1:-1:-1;;;;;32905:11:0;-1:-1:-1;;;;;32905:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;32965:2;-1:-1:-1;;;;;32950:34:0;32959:4;-1:-1:-1;;;;;32950:34:0;;32969:14;32950:34;;;;391:25:1;;379:2;364:18;;245:177;32950:34:0;;;;;;;;33000:16;;;;;;;32995:298;;33033:28;33052:4;33058:2;33033:18;:28::i;:::-;33081:16;;;;;;;33080:17;:41;;;;;33101:20;33112:4;33118:2;33101:10;:20::i;:::-;33080:77;;;;-1:-1:-1;;;;;;33126:31:0;;;;;;:25;:31;;;;;;;;33125:32;33080:77;:111;;;;-1:-1:-1;;;;;;33162:29:0;;;;;;:25;:29;;;;;;;;33161:30;33080:111;:121;;;;;33196:5;33195:6;33080:121;33076:206;;;33222:44;;-1:-1:-1;;;33222:44:0;;29852:2:1;33222:44:0;;;29834:21:1;29891:2;29871:18;;;29864:30;29930:34;29910:18;;;29903:62;-1:-1:-1;;;29981:18:1;;;29974:32;30023:19;;33222:44:0;29650:398:1;33076:206:0;-1:-1:-1;33310:4:0;;32267:1055;-1:-1:-1;;;;;;;;32267:1055:0:o;25423:446::-;25524:6;;25492:4;;-1:-1:-1;;;;;25516:14:0;;;25524:6;;25516:14;;;;:43;;-1:-1:-1;25553:6:0;;-1:-1:-1;;;;;25547:12:0;;;25553:6;;25547:12;;25516:43;:79;;;;-1:-1:-1;25589:6:0;;-1:-1:-1;;;;;25589:6:0;25576:9;:19;;25516:79;:118;;;;-1:-1:-1;;;;;;25613:21:0;;;;;;:17;:21;;;;;;;;25612:22;25516:118;:159;;;;-1:-1:-1;;;;;;25652:23:0;;;;;;:17;:23;;;;;;;;25651:24;25516:159;:186;;;;-1:-1:-1;;;;;;25692:10:0;;11422:42;25692:10;;25516:186;:219;;;;-1:-1:-1;;;;;;25719:16:0;;;;25516:219;:257;;;;-1:-1:-1;;;;;;25752:21:0;;25768:4;25752:21;;25516:257;:302;;;;-1:-1:-1;25806:11:0;;-1:-1:-1;;;;;25790:28:0;;;25806:11;;;;;25790:28;;25516:302;:345;;;;-1:-1:-1;25849:11:0;;-1:-1:-1;;;;;25835:26:0;;;25849:11;;;;;25835:26;;25516:345;25509:352;25423:446;-1:-1:-1;;;25423:446:0:o;28171:1973::-;12353:6;:13;;-1:-1:-1;;12353:13:0;12362:4;12353:13;;;28254:30:::1;::::0;;::::1;::::0;::::1;::::0;;28277:7:::1;28254:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;12353:6;28299:21;28295:60:::1;;28337:7;;;28295:60;28391:4;28371:26;::::0;;;:11:::1;:26;::::0;;;;;;;28406:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;28406:9:0::1;28371:46:::0;;;;;;;;-1:-1:-1;;28371:67:0::1;28367:166;;28475:4;28455:26;::::0;;;:11:::1;:26;::::0;;;;;;;28490:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;28490:9:0::1;28455:46:::0;;;;;;;-1:-1:-1;;28455:66:0;;28367:166:::1;28545:17;28630:1;28610:6;:16;;;28566:60;;28590:6;:16;;;28567:39;;:20;:39;;;;:::i;:::-;28566:60;;;;:::i;:::-;28565:66;;;;:::i;:::-;28545:86:::0;-1:-1:-1;28642:15:0::1;28660:32;28545:86:::0;28660:20;:32:::1;:::i;:::-;28737:16;::::0;;28751:1:::1;28737:16:::0;;;;;::::1;::::0;;28642:50;;-1:-1:-1;28713:21:0::1;::::0;28737:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;28737:16:0::1;28713:40;;28782:4;28764;28769:1;28764:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;28764:23:0::1;;;-1:-1:-1::0;;;;;28764:23:0::1;;;::::0;::::1;28808:9;;;;;;;;;-1:-1:-1::0;;;;;28808:9:0::1;-1:-1:-1::0;;;;;28808:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28798:4;28803:1;28798:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28798:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;28841:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;28841:186:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;28916:7;;28938:1:::1;::::0;28954:4;;28981::::1;::::0;29001:15:::1;::::0;28841:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;28837:233;;29052:7;;;;;;28837:233;29103:21;29082:18;29189:7:::0;29163:22:::1;29176:9:::0;29103:21;29163:22:::1;:::i;:::-;29162:34;;;;:::i;:::-;29135:61:::0;-1:-1:-1;29213:13:0;;29209:411:::1;;29247:9;::::0;29416:15:::1;::::0;29247:233:::1;::::0;-1:-1:-1;;;29247:233:0;;29324:4:::1;29247:233;::::0;::::1;31456:34:1::0;31506:18;;;31499:34;;;29376:1:0::1;31549:18:1::0;;;31542:34;;;31592:18;;;31585:34;-1:-1:-1;;;;;29416:15:0;;::::1;31635:19:1::0;;;31628:44;29450:15:0::1;31688:19:1::0;;;31681:35;29247:9:0::1;::::0;;::::1;;::::0;:25:::1;::::0;29280:16;;31367:19:1;;29247:233:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;29247:233:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;29247:233:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;29243:366;;29587:7;;;;;;;;29243:366;-1:-1:-1::0;;29505:40:0::1;::::0;;32212:25:1;;;32268:2;32253:18;;32246:34;;;29505:40:0::1;::::0;-1:-1:-1;32185:18:1;29505:40:0::1;;;;;;;29243:366;29632:30;29646:16:::0;29632:30;::::1;:::i;:::-;;;29693:6;:16;;;29673:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;29794:16:::1;::::0;::::1;::::0;29779:11:::1;::::0;::::1;::::0;29720:12:::1;::::0;-1:-1:-1;29720:12:0;;29765:45;;::::1;::::0;29766:24:::1;::::0;::::1;:10:::0;:24:::1;:::i;:::-;29765:45;;;;:::i;:::-;29743:67:::0;-1:-1:-1;29821:24:0::1;29848;29743:67:::0;29848:10;:24:::1;:::i;:::-;29887:16;::::0;::::1;::::0;29821:51;;-1:-1:-1;29887:20:0::1;;::::0;29883:127:::1;;29937:15;::::0;:61:::1;::::0;-1:-1:-1;;;;;29937:15:0;;::::1;::::0;29988:5:::1;::::0;29965:16;;29937:61:::1;::::0;;;29965:16;29937:15;29988:5;29937:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;29924:74:0;;-1:-1:-1;;29883:127:0::1;30024:11;::::0;::::1;::::0;:15:::1;;::::0;30020:117:::1;;30060:13;;;;;;;;;-1:-1:-1::0;;;;;30060:13:0::1;-1:-1:-1::0;;;;;30060:18:0::1;;30086:11;30104:7;30060:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;30056:70:::0;::::1;28243:1901;;;;;;;;;12377:1;-1:-1:-1::0;12389:6:0;:14;;-1:-1:-1;;12389:14:0;;;28171:1973::o;33330:804::-;33418:7;33438:18;33471:3;33467:205;;;-1:-1:-1;33504:9:0;:16;;;33467:205;;;33542:4;33538:134;;;-1:-1:-1;33576:9:0;:17;;;;;;33538:134;;;-1:-1:-1;33639:9:0;:21;;;;;;33538:134;33686:10;33700:1;33686:15;33682:39;;33712:6;33705:13;;;;;33682:39;33743:11;;;;;-1:-1:-1;;;;;33743:11:0;33767:4;33735:37;:110;;;;;33790:13;33807:1;33790:18;:54;;;;33825:13;33842:2;33825:19;33790:54;33731:138;;;-1:-1:-1;33862:4:0;33731:138;33879:17;11283:5;33899:19;33908:10;33899:6;:19;:::i;:::-;:38;;;;:::i;:::-;33879:58;-1:-1:-1;33952:13:0;;33948:141;;33998:4;33982:7;:22;;;;;;;;;;:35;;34008:9;;33982:7;:35;;34008:9;;33982:35;:::i;:::-;;;;-1:-1:-1;;34037:40:0;;391:25:1;;;34060:4:0;;-1:-1:-1;;;;;34037:40:0;;;;;379:2:1;364:18;34037:40:0;;;;;;;33948:141;34108:18;34117:9;34108:6;:18;:::i;30152:563::-;30235:16;;;;;;;30234:17;30226:65;;;;-1:-1:-1;;;30226:65:0;;32879:2:1;30226:65:0;;;32861:21:1;32918:2;32898:18;;;32891:30;32957:34;32937:18;;;32930:62;-1:-1:-1;;;33008:18:1;;;33001:33;33051:19;;30226:65:0;32677:399:1;30226:65:0;30307:20;30318:4;30324:2;30307:10;:20::i;:::-;30306:21;:37;;;;-1:-1:-1;30337:6:0;;-1:-1:-1;;;;;30331:12:0;;;30337:6;;30331:12;30306:37;30302:406;;;-1:-1:-1;;;;;30360:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;30360:30:0;;;30386:4;30360:30;;;;;;30405:19;:25;;;;;:32;;;;;;;;;;30452:16;:23;;-1:-1:-1;;30452:23:0;30360:30;30452:23;;;;;30502:11;;;;30490:114;;30548:11;:40;;-1:-1:-1;;;;;;30548:40:0;30582:4;30548:40;;;;;30490:114;30618:19;:26;;-1:-1:-1;;30618:26:0;;;;;30664:32;;-1:-1:-1;2653:41:1;;30664:32:0;;2641:2:1;2626:18;30664:32:0;2513: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;2102:154::-;-1:-1:-1;;;;;2181:5:1;2177:54;2170:5;2167:65;2157:93;;2246:1;2243;2236:12;2261:247;2320:6;2373:2;2361:9;2352:7;2348:23;2344:32;2341:52;;;2389:1;2386;2379:12;2341:52;2428:9;2415:23;2447:31;2472:5;2447:31;:::i;2705:315::-;2773:6;2781;2834:2;2822:9;2813:7;2809:23;2805:32;2802:52;;;2850:1;2847;2840:12;2802:52;2889:9;2876:23;2908:31;2933:5;2908:31;:::i;:::-;2958:5;3010:2;2995:18;;;;2982:32;;-1:-1:-1;;;2705:315:1:o;3025:388::-;3093:6;3101;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3209:9;3196:23;3228:31;3253:5;3228:31;:::i;:::-;3278:5;-1:-1:-1;3335:2:1;3320:18;;3307:32;3348:33;3307:32;3348:33;:::i;3418:456::-;3495:6;3503;3511;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;-1:-1:-1;3745:2:1;3730:18;;3717:32;3758:33;3717:32;3758:33;:::i;:::-;3418:456;;3810:7;;-1:-1:-1;;;3864:2:1;3849:18;;;;3836:32;;3418:456::o;3879:248::-;3947:6;3955;4008:2;3996:9;3987:7;3983:23;3979:32;3976:52;;;4024:1;4021;4014:12;3976:52;-1:-1:-1;;4047:23:1;;;4117:2;4102:18;;;4089:32;;-1:-1:-1;3879:248:1:o;4132:127::-;4193:10;4188:3;4184:20;4181:1;4174:31;4224:4;4221:1;4214:15;4248:4;4245:1;4238:15;4264:275;4335:2;4329:9;4400:2;4381:13;;-1:-1:-1;;4377:27:1;4365:40;;4435:18;4420:34;;4456:22;;;4417:62;4414:88;;;4482:18;;:::i;:::-;4518:2;4511:22;4264:275;;-1:-1:-1;4264:275:1:o;4544:183::-;4604:4;4637:18;4629:6;4626:30;4623:56;;;4659:18;;:::i;:::-;-1:-1:-1;4704:1:1;4700:14;4716:4;4696:25;;4544:183::o;4732:662::-;4786:5;4839:3;4832:4;4824:6;4820:17;4816:27;4806:55;;4857:1;4854;4847:12;4806:55;4893:6;4880:20;4919:4;4943:60;4959:43;4999:2;4959:43;:::i;:::-;4943:60;:::i;:::-;5037:15;;;5123:1;5119:10;;;;5107:23;;5103:32;;;5068:12;;;;5147:15;;;5144:35;;;5175:1;5172;5165:12;5144:35;5211:2;5203:6;5199:15;5223:142;5239:6;5234:3;5231:15;5223:142;;;5305:17;;5293:30;;5343:12;;;;5256;;5223:142;;;-1:-1:-1;5383:5:1;4732:662;-1:-1:-1;;;;;;4732:662:1:o;5399:1215::-;5517:6;5525;5578:2;5566:9;5557:7;5553:23;5549:32;5546:52;;;5594:1;5591;5584:12;5546:52;5634:9;5621:23;5663:18;5704:2;5696:6;5693:14;5690:34;;;5720:1;5717;5710:12;5690:34;5758:6;5747:9;5743:22;5733:32;;5803:7;5796:4;5792:2;5788:13;5784:27;5774:55;;5825:1;5822;5815:12;5774:55;5861:2;5848:16;5883:4;5907:60;5923:43;5963:2;5923:43;:::i;5907:60::-;6001:15;;;6083:1;6079:10;;;;6071:19;;6067:28;;;6032:12;;;;6107:19;;;6104:39;;;6139:1;6136;6129:12;6104:39;6163:11;;;;6183:217;6199:6;6194:3;6191:15;6183:217;;;6279:3;6266:17;6296:31;6321:5;6296:31;:::i;:::-;6340:18;;6216:12;;;;6378;;;;6183:217;;;6419:5;-1:-1:-1;;6462:18:1;;6449:32;;-1:-1:-1;;6493:16:1;;;6490:36;;;6522:1;6519;6512:12;6490:36;;6545:63;6600:7;6589:8;6578:9;6574:24;6545:63;:::i;:::-;6535:73;;;5399:1215;;;;;:::o;7068:117::-;7153:6;7146:5;7142:18;7135:5;7132:29;7122:57;;7175:1;7172;7165:12;7190:523;7264:6;7272;7280;7333:2;7321:9;7312:7;7308:23;7304:32;7301:52;;;7349:1;7346;7339:12;7301:52;7388:9;7375:23;7407:30;7431:5;7407:30;:::i;:::-;7456:5;-1:-1:-1;7513:2:1;7498:18;;7485:32;7526;7485;7526;:::i;:::-;7577:7;-1:-1:-1;7636:2:1;7621:18;;7608:32;7649;7608;7649;:::i;:::-;7700:7;7690:17;;;7190:523;;;;;:::o;7718:382::-;7783:6;7791;7844:2;7832:9;7823:7;7819:23;7815:32;7812:52;;;7860:1;7857;7850:12;7812:52;7899:9;7886:23;7918:31;7943:5;7918:31;:::i;8105:180::-;8164:6;8217:2;8205:9;8196:7;8192:23;8188:32;8185:52;;;8233:1;8230;8223:12;8185:52;-1:-1:-1;8256:23:1;;8105:180;-1:-1:-1;8105:180:1:o;8861:598::-;8947:6;8955;8963;8971;9024:3;9012:9;9003:7;8999:23;8995:33;8992:53;;;9041:1;9038;9031:12;8992:53;9080:9;9067:23;9099:31;9124:5;9099:31;:::i;:::-;9149:5;-1:-1:-1;9206:2:1;9191:18;;9178:32;9219:33;9178:32;9219:33;:::i;:::-;9271:7;-1:-1:-1;9330:2:1;9315:18;;9302:32;9343:33;9302:32;9343:33;:::i;:::-;8861:598;;;;-1:-1:-1;9395:7:1;;9449:2;9434:18;9421:32;;-1:-1:-1;;8861:598:1:o;10322:385::-;10408:6;10416;10424;10432;10485:3;10473:9;10464:7;10460:23;10456:33;10453:53;;;10502:1;10499;10492:12;10453:53;-1:-1:-1;;10525:23:1;;;10595:2;10580:18;;10567:32;;-1:-1:-1;10646:2:1;10631:18;;10618:32;;10697:2;10682:18;10669:32;;-1:-1:-1;10322:385:1;-1:-1:-1;10322:385:1:o;11331:127::-;11392:10;11387:3;11383:20;11380:1;11373:31;11423:4;11420:1;11413:15;11447:4;11444:1;11437:15;11463:422;11552:1;11595:5;11552:1;11609:270;11630:7;11620:8;11617:21;11609:270;;;11689:4;11685:1;11681:6;11677:17;11671:4;11668:27;11665:53;;;11698:18;;:::i;:::-;11748:7;11738:8;11734:22;11731:55;;;11768:16;;;;11731:55;11847:22;;;;11807:15;;;;11609:270;;;11613:3;11463:422;;;;;:::o;11890:806::-;11939:5;11969:8;11959:80;;-1:-1:-1;12010:1:1;12024:5;;11959:80;12058:4;12048:76;;-1:-1:-1;12095:1:1;12109:5;;12048:76;12140:4;12158:1;12153:59;;;;12226:1;12221:130;;;;12133:218;;12153:59;12183:1;12174:10;;12197:5;;;12221:130;12258:3;12248:8;12245:17;12242:43;;;12265:18;;:::i;:::-;-1:-1:-1;;12321:1:1;12307:16;;12336:5;;12133:218;;12435:2;12425:8;12422:16;12416:3;12410:4;12407:13;12403:36;12397:2;12387:8;12384:16;12379:2;12373:4;12370:12;12366:35;12363:77;12360:159;;;-1:-1:-1;12472:19:1;;;12504:5;;12360:159;12551:34;12576:8;12570:4;12551:34;:::i;:::-;12621:6;12617:1;12613:6;12609:19;12600:7;12597:32;12594:58;;;12632:18;;:::i;:::-;12670:20;;11890:806;-1:-1:-1;;;11890:806:1:o;12701:140::-;12759:5;12788:47;12829:4;12819:8;12815:19;12809:4;12788:47;:::i;12846:217::-;12886:1;12912;12902:132;;12956:10;12951:3;12947:20;12944:1;12937:31;12991:4;12988:1;12981:15;13019:4;13016:1;13009:15;12902:132;-1:-1:-1;13048:9:1;;12846:217::o;13408:168::-;13481:9;;;13512;;13529:15;;;13523:22;;13509:37;13499:71;;13550:18;;:::i;13581:513::-;13666:6;13674;13682;13735:2;13723:9;13714:7;13710:23;13706:32;13703:52;;;13751:1;13748;13741:12;13703:52;13783:9;13777:16;13802:30;13826:5;13802:30;:::i;:::-;13901:2;13886:18;;13880:25;13851:5;;-1:-1:-1;13914:32:1;13880:25;13914:32;:::i;:::-;14017:2;14002:18;;13996:25;13965:7;;-1:-1:-1;14030:32:1;13996:25;14030:32;:::i;14099:128::-;14166:9;;;14187:11;;;14184:37;;;14201:18;;:::i;14999:127::-;15060:10;15055:3;15051:20;15048:1;15041:31;15091:4;15088:1;15081:15;15115:4;15112:1;15105:15;15478:197;15516:3;15544:6;15585:2;15578:5;15574:14;15612:2;15603:7;15600:15;15597:41;;15618:18;;:::i;:::-;15667:1;15654:15;;15478:197;-1:-1:-1;;;15478:197:1:o;15680:125::-;15745:9;;;15766:10;;;15763:36;;;15779:18;;:::i;16508:168::-;16575:6;16601:10;;;16613;;;16597:27;;16636:11;;;16633:37;;;16650:18;;:::i;:::-;16633:37;16508:168;;;;:::o;18247:184::-;18317:6;18370:2;18358:9;18349:7;18345:23;18341:32;18338:52;;;18386:1;18383;18376:12;18338:52;-1:-1:-1;18409:16:1;;18247:184;-1:-1:-1;18247:184:1:o;22965:245::-;23032:6;23085:2;23073:9;23064:7;23060:23;23056:32;23053:52;;;23101:1;23098;23091:12;23053:52;23133:9;23127:16;23152:28;23174:5;23152:28;:::i;23926:251::-;23996:6;24049:2;24037:9;24028:7;24024:23;24020:32;24017:52;;;24065:1;24062;24055:12;24017:52;24097:9;24091:16;24116:31;24141:5;24116:31;:::i;30053:1026::-;30315:4;30363:3;30352:9;30348:19;30394:6;30383:9;30376:25;30420:2;30458:6;30453:2;30442:9;30438:18;30431:34;30501:3;30496:2;30485:9;30481:18;30474:31;30525:6;30560;30554:13;30591:6;30583;30576:22;30629:3;30618:9;30614:19;30607:26;;30668:2;30660:6;30656:15;30642:29;;30689:1;30699:218;30713:6;30710:1;30707:13;30699:218;;;30778:13;;-1:-1:-1;;;;;30774:62:1;30762:75;;30892:15;;;;30857:12;;;;30735:1;30728:9;30699:218;;;-1:-1:-1;;;;;;;30973:55:1;;;;30968:2;30953:18;;30946:83;-1:-1:-1;;;31060:3:1;31045:19;31038:35;30934:3;30053:1026;-1:-1:-1;;;30053:1026:1:o;31727:306::-;31815:6;31823;31831;31884:2;31872:9;31863:7;31859:23;31855:32;31852:52;;;31900:1;31897;31890:12;31852:52;31929:9;31923:16;31913:26;;31979:2;31968:9;31964:18;31958:25;31948:35;;32023:2;32012:9;32008:18;32002:25;31992:35;;31727:306;;;;;:::o;32291:171::-;32359:6;32398:10;;;32386;;;32382:27;;32421:12;;;32418:38;;;32436:18;;:::i

Swarm Source

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