ETH Price: $2,687.29 (+0.70%)

Token

VaultTech ($VAULT)
 

Overview

Max Total Supply

100,000,000 $VAULT

Holders

6,080 (0.00%)

Market

Price

$0.00 @ 0.000002 ETH (+0.41%)

Onchain Market Cap

$454,496.00

Circulating Supply Market Cap

$454,496.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
39.64638901 $VAULT

Value
$0.18 ( ~6.69819208184216E-05 Eth) [0.0000%]
0x70abc5c9ffb91f89153680749998e2cf757c0dee
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Vault.tech is a Telegram escrow bot powered by AI oracles, offering a wide array of services like OTC, listing, software development, and many more use cases.

Market

Volume (24H):$382.45
Market Capitalization:$454,496.00
Circulating Supply:100,000,000.00 $VAULT
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
VaultTech

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-10-27
*/

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

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

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

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

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

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

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
}

contract VaultTech 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 = 100_000_000;
    string constant private _name = "VaultTech";
    string constant private _symbol = "$VAULT";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 marketing;
        uint16 team;
        uint16 development;
        uint16 revShare;
        uint16 lottery;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        marketing: 1,
        team: 1,
        development: 1,
        revShare: 1,
        lottery: 1,
        totalSwap: 5
    });

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

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable team;
        address payable revShare;
        address payable development;
        address payable lottery;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x279c89E5EE9b6634a84898e0d5dbE0f658E95eA1),
        team: payable(0xca6e80b4F9EA85d9E049CE30C6D3f732b1d20A93),
        revShare: payable(0x8D1B54c12dba385687960F16F3D9d58D71be28aE),
        development: payable(0x81123e04fc83cbE43D246Ba90051d4083b8F3a05),
        lottery: payable(0x0FBefffF65af3b29f6707669B15705E7ec4c9D0B)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 25) / 10000;
    uint256 private _maxWalletSize = (_tTotal * 5) / 1000;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;
    bool public isBlacklistRenounced = false;

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

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

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

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

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

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

    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

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

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

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

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

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

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

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

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

    //================================================ BLACKLIST

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        require(!isBlacklistRenounced, "Blacklist addition renounced.");
        initializer.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        require(accounts.length <= 100, "Too many at once.");
        require(!isBlacklistRenounced, "Blacklist addition renounced.");
        initializer.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function isBlacklisted(address account) external view returns (bool) {
        return initializer.isBlacklisted(account);
    }

    function removeBlacklisted(address account) external onlyOwner {
        // To remove from the pre-built blacklist ONLY. Cannot add to blacklist.
        initializer.removeBlacklisted(account);
    }

    function renounceBlacklist() external onlyOwner {
        require(isBlacklistRenounced != true, "Already renounced.");
        isBlacklistRenounced = true;
    }

//================================================ BLACKLIST

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

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

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

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

    function setRatios(uint16 marketing, uint16 team, uint16 revShare, uint16 development, uint16 lottery) external onlyOwner {
        _ratios.marketing = marketing;
        _ratios.team = team;
        _ratios.revShare = revShare;
        _ratios.development = development;
        _ratios.lottery = lottery;
        _ratios.totalSwap = marketing + team + revShare + development + lottery;
        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 development,
                        address payable team, 
                        address payable revShare, 
                        address payable lottery) external onlyOwner {
        require(marketing != address(0) &&
                development != address(0) &&
                team != address(0) &&
                revShare != address(0) &&
                development != address(0) &&
                lottery != address(0), "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.team = payable(team);
        _taxWallets.revShare = payable(revShare);
        _taxWallets.development = payable(development);
        _taxWallets.lottery = payable(lottery);
    }

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

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

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

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

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 teamBalance = (amtBalance * ratios.team) / ratios.totalSwap;
        uint256 revShareBalance = (amtBalance * ratios.revShare) / ratios.totalSwap;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 lotteryBalance = (amtBalance * ratios.lottery) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (teamBalance + revShareBalance + developmentBalance + lotteryBalance);
        if (ratios.team > 0) {
            (success,) = _taxWallets.team.call{value: teamBalance, gas: 55000}("");
        }
        if (ratios.revShare > 0) {
            (success,) = _taxWallets.revShare.call{value: revShareBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
        if (ratios.lottery > 0) {
            (success,) = _taxWallets.lottery.call{value: lotteryBalance, gas: 55000}("");
        }
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
    }

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
        launchStamp = block.timestamp;
    }

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

    function sweepExternalTokens(address token) external onlyOwner {
        if (_hasLiqBeenAdded) {
            require(token != address(this), "Cannot sweep native tokens.");
        }
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

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

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try initializer.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"revShare","type":"uint16"},{"internalType":"uint16","name":"lottery","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":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"team","type":"address"},{"internalType":"address payable","name":"revShare","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"lottery","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBlacklistRenounced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"marketing","type":"uint16"},{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"revShare","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"lottery","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":"development","type":"address"},{"internalType":"address payable","name":"team","type":"address"},{"internalType":"address payable","name":"revShare","type":"address"},{"internalType":"address payable","name":"lottery","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"}]

600060028190556009805460ff19166001908117909155610bb8608081905260a05260c091909152600a805465ffffffffffff1916630bb80bb817815560e082905261010082905261012082905261014082905261016091909152600561018052600b80546a05000100010001000100016001600160601b031990911617905561024060405273279c89e5ee9b6634a84898e0d5dbe0f658e95ea16101a081905273ca6e80b4f9ea85d9e049ce30c6d3f732b1d20a936101c0819052738d1b54c12dba385687960f16f3d9d58d71be28ae6101e08190527381123e04fc83cbe43d246ba90051d4083b8f3a05610200819052730fbeffff65af3b29f6707669b15705e7ec4c9d0b610220819052600e80546001600160a01b03199081169096179055600f805486169094179093556010805485169092179091556011805484169091179055601280549092161781556013805461ff00191690556017829055612710916200016e9190620004c9565b6200017e906305f5e100620004e1565b6200018b906019620004e1565b620001979190620004fb565b6018556103e8620001ab6012600a620004c9565b620001bb906305f5e100620004e1565b620001c8906005620004e1565b620001d49190620004fb565b601955601a805461ffff19169055601c80546001600160a81b0319166101003302179055620002066012600a620004c9565b62000216906305f5e100620004e1565b601c80546001600160a01b0361010091829004811660009081526020819052604081209490945591540416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002716012600a620004c9565b62000281906305f5e100620004e1565b60405190815260200160405180910390a3601c80546001600160a01b036101009182900481166000908152600660208181526040808420805460ff19908116600190811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905597549690960490941683526004815292822080548616851790559091527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf980549092161790556200051e565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200040b578160001904821115620003ef57620003ef620003b4565b80851615620003fd57918102915b93841c9390800290620003cf565b509250929050565b6000826200042457506001620004c3565b816200043357506000620004c3565b81600181146200044c5760028114620004575762000477565b6001915050620004c3565b60ff8411156200046b576200046b620003b4565b50506001821b620004c3565b5060208310610133831016604e8410600b84101617156200049c575081810a620004c3565b620004a88383620003ca565b8060001904821115620004bf57620004bf620003b4565b0290505b92915050565b6000620004da60ff84168362000413565b9392505050565b8082028115828204841417620004c357620004c3620003b4565b6000826200051957634e487b7160e01b600052601260045260246000fd5b500490565b614e99806200052e6000396000f3fe6080604052600436106103dd5760003560e01c80635a6f0918116101fd578063b1b08f7111610118578063eafb5a3c116100ab578063f94aa1b41161007a578063f94aa1b414610c21578063fb78680d14610c94578063fdb78c0e14610cb4578063fe575a8714610cd3578063feadde9c14610cf357600080fd5b8063eafb5a3c14610bac578063ee5d9c2d14610bcc578063eec2744e14610be1578063f08f43a214610c0157600080fd5b8063bfc2fc35116100e7578063bfc2fc3514610a93578063c6a276c214610ab3578063cf84770614610ad3578063dd62ed3e14610b6657600080fd5b8063b1b08f7114610690578063b3d514fb14610690578063b7df8b3614610a5f578063be1ded8714610a7957600080fd5b806380c581d1116101905780638a8c523c1161015f5780638a8c523c146109db57806395d89b41146109f0578063a9059cbb14610a1f578063ab558e4d14610a3f57600080fd5b806380c581d1146109635780638252879114610983578063893d20e8146109a35780638a63bd9b146109c657600080fd5b80636ebd0078116101cc5780636ebd0078146108ee57806370a0823114610903578063715018a61461093957806378648edf1461094e57600080fd5b80635a6f09181461086a5780635c24b074146108805780635cce86cd146108a05780635f189361146108d957600080fd5b806328577751116102f85780633f3cf56c1161028b5780634e718e481161025a5780634e718e48146107b25780634fb2e45d146107d25780634fbee193146107f257806350a8e0161461082b578063590ffdce1461084a57600080fd5b80633f3cf56c14610738578063452ed4f1146107585780634ada218b146107785780634bbb93eb1461079257600080fd5b8063313ce567116102c7578063313ce567146106bc57806332cde664146106d857806333251a0b146106f857806336fddb041461071857600080fd5b806328577751146106655780632b112e491461067b5780632b28fc7a146106905780632e8fa821146106a657600080fd5b8063095ea7b31161037057806318160ddd1161033f57806318160ddd146105f057806323b872dd1461060557806326003957146106255780632610eaca1461064557600080fd5b8063095ea7b3146105625780630dcbcf1c146105825780630fa604e4146105bb57806313b4a7f4146105d057600080fd5b8063069d955f116103ac578063069d955f1461048257806306fdde03146104d85780630758d9241461051357806307dd79e01461053857600080fd5b806303fd2a45146103e95780630445b6671461041c578063044df7261461044057806305bbedb61461046257600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b506103ff61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561042857600080fd5b5061043260145481565b604051908152602001610413565b34801561044c57600080fd5b5061046061045b366004614648565b610d13565b005b34801561046e57600080fd5b5061046061047d366004614775565b610dd6565b34801561048e57600080fd5b50600a546104b39061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610413565b3480156104e457600080fd5b506040805180820190915260098152680acc2ead8e8a8cac6d60bb1b60208201525b60405161041391906147bc565b34801561051f57600080fd5b50600c546103ff9061010090046001600160a01b031681565b34801561054457600080fd5b50600c546105529060ff1681565b6040519015158152602001610413565b34801561056e57600080fd5b5061055261057d36600461480a565b610eff565b34801561058e57600080fd5b5061055261059d366004614836565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105c757600080fd5b50610432610f16565b3480156105dc57600080fd5b506104606105eb366004614853565b610f36565b3480156105fc57600080fd5b506104326110f9565b34801561061157600080fd5b50610552610620366004614881565b611115565b34801561063157600080fd5b506104606106403660046148c2565b61118d565b34801561065157600080fd5b506104606106603660046148e4565b6112db565b34801561067157600080fd5b5061043260175481565b34801561068757600080fd5b50610432611495565b34801561069c57600080fd5b50610432610bb881565b3480156106b257600080fd5b5061043260155481565b3480156106c857600080fd5b5060405160128152602001610413565b3480156106e457600080fd5b506104606106f33660046149b6565b611513565b34801561070457600080fd5b50610460610713366004614836565b61166c565b34801561072457600080fd5b506104606107333660046149f9565b611723565b34801561074457600080fd5b506104606107533660046148c2565b61179b565b34801561076457600080fd5b50600d546103ff906001600160a01b031681565b34801561078457600080fd5b50601a546105529060ff1681565b34801561079e57600080fd5b506104326107ad366004614a17565b6118f5565b3480156107be57600080fd5b506104606107cd366004614a17565b611929565b3480156107de57600080fd5b506104606107ed366004614836565b6119cc565b3480156107fe57600080fd5b5061055261080d366004614836565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561083757600080fd5b50601a5461055290610100900460ff1681565b34801561085657600080fd5b506104606108653660046149f9565b611beb565b34801561087657600080fd5b50610432601b5481565b34801561088c57600080fd5b5061046061089b366004614836565b611c63565b3480156108ac57600080fd5b506105526108bb366004614836565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108e557600080fd5b50610460611e3c565b3480156108fa57600080fd5b50610432611eef565b34801561090f57600080fd5b5061043261091e366004614836565b6001600160a01b031660009081526020819052604090205490565b34801561094557600080fd5b50610460611f0a565b34801561095a57600080fd5b5061046061203e565b34801561096f57600080fd5b5061046061097e3660046149f9565b61209a565b34801561098f57600080fd5b5061046061099e366004614a30565b612289565b3480156109af57600080fd5b50601c5461010090046001600160a01b03166103ff565b3480156109d257600080fd5b506105526123f1565b3480156109e757600080fd5b50610460612466565b3480156109fc57600080fd5b5060408051808201909152600681526509159055531560d21b6020820152610506565b348015610a2b57600080fd5b50610552610a3a36600461480a565b6126c1565b348015610a4b57600080fd5b50610460610a5a366004614836565b6126d8565b348015610a6b57600080fd5b506016546105529060ff1681565b348015610a8557600080fd5b50601c546105529060ff1681565b348015610a9f57600080fd5b50610460610aae366004614648565b61287b565b348015610abf57600080fd5b50610460610ace366004614836565b612927565b348015610adf57600080fd5b50600b54610b299061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610413565b348015610b7257600080fd5b50610432610b81366004614853565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610bb857600080fd5b50610460610bc7366004614836565b6129ad565b348015610bd857600080fd5b50610460612da6565b348015610bed57600080fd5b50610460610bfc3660046149f9565b612e8b565b348015610c0d57600080fd5b50610460610c1c366004614aa1565b612f6c565b348015610c2d57600080fd5b50600e54600f54601054601154601254610c5a946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a001610413565b348015610ca057600080fd5b50610460610caf366004614b06565b6130fe565b348015610cc057600080fd5b5060135461055290610100900460ff1681565b348015610cdf57600080fd5b50610552610cee366004614836565b6133c5565b348015610cff57600080fd5b50610460610d0e3660046149f9565b61343a565b601c5461010090046001600160a01b03163314610d655760405162461bcd60e51b81526020600482015260116024820152600080516020614e4483398151915260448201526064015b60405180910390fd5b601a5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610dba57600080fd5b505af1158015610dce573d6000803e3d6000fd5b505050505050565b601c5461010090046001600160a01b03163314610e235760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b606482511115610e755760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e79206174206f6e63652e0000000000000000000000000000006044820152606401610d5c565b601c5460ff1615610ec85760405162461bcd60e51b815260206004820152601d60248201527f426c61636b6c697374206164646974696f6e2072656e6f756e6365642e0000006044820152606401610d5c565b601a546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610da09085908590600401614b7c565b6000610f0c3384846134b2565b5060015b92915050565b6000610f246012600a614c9a565b601954610f319190614ca9565b905090565b601c5461010090046001600160a01b03163314610f835760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b60095460ff16610f9257600080fd5b6001600160a01b0382163014801590610fb457506001600160a01b0381163014155b8015610fce5750600d546001600160a01b03838116911614155b8015610fe85750600d546001600160a01b03828116911614155b6110225760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610d5c565b806001600160a01b0316826001600160a01b031603611084576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055611080908290611beb565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff199182168117909255958716808552828520805488168317905594845260089092528083208054861683179055928252919020805490921681179091556110ee908390611beb565b611080816001611beb565b60006111076012600a614c9a565b610f31906305f5e100614ccb565b6001600160a01b03831660009081526003602090815260408083203384529091528120546000191461117a576001600160a01b038416600090815260036020908152604080832033845290915281208054849290611174908490614ce2565b90915550505b6111858484846135ab565b949350505050565b601c5461010090046001600160a01b031633146111da5760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b60646111e86012600a614c9a565b6111f6906305f5e100614ccb565b6112009190614ca9565b818361120e6012600a614c9a565b61121c906305f5e100614ccb565b6112269190614ccb565b6112309190614ca9565b10156112a45760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610d5c565b80826112b26012600a614c9a565b6112c0906305f5e100614ccb565b6112ca9190614ccb565b6112d49190614ca9565b6019555050565b601c5461010090046001600160a01b031633146113285760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b80518251146113795760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610d5c565b60005b82518161ffff161015611490576113956012600a614c9a565b828261ffff16815181106113ab576113ab614cf5565b60200260200101516113bd9190614ccb565b33600090815260208190526040902054101561141b5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610d5c565b61147d33848361ffff168151811061143557611435614cf5565b60200260200101516012600a61144b9190614c9a565b858561ffff168151811061146157611461614cf5565b60200260200101516114739190614ccb565b6000806001613ac2565b508061148881614d0b565b91505061137c565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546114ef9190614d2c565b6114fb6012600a614c9a565b611509906305f5e100614ccb565b610f319190614ce2565b601c5461010090046001600160a01b031633146115605760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b600c5460ff16156115b35760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610d5c565b610bb88361ffff16111580156115cf5750610bb88261ffff1611155b80156115e15750610bb88161ffff1611155b61162d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610d5c565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601c5461010090046001600160a01b031633146116b95760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561170857600080fd5b505af115801561171c573d6000803e3d6000fd5b5050505050565b601c5461010090046001600160a01b031633146117705760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b031633146117e85760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6103e86117f76012600a614c9a565b611805906305f5e100614ccb565b611810906005614ccb565b61181a9190614ca9565b81836118286012600a614c9a565b611836906305f5e100614ccb565b6118409190614ccb565b61184a9190614ca9565b10156118be5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610d5c565b80826118cc6012600a614c9a565b6118da906305f5e100614ccb565b6118e49190614ccb565b6118ee9190614ca9565b6018555050565b600d546001600160a01b03166000908152602081905260408120546127109061191f908490614ccb565b610f109190614ca9565b601c5461010090046001600160a01b031633146119765760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b60968111156119c75760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610d5c565b601755565b601c5461010090046001600160a01b03163314611a195760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6001600160a01b038116611a955760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610d5c565b61deac196001600160a01b03821601611b165760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610d5c565b601c54611b329061010090046001600160a01b03166000611beb565b611b3d816001611beb565b601c5461010090046001600160a01b03166000908152602081905260408120541115611b9157601c5461010090046001600160a01b0316600081815260208190526040902054611b8f91908390611473565b505b601c80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601c5461010090046001600160a01b03163314611c385760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b03163314611cb05760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a5460ff1615611cc057600080fd5b306001600160a01b03821603611d185760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610d5c565b601a805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611d9e575060408051601f3d908101601f19168201909252611d9b91810190614d3f565b60015b611da757600080fd5b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601c549254611e1a93829004831692919004166000196134b2565b600c5461149090309061010090046001600160a01b03166000196134b2565b50565b601c5461010090046001600160a01b03163314611e895760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601c5460ff161515600103611ee05760405162461bcd60e51b815260206004820152601260248201527f416c72656164792072656e6f756e6365642e00000000000000000000000000006044820152606401610d5c565b601c805460ff19166001179055565b6000611efd6012600a614c9a565b601854610f319190614ca9565b601c5461010090046001600160a01b03163314611f575760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a5460ff16611fcf5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610d5c565b601c54611feb9061010090046001600160a01b03166000611beb565b601c8054610100600160a81b031981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c5461010090046001600160a01b0316331461208b5760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b600c805460ff19166001179055565b601c5461010090046001600160a01b031633146120e75760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b8061215a576001600160a01b03828116600081815260016020526040808220805460ff19169055601a5490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610dba57600080fd5b600254156121c1576203f480600254426121749190614ce2565b116121c15760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610d5c565b6001600160a01b03821660009081526001602052604090205460ff161561222a5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610d5c565b6001600160a01b03828116600081815260016020819052604091829020805460ff19168217905542600255601a5491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610da0565b601c5461010090046001600160a01b031633146122d65760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6001600160a01b038516158015906122f657506001600160a01b03841615155b801561230a57506001600160a01b03831615155b801561231e57506001600160a01b03821615155b801561233257506001600160a01b03841615155b801561234657506001600160a01b03811615155b6123925760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610d5c565b600e80546001600160a01b03199081166001600160a01b0397881617909155600f805482169487169490941790935560108054841692861692909217909155601180548316938516939093179092556012805490911691909216179055565b601c5460009061010090046001600160a01b031633146124415760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b600c5461246090309061010090046001600160a01b03166000196134b2565b50600190565b601c5461010090046001600160a01b031633146124b35760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a5460ff16156125065760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610d5c565b601a54610100900460ff1661255d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610d5c565b601a546201000090046001600160a01b031661258d57601a805462010000600160b01b0319163062010000021790555b601a54600d54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156125ff57600080fd5b505af1925050508015612610575060015b50601a54600d546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015612693575060408051601f3d908101601f1916820190925261269091810190614d6e565b60015b156126a2576014919091556015555b601a805460ff1990811660011790915560098054909116905542601b55565b60006126ce3384846135ab565b5060019392505050565b601c5461010090046001600160a01b031633146127255760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a54610100900460ff161561278d57306001600160a01b0382160361278d5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610d5c565b601c546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa1580156127e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280c9190614d92565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612857573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114909190614dab565b601c5461010090046001600160a01b031633146128c85760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6013805461ff001916610100841515908102919091179091556016805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c5461010090046001600160a01b031633146129745760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016116ee565b601c5461010090046001600160a01b031633146129fa5760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a54610100900460ff1615612a525760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610d5c565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abb9190614dc8565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2c9190614dc8565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9b9190614dc8565b600d546001600160a01b039081166000908152600160205260409020805460ff191690559091508116612d3157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2a9190614dc8565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9b9190614dc8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612ce8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0c9190614dc8565b600d80546001600160a01b0319166001600160a01b0392909216919091179055612d4d565b600d80546001600160a01b0319166001600160a01b0383161790555b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d5482166000908152600160208190526040909120805460ff1916909117905591546114909230929104166000196134b2565b601c5461010090046001600160a01b03163314612df35760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a54610100900460ff1615612e4b5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610d5c565b601c546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f19350505050158015611e39573d6000803e3d6000fd5b601c5461010090046001600160a01b03163314612ed85760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601c5460ff1615612f2b5760405162461bcd60e51b815260206004820152601d60248201527f426c61636b6c697374206164646974696f6e2072656e6f756e6365642e0000006044820152606401610d5c565b601a546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610da0565b601c5461010090046001600160a01b03163314612fb95760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff00000000191666010000000000008683160265ffff00000000191617640100000000858316021769ffff0000000000000000191668010000000000000000918416919091021790558082846130338789614de5565b61303d9190614de5565b6130479190614de5565b6130519190614de5565b600b80546bffff000000000000000000001916600160501b61ffff93841602179055600a5460009161308c9162010000810482169116614de5565b600b5461ffff9182169250600160501b900416811015610dce5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610d5c565b601c5461010090046001600160a01b0316331461314b5760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b82846131596012600a614c9a565b613167906305f5e100614ccb565b6131719190614ccb565b61317b9190614ca9565b601455808261318c6012600a614c9a565b61319a906305f5e100614ccb565b6131a49190614ccb565b6131ae9190614ca9565b6015819055601454111561320e5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610d5c565b600d546001600160a01b031660009081526020819052604090205461271090613238906096614ccb565b6132429190614ca9565b601554111561329f5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610d5c565b620f42406132af6012600a614c9a565b6132bd906305f5e100614ccb565b6132c79190614ca9565b601554101561332f5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610d5c565b620f424061333f6012600a614c9a565b61334d906305f5e100614ccb565b6133579190614ca9565b60145410156133bf5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610d5c565b50505050565b601a5460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613416573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f109190614dab565b601c5461010090046001600160a01b031633146134875760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166134fe5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610d5c565b6001600160a01b03821661354a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610d5c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166136115760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d5c565b6001600160a01b0383166136735760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d5c565b600082116136d55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d5c565b6001600160a01b0384166000908152600160205260408120548190819060ff16156137035760019250613731565b6001600160a01b03861660009081526001602052604090205460ff161561372d5760019150613731565b5060015b61373b8787613d75565b156139c857601a5460ff1661383c57806137975760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610d5c565b6001600160a01b03871660009081526005602052604090205460ff161580156137d957506001600160a01b03861660009081526005602052604090205460ff16155b1561383c5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610d5c565b82806138455750815b156138f4576001600160a01b03871660009081526007602052604090205460ff1615801561388c57506001600160a01b03861660009081526007602052604090205460ff16155b156138f4576018548511156138f45760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610d5c565b600c546001600160a01b038781166101009092041614801590613915575081155b156139c8576001600160a01b03861660009081526007602052604090205460ff166139c8576019548561395d886001600160a01b031660009081526020819052604090205490565b6139679190614d2c565b11156139c85760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610d5c565b8115613aa95760135460ff16613aa957601354610100900460ff168015613a0857506001600160a01b03861660009081526008602052604090205460ff16155b8015613a2d57506001600160a01b03871660009081526008602052604090205460ff16155b15613aa957306000908152602081905260409020546014548110613aa75760155460165460ff1615613a9157601754600d546001600160a01b031660009081526020819052604090205461271091613a8491614ccb565b613a8e9190614ca9565b90505b808210613a9c578091505b613aa582613e9b565b505b505b613ab7878787868686613ac2565b979650505050505050565b6000613ace8787613d75565b15613b6857601a5460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613b51575060408051601f3d908101601f19168201909252613b4e91810190614dab565b60015b613b5a57600080fd5b905080613b6657600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680613baa57506001600160a01b03871660009081526006602052604090205460ff165b15613bb3575060005b6001600160a01b03881660009081526020819052604081208054889290613bdb908490614ce2565b909155506000905081613bee5786613bfa565b613bfa898888886143ee565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613c309190614d2c565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c7c91815260200190565b60405180910390a3601a54610100900460ff16613d6657613c9d89896144fa565b601a54610100900460ff16158015613cba5750613cba8989613d75565b8015613cdf57506001600160a01b03891660009081526005602052604090205460ff16155b8015613d0457506001600160a01b03881660009081526005602052604090205460ff16155b8015613d0e575083155b15613d665760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610d5c565b50600198975050505050505050565b601c546000906001600160a01b038481166101009092041614801590613dae5750601c546001600160a01b038381166101009092041614155b8015613dca5750601c5461010090046001600160a01b03163214155b8015613def57506001600160a01b03821660009081526004602052604090205460ff16155b8015613e1457506001600160a01b03831660009081526004602052604090205460ff16155b8015613e2b57506001600160a01b03821661dead14155b8015613e3f57506001600160a01b03821615155b8015613e5457506001600160a01b0383163014155b8015613e745750601a546001600160a01b03848116620100009092041614155b8015613e945750601a546001600160a01b03838116620100009092041614155b9392505050565b6013805460ff191660011790556040805160c081018252600b5461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000081048316606083015268010000000000000000810483166080830152600160501b900490911660a08201819052600003613f1d57506143e1565b306000908152600360209081526040808320600c5461010090046001600160a01b0316845290915290205460001914613f8057306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613fb557613fb5614cf5565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404c9190614dc8565b8160018151811061405f5761405f614cf5565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac947906140ac908690600090869030904290600401614e07565b600060405180830381600087803b1580156140c657600080fd5b505af19250505080156140d7575060015b6140e25750506143e1565b60004790506000808460a0015161ffff16856020015161ffff16846141079190614ccb565b6141119190614ca9565b905060008560a0015161ffff16866060015161ffff16856141329190614ccb565b61413c9190614ca9565b905060008660a0015161ffff16876040015161ffff168661415d9190614ccb565b6141679190614ca9565b905060008760a0015161ffff16886080015161ffff16876141889190614ccb565b6141929190614ca9565b9050600081836141a28688614d2c565b6141ac9190614d2c565b6141b69190614d2c565b6141c09088614ce2565b60208a015190915061ffff161561422e57600f546040516001600160a01b039091169061d6d89087906000818181858888f193505050503d8060008114614223576040519150601f19603f3d011682016040523d82523d6000602084013e614228565b606091505b50909650505b606089015161ffff1615614299576010546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d806000811461428e576040519150601f19603f3d011682016040523d82523d6000602084013e614293565b606091505b50909650505b604089015161ffff1615614304576011546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d80600081146142f9576040519150601f19603f3d011682016040523d82523d6000602084013e6142fe565b606091505b50909650505b608089015161ffff161561436f576012546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114614364576040519150601f19603f3d011682016040523d82523d6000602084013e614369565b606091505b50909650505b885161ffff16156143d757600e546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146143cc576040519150601f19603f3d011682016040523d82523d6000602084013e6143d1565b606091505b50909650505b5050505050505050505b506013805460ff19169055565b60008083156144045750600a5461ffff1661442e565b821561441d5750600a5462010000900461ffff1661442e565b50600a54640100000000900461ffff165b601a546201000090046001600160a01b03163014801561444f575046606114155b1561445957506111945b8060000361446a5784915050611185565b60006127106144798388614ccb565b6144839190614ca9565b905080156144f05730600090815260208190526040812080548392906144aa908490614d2c565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613ab78187614ce2565b601a54610100900460ff161561455e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610d5c565b6145688282613d75565b1580156145825750600d546001600160a01b038281169116145b15611080576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055601a805461ff0019166101001790819055620100009004166145fa57601a805462010000600160b01b0319163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161291b565b8015158114611e3957600080fd5b6000806040838503121561465b57600080fd5b82356146668161463a565b915060208301356146768161463a565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156146c0576146c0614681565b604052919050565b600067ffffffffffffffff8211156146e2576146e2614681565b5060051b60200190565b6001600160a01b0381168114611e3957600080fd5b600082601f83011261471257600080fd5b81356020614727614722836146c8565b614697565b82815260059290921b8401810191818101908684111561474657600080fd5b8286015b8481101561476a57803561475d816146ec565b835291830191830161474a565b509695505050505050565b6000806040838503121561478857600080fd5b823567ffffffffffffffff81111561479f57600080fd5b6147ab85828601614701565b92505060208301356146768161463a565b600060208083528351808285015260005b818110156147e9578581018301518582016040015282016147cd565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561481d57600080fd5b8235614828816146ec565b946020939093013593505050565b60006020828403121561484857600080fd5b8135613e94816146ec565b6000806040838503121561486657600080fd5b8235614871816146ec565b91506020830135614676816146ec565b60008060006060848603121561489657600080fd5b83356148a1816146ec565b925060208401356148b1816146ec565b929592945050506040919091013590565b600080604083850312156148d557600080fd5b50508035926020909101359150565b600080604083850312156148f757600080fd5b823567ffffffffffffffff8082111561490f57600080fd5b61491b86838701614701565b935060209150818501358181111561493257600080fd5b85019050601f8101861361494557600080fd5b8035614953614722826146c8565b81815260059190911b8201830190838101908883111561497257600080fd5b928401925b8284101561499057833582529284019290840190614977565b80955050505050509250929050565b803561ffff811681146149b157600080fd5b919050565b6000806000606084860312156149cb57600080fd5b6149d48461499f565b92506149e26020850161499f565b91506149f06040850161499f565b90509250925092565b60008060408385031215614a0c57600080fd5b8235614666816146ec565b600060208284031215614a2957600080fd5b5035919050565b600080600080600060a08688031215614a4857600080fd5b8535614a53816146ec565b94506020860135614a63816146ec565b93506040860135614a73816146ec565b92506060860135614a83816146ec565b91506080860135614a93816146ec565b809150509295509295909350565b600080600080600060a08688031215614ab957600080fd5b614ac28661499f565b9450614ad06020870161499f565b9350614ade6040870161499f565b9250614aec6060870161499f565b9150614afa6080870161499f565b90509295509295909350565b60008060008060808587031215614b1c57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015614b715781516001600160a01b031687529582019590820190600101614b4c565b509495945050505050565b604081526000614b8f6040830185614b38565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115614bf1578160001904821115614bd757614bd7614ba0565b80851615614be457918102915b93841c9390800290614bbb565b509250929050565b600082614c0857506001610f10565b81614c1557506000610f10565b8160018114614c2b5760028114614c3557614c51565b6001915050610f10565b60ff841115614c4657614c46614ba0565b50506001821b610f10565b5060208310610133831016604e8410600b8410161715614c74575081810a610f10565b614c7e8383614bb6565b8060001904821115614c9257614c92614ba0565b029392505050565b6000613e9460ff841683614bf9565b600082614cc657634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610f1057610f10614ba0565b81810381811115610f1057610f10614ba0565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614d2257614d22614ba0565b6001019392505050565b80820180821115610f1057610f10614ba0565b60008060408385031215614d5257600080fd5b8251614d5d816146ec565b6020840151909250614676816146ec565b60008060408385031215614d8157600080fd5b505080516020909101519092909150565b600060208284031215614da457600080fd5b5051919050565b600060208284031215614dbd57600080fd5b8151613e948161463a565b600060208284031215614dda57600080fd5b8151613e94816146ec565b61ffff818116838216019080821115614e0057614e00614ba0565b5092915050565b85815284602082015260a060408201526000614e2660a0830186614b38565b6001600160a01b039490941660608301525060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220c7da0b64d74bf1f1e11a2809039ef0b130156b7c4f9a0ede517c08d9a6818cc364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103dd5760003560e01c80635a6f0918116101fd578063b1b08f7111610118578063eafb5a3c116100ab578063f94aa1b41161007a578063f94aa1b414610c21578063fb78680d14610c94578063fdb78c0e14610cb4578063fe575a8714610cd3578063feadde9c14610cf357600080fd5b8063eafb5a3c14610bac578063ee5d9c2d14610bcc578063eec2744e14610be1578063f08f43a214610c0157600080fd5b8063bfc2fc35116100e7578063bfc2fc3514610a93578063c6a276c214610ab3578063cf84770614610ad3578063dd62ed3e14610b6657600080fd5b8063b1b08f7114610690578063b3d514fb14610690578063b7df8b3614610a5f578063be1ded8714610a7957600080fd5b806380c581d1116101905780638a8c523c1161015f5780638a8c523c146109db57806395d89b41146109f0578063a9059cbb14610a1f578063ab558e4d14610a3f57600080fd5b806380c581d1146109635780638252879114610983578063893d20e8146109a35780638a63bd9b146109c657600080fd5b80636ebd0078116101cc5780636ebd0078146108ee57806370a0823114610903578063715018a61461093957806378648edf1461094e57600080fd5b80635a6f09181461086a5780635c24b074146108805780635cce86cd146108a05780635f189361146108d957600080fd5b806328577751116102f85780633f3cf56c1161028b5780634e718e481161025a5780634e718e48146107b25780634fb2e45d146107d25780634fbee193146107f257806350a8e0161461082b578063590ffdce1461084a57600080fd5b80633f3cf56c14610738578063452ed4f1146107585780634ada218b146107785780634bbb93eb1461079257600080fd5b8063313ce567116102c7578063313ce567146106bc57806332cde664146106d857806333251a0b146106f857806336fddb041461071857600080fd5b806328577751146106655780632b112e491461067b5780632b28fc7a146106905780632e8fa821146106a657600080fd5b8063095ea7b31161037057806318160ddd1161033f57806318160ddd146105f057806323b872dd1461060557806326003957146106255780632610eaca1461064557600080fd5b8063095ea7b3146105625780630dcbcf1c146105825780630fa604e4146105bb57806313b4a7f4146105d057600080fd5b8063069d955f116103ac578063069d955f1461048257806306fdde03146104d85780630758d9241461051357806307dd79e01461053857600080fd5b806303fd2a45146103e95780630445b6671461041c578063044df7261461044057806305bbedb61461046257600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b506103ff61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561042857600080fd5b5061043260145481565b604051908152602001610413565b34801561044c57600080fd5b5061046061045b366004614648565b610d13565b005b34801561046e57600080fd5b5061046061047d366004614775565b610dd6565b34801561048e57600080fd5b50600a546104b39061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610413565b3480156104e457600080fd5b506040805180820190915260098152680acc2ead8e8a8cac6d60bb1b60208201525b60405161041391906147bc565b34801561051f57600080fd5b50600c546103ff9061010090046001600160a01b031681565b34801561054457600080fd5b50600c546105529060ff1681565b6040519015158152602001610413565b34801561056e57600080fd5b5061055261057d36600461480a565b610eff565b34801561058e57600080fd5b5061055261059d366004614836565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105c757600080fd5b50610432610f16565b3480156105dc57600080fd5b506104606105eb366004614853565b610f36565b3480156105fc57600080fd5b506104326110f9565b34801561061157600080fd5b50610552610620366004614881565b611115565b34801561063157600080fd5b506104606106403660046148c2565b61118d565b34801561065157600080fd5b506104606106603660046148e4565b6112db565b34801561067157600080fd5b5061043260175481565b34801561068757600080fd5b50610432611495565b34801561069c57600080fd5b50610432610bb881565b3480156106b257600080fd5b5061043260155481565b3480156106c857600080fd5b5060405160128152602001610413565b3480156106e457600080fd5b506104606106f33660046149b6565b611513565b34801561070457600080fd5b50610460610713366004614836565b61166c565b34801561072457600080fd5b506104606107333660046149f9565b611723565b34801561074457600080fd5b506104606107533660046148c2565b61179b565b34801561076457600080fd5b50600d546103ff906001600160a01b031681565b34801561078457600080fd5b50601a546105529060ff1681565b34801561079e57600080fd5b506104326107ad366004614a17565b6118f5565b3480156107be57600080fd5b506104606107cd366004614a17565b611929565b3480156107de57600080fd5b506104606107ed366004614836565b6119cc565b3480156107fe57600080fd5b5061055261080d366004614836565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561083757600080fd5b50601a5461055290610100900460ff1681565b34801561085657600080fd5b506104606108653660046149f9565b611beb565b34801561087657600080fd5b50610432601b5481565b34801561088c57600080fd5b5061046061089b366004614836565b611c63565b3480156108ac57600080fd5b506105526108bb366004614836565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108e557600080fd5b50610460611e3c565b3480156108fa57600080fd5b50610432611eef565b34801561090f57600080fd5b5061043261091e366004614836565b6001600160a01b031660009081526020819052604090205490565b34801561094557600080fd5b50610460611f0a565b34801561095a57600080fd5b5061046061203e565b34801561096f57600080fd5b5061046061097e3660046149f9565b61209a565b34801561098f57600080fd5b5061046061099e366004614a30565b612289565b3480156109af57600080fd5b50601c5461010090046001600160a01b03166103ff565b3480156109d257600080fd5b506105526123f1565b3480156109e757600080fd5b50610460612466565b3480156109fc57600080fd5b5060408051808201909152600681526509159055531560d21b6020820152610506565b348015610a2b57600080fd5b50610552610a3a36600461480a565b6126c1565b348015610a4b57600080fd5b50610460610a5a366004614836565b6126d8565b348015610a6b57600080fd5b506016546105529060ff1681565b348015610a8557600080fd5b50601c546105529060ff1681565b348015610a9f57600080fd5b50610460610aae366004614648565b61287b565b348015610abf57600080fd5b50610460610ace366004614836565b612927565b348015610adf57600080fd5b50600b54610b299061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610413565b348015610b7257600080fd5b50610432610b81366004614853565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610bb857600080fd5b50610460610bc7366004614836565b6129ad565b348015610bd857600080fd5b50610460612da6565b348015610bed57600080fd5b50610460610bfc3660046149f9565b612e8b565b348015610c0d57600080fd5b50610460610c1c366004614aa1565b612f6c565b348015610c2d57600080fd5b50600e54600f54601054601154601254610c5a946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a001610413565b348015610ca057600080fd5b50610460610caf366004614b06565b6130fe565b348015610cc057600080fd5b5060135461055290610100900460ff1681565b348015610cdf57600080fd5b50610552610cee366004614836565b6133c5565b348015610cff57600080fd5b50610460610d0e3660046149f9565b61343a565b601c5461010090046001600160a01b03163314610d655760405162461bcd60e51b81526020600482015260116024820152600080516020614e4483398151915260448201526064015b60405180910390fd5b601a5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610dba57600080fd5b505af1158015610dce573d6000803e3d6000fd5b505050505050565b601c5461010090046001600160a01b03163314610e235760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b606482511115610e755760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e79206174206f6e63652e0000000000000000000000000000006044820152606401610d5c565b601c5460ff1615610ec85760405162461bcd60e51b815260206004820152601d60248201527f426c61636b6c697374206164646974696f6e2072656e6f756e6365642e0000006044820152606401610d5c565b601a546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610da09085908590600401614b7c565b6000610f0c3384846134b2565b5060015b92915050565b6000610f246012600a614c9a565b601954610f319190614ca9565b905090565b601c5461010090046001600160a01b03163314610f835760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b60095460ff16610f9257600080fd5b6001600160a01b0382163014801590610fb457506001600160a01b0381163014155b8015610fce5750600d546001600160a01b03838116911614155b8015610fe85750600d546001600160a01b03828116911614155b6110225760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610d5c565b806001600160a01b0316826001600160a01b031603611084576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055611080908290611beb565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff199182168117909255958716808552828520805488168317905594845260089092528083208054861683179055928252919020805490921681179091556110ee908390611beb565b611080816001611beb565b60006111076012600a614c9a565b610f31906305f5e100614ccb565b6001600160a01b03831660009081526003602090815260408083203384529091528120546000191461117a576001600160a01b038416600090815260036020908152604080832033845290915281208054849290611174908490614ce2565b90915550505b6111858484846135ab565b949350505050565b601c5461010090046001600160a01b031633146111da5760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b60646111e86012600a614c9a565b6111f6906305f5e100614ccb565b6112009190614ca9565b818361120e6012600a614c9a565b61121c906305f5e100614ccb565b6112269190614ccb565b6112309190614ca9565b10156112a45760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610d5c565b80826112b26012600a614c9a565b6112c0906305f5e100614ccb565b6112ca9190614ccb565b6112d49190614ca9565b6019555050565b601c5461010090046001600160a01b031633146113285760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b80518251146113795760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610d5c565b60005b82518161ffff161015611490576113956012600a614c9a565b828261ffff16815181106113ab576113ab614cf5565b60200260200101516113bd9190614ccb565b33600090815260208190526040902054101561141b5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610d5c565b61147d33848361ffff168151811061143557611435614cf5565b60200260200101516012600a61144b9190614c9a565b858561ffff168151811061146157611461614cf5565b60200260200101516114739190614ccb565b6000806001613ac2565b508061148881614d0b565b91505061137c565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546114ef9190614d2c565b6114fb6012600a614c9a565b611509906305f5e100614ccb565b610f319190614ce2565b601c5461010090046001600160a01b031633146115605760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b600c5460ff16156115b35760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610d5c565b610bb88361ffff16111580156115cf5750610bb88261ffff1611155b80156115e15750610bb88161ffff1611155b61162d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610d5c565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601c5461010090046001600160a01b031633146116b95760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561170857600080fd5b505af115801561171c573d6000803e3d6000fd5b5050505050565b601c5461010090046001600160a01b031633146117705760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b031633146117e85760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6103e86117f76012600a614c9a565b611805906305f5e100614ccb565b611810906005614ccb565b61181a9190614ca9565b81836118286012600a614c9a565b611836906305f5e100614ccb565b6118409190614ccb565b61184a9190614ca9565b10156118be5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610d5c565b80826118cc6012600a614c9a565b6118da906305f5e100614ccb565b6118e49190614ccb565b6118ee9190614ca9565b6018555050565b600d546001600160a01b03166000908152602081905260408120546127109061191f908490614ccb565b610f109190614ca9565b601c5461010090046001600160a01b031633146119765760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b60968111156119c75760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610d5c565b601755565b601c5461010090046001600160a01b03163314611a195760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6001600160a01b038116611a955760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610d5c565b61deac196001600160a01b03821601611b165760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610d5c565b601c54611b329061010090046001600160a01b03166000611beb565b611b3d816001611beb565b601c5461010090046001600160a01b03166000908152602081905260408120541115611b9157601c5461010090046001600160a01b0316600081815260208190526040902054611b8f91908390611473565b505b601c80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601c5461010090046001600160a01b03163314611c385760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b03163314611cb05760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a5460ff1615611cc057600080fd5b306001600160a01b03821603611d185760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610d5c565b601a805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611d9e575060408051601f3d908101601f19168201909252611d9b91810190614d3f565b60015b611da757600080fd5b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601c549254611e1a93829004831692919004166000196134b2565b600c5461149090309061010090046001600160a01b03166000196134b2565b50565b601c5461010090046001600160a01b03163314611e895760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601c5460ff161515600103611ee05760405162461bcd60e51b815260206004820152601260248201527f416c72656164792072656e6f756e6365642e00000000000000000000000000006044820152606401610d5c565b601c805460ff19166001179055565b6000611efd6012600a614c9a565b601854610f319190614ca9565b601c5461010090046001600160a01b03163314611f575760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a5460ff16611fcf5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610d5c565b601c54611feb9061010090046001600160a01b03166000611beb565b601c8054610100600160a81b031981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c5461010090046001600160a01b0316331461208b5760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b600c805460ff19166001179055565b601c5461010090046001600160a01b031633146120e75760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b8061215a576001600160a01b03828116600081815260016020526040808220805460ff19169055601a5490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610dba57600080fd5b600254156121c1576203f480600254426121749190614ce2565b116121c15760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610d5c565b6001600160a01b03821660009081526001602052604090205460ff161561222a5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610d5c565b6001600160a01b03828116600081815260016020819052604091829020805460ff19168217905542600255601a5491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610da0565b601c5461010090046001600160a01b031633146122d65760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6001600160a01b038516158015906122f657506001600160a01b03841615155b801561230a57506001600160a01b03831615155b801561231e57506001600160a01b03821615155b801561233257506001600160a01b03841615155b801561234657506001600160a01b03811615155b6123925760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610d5c565b600e80546001600160a01b03199081166001600160a01b0397881617909155600f805482169487169490941790935560108054841692861692909217909155601180548316938516939093179092556012805490911691909216179055565b601c5460009061010090046001600160a01b031633146124415760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b600c5461246090309061010090046001600160a01b03166000196134b2565b50600190565b601c5461010090046001600160a01b031633146124b35760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a5460ff16156125065760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610d5c565b601a54610100900460ff1661255d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610d5c565b601a546201000090046001600160a01b031661258d57601a805462010000600160b01b0319163062010000021790555b601a54600d54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156125ff57600080fd5b505af1925050508015612610575060015b50601a54600d546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015612693575060408051601f3d908101601f1916820190925261269091810190614d6e565b60015b156126a2576014919091556015555b601a805460ff1990811660011790915560098054909116905542601b55565b60006126ce3384846135ab565b5060019392505050565b601c5461010090046001600160a01b031633146127255760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a54610100900460ff161561278d57306001600160a01b0382160361278d5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610d5c565b601c546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa1580156127e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280c9190614d92565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612857573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114909190614dab565b601c5461010090046001600160a01b031633146128c85760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6013805461ff001916610100841515908102919091179091556016805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c5461010090046001600160a01b031633146129745760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016116ee565b601c5461010090046001600160a01b031633146129fa5760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a54610100900460ff1615612a525760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610d5c565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abb9190614dc8565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2c9190614dc8565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9b9190614dc8565b600d546001600160a01b039081166000908152600160205260409020805460ff191690559091508116612d3157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2a9190614dc8565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9b9190614dc8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612ce8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0c9190614dc8565b600d80546001600160a01b0319166001600160a01b0392909216919091179055612d4d565b600d80546001600160a01b0319166001600160a01b0383161790555b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d5482166000908152600160208190526040909120805460ff1916909117905591546114909230929104166000196134b2565b601c5461010090046001600160a01b03163314612df35760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601a54610100900460ff1615612e4b5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610d5c565b601c546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f19350505050158015611e39573d6000803e3d6000fd5b601c5461010090046001600160a01b03163314612ed85760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b601c5460ff1615612f2b5760405162461bcd60e51b815260206004820152601d60248201527f426c61636b6c697374206164646974696f6e2072656e6f756e6365642e0000006044820152606401610d5c565b601a546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610da0565b601c5461010090046001600160a01b03163314612fb95760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff00000000191666010000000000008683160265ffff00000000191617640100000000858316021769ffff0000000000000000191668010000000000000000918416919091021790558082846130338789614de5565b61303d9190614de5565b6130479190614de5565b6130519190614de5565b600b80546bffff000000000000000000001916600160501b61ffff93841602179055600a5460009161308c9162010000810482169116614de5565b600b5461ffff9182169250600160501b900416811015610dce5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610d5c565b601c5461010090046001600160a01b0316331461314b5760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b82846131596012600a614c9a565b613167906305f5e100614ccb565b6131719190614ccb565b61317b9190614ca9565b601455808261318c6012600a614c9a565b61319a906305f5e100614ccb565b6131a49190614ccb565b6131ae9190614ca9565b6015819055601454111561320e5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610d5c565b600d546001600160a01b031660009081526020819052604090205461271090613238906096614ccb565b6132429190614ca9565b601554111561329f5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610d5c565b620f42406132af6012600a614c9a565b6132bd906305f5e100614ccb565b6132c79190614ca9565b601554101561332f5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610d5c565b620f424061333f6012600a614c9a565b61334d906305f5e100614ccb565b6133579190614ca9565b60145410156133bf5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610d5c565b50505050565b601a5460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613416573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f109190614dab565b601c5461010090046001600160a01b031633146134875760405162461bcd60e51b81526020600482015260116024820152600080516020614e448339815191526044820152606401610d5c565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166134fe5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610d5c565b6001600160a01b03821661354a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610d5c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166136115760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d5c565b6001600160a01b0383166136735760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d5c565b600082116136d55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d5c565b6001600160a01b0384166000908152600160205260408120548190819060ff16156137035760019250613731565b6001600160a01b03861660009081526001602052604090205460ff161561372d5760019150613731565b5060015b61373b8787613d75565b156139c857601a5460ff1661383c57806137975760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610d5c565b6001600160a01b03871660009081526005602052604090205460ff161580156137d957506001600160a01b03861660009081526005602052604090205460ff16155b1561383c5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610d5c565b82806138455750815b156138f4576001600160a01b03871660009081526007602052604090205460ff1615801561388c57506001600160a01b03861660009081526007602052604090205460ff16155b156138f4576018548511156138f45760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610d5c565b600c546001600160a01b038781166101009092041614801590613915575081155b156139c8576001600160a01b03861660009081526007602052604090205460ff166139c8576019548561395d886001600160a01b031660009081526020819052604090205490565b6139679190614d2c565b11156139c85760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610d5c565b8115613aa95760135460ff16613aa957601354610100900460ff168015613a0857506001600160a01b03861660009081526008602052604090205460ff16155b8015613a2d57506001600160a01b03871660009081526008602052604090205460ff16155b15613aa957306000908152602081905260409020546014548110613aa75760155460165460ff1615613a9157601754600d546001600160a01b031660009081526020819052604090205461271091613a8491614ccb565b613a8e9190614ca9565b90505b808210613a9c578091505b613aa582613e9b565b505b505b613ab7878787868686613ac2565b979650505050505050565b6000613ace8787613d75565b15613b6857601a5460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613b51575060408051601f3d908101601f19168201909252613b4e91810190614dab565b60015b613b5a57600080fd5b905080613b6657600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680613baa57506001600160a01b03871660009081526006602052604090205460ff165b15613bb3575060005b6001600160a01b03881660009081526020819052604081208054889290613bdb908490614ce2565b909155506000905081613bee5786613bfa565b613bfa898888886143ee565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613c309190614d2c565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c7c91815260200190565b60405180910390a3601a54610100900460ff16613d6657613c9d89896144fa565b601a54610100900460ff16158015613cba5750613cba8989613d75565b8015613cdf57506001600160a01b03891660009081526005602052604090205460ff16155b8015613d0457506001600160a01b03881660009081526005602052604090205460ff16155b8015613d0e575083155b15613d665760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610d5c565b50600198975050505050505050565b601c546000906001600160a01b038481166101009092041614801590613dae5750601c546001600160a01b038381166101009092041614155b8015613dca5750601c5461010090046001600160a01b03163214155b8015613def57506001600160a01b03821660009081526004602052604090205460ff16155b8015613e1457506001600160a01b03831660009081526004602052604090205460ff16155b8015613e2b57506001600160a01b03821661dead14155b8015613e3f57506001600160a01b03821615155b8015613e5457506001600160a01b0383163014155b8015613e745750601a546001600160a01b03848116620100009092041614155b8015613e945750601a546001600160a01b03838116620100009092041614155b9392505050565b6013805460ff191660011790556040805160c081018252600b5461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000081048316606083015268010000000000000000810483166080830152600160501b900490911660a08201819052600003613f1d57506143e1565b306000908152600360209081526040808320600c5461010090046001600160a01b0316845290915290205460001914613f8057306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613fb557613fb5614cf5565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404c9190614dc8565b8160018151811061405f5761405f614cf5565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac947906140ac908690600090869030904290600401614e07565b600060405180830381600087803b1580156140c657600080fd5b505af19250505080156140d7575060015b6140e25750506143e1565b60004790506000808460a0015161ffff16856020015161ffff16846141079190614ccb565b6141119190614ca9565b905060008560a0015161ffff16866060015161ffff16856141329190614ccb565b61413c9190614ca9565b905060008660a0015161ffff16876040015161ffff168661415d9190614ccb565b6141679190614ca9565b905060008760a0015161ffff16886080015161ffff16876141889190614ccb565b6141929190614ca9565b9050600081836141a28688614d2c565b6141ac9190614d2c565b6141b69190614d2c565b6141c09088614ce2565b60208a015190915061ffff161561422e57600f546040516001600160a01b039091169061d6d89087906000818181858888f193505050503d8060008114614223576040519150601f19603f3d011682016040523d82523d6000602084013e614228565b606091505b50909650505b606089015161ffff1615614299576010546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d806000811461428e576040519150601f19603f3d011682016040523d82523d6000602084013e614293565b606091505b50909650505b604089015161ffff1615614304576011546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d80600081146142f9576040519150601f19603f3d011682016040523d82523d6000602084013e6142fe565b606091505b50909650505b608089015161ffff161561436f576012546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114614364576040519150601f19603f3d011682016040523d82523d6000602084013e614369565b606091505b50909650505b885161ffff16156143d757600e546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146143cc576040519150601f19603f3d011682016040523d82523d6000602084013e6143d1565b606091505b50909650505b5050505050505050505b506013805460ff19169055565b60008083156144045750600a5461ffff1661442e565b821561441d5750600a5462010000900461ffff1661442e565b50600a54640100000000900461ffff165b601a546201000090046001600160a01b03163014801561444f575046606114155b1561445957506111945b8060000361446a5784915050611185565b60006127106144798388614ccb565b6144839190614ca9565b905080156144f05730600090815260208190526040812080548392906144aa908490614d2c565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613ab78187614ce2565b601a54610100900460ff161561455e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610d5c565b6145688282613d75565b1580156145825750600d546001600160a01b038281169116145b15611080576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055601a805461ff0019166101001790819055620100009004166145fa57601a805462010000600160b01b0319163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161291b565b8015158114611e3957600080fd5b6000806040838503121561465b57600080fd5b82356146668161463a565b915060208301356146768161463a565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156146c0576146c0614681565b604052919050565b600067ffffffffffffffff8211156146e2576146e2614681565b5060051b60200190565b6001600160a01b0381168114611e3957600080fd5b600082601f83011261471257600080fd5b81356020614727614722836146c8565b614697565b82815260059290921b8401810191818101908684111561474657600080fd5b8286015b8481101561476a57803561475d816146ec565b835291830191830161474a565b509695505050505050565b6000806040838503121561478857600080fd5b823567ffffffffffffffff81111561479f57600080fd5b6147ab85828601614701565b92505060208301356146768161463a565b600060208083528351808285015260005b818110156147e9578581018301518582016040015282016147cd565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561481d57600080fd5b8235614828816146ec565b946020939093013593505050565b60006020828403121561484857600080fd5b8135613e94816146ec565b6000806040838503121561486657600080fd5b8235614871816146ec565b91506020830135614676816146ec565b60008060006060848603121561489657600080fd5b83356148a1816146ec565b925060208401356148b1816146ec565b929592945050506040919091013590565b600080604083850312156148d557600080fd5b50508035926020909101359150565b600080604083850312156148f757600080fd5b823567ffffffffffffffff8082111561490f57600080fd5b61491b86838701614701565b935060209150818501358181111561493257600080fd5b85019050601f8101861361494557600080fd5b8035614953614722826146c8565b81815260059190911b8201830190838101908883111561497257600080fd5b928401925b8284101561499057833582529284019290840190614977565b80955050505050509250929050565b803561ffff811681146149b157600080fd5b919050565b6000806000606084860312156149cb57600080fd5b6149d48461499f565b92506149e26020850161499f565b91506149f06040850161499f565b90509250925092565b60008060408385031215614a0c57600080fd5b8235614666816146ec565b600060208284031215614a2957600080fd5b5035919050565b600080600080600060a08688031215614a4857600080fd5b8535614a53816146ec565b94506020860135614a63816146ec565b93506040860135614a73816146ec565b92506060860135614a83816146ec565b91506080860135614a93816146ec565b809150509295509295909350565b600080600080600060a08688031215614ab957600080fd5b614ac28661499f565b9450614ad06020870161499f565b9350614ade6040870161499f565b9250614aec6060870161499f565b9150614afa6080870161499f565b90509295509295909350565b60008060008060808587031215614b1c57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015614b715781516001600160a01b031687529582019590820190600101614b4c565b509495945050505050565b604081526000614b8f6040830185614b38565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115614bf1578160001904821115614bd757614bd7614ba0565b80851615614be457918102915b93841c9390800290614bbb565b509250929050565b600082614c0857506001610f10565b81614c1557506000610f10565b8160018114614c2b5760028114614c3557614c51565b6001915050610f10565b60ff841115614c4657614c46614ba0565b50506001821b610f10565b5060208310610133831016604e8410600b8410161715614c74575081810a610f10565b614c7e8383614bb6565b8060001904821115614c9257614c92614ba0565b029392505050565b6000613e9460ff841683614bf9565b600082614cc657634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610f1057610f10614ba0565b81810381811115610f1057610f10614ba0565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614d2257614d22614ba0565b6001019392505050565b80820180821115610f1057610f10614ba0565b60008060408385031215614d5257600080fd5b8251614d5d816146ec565b6020840151909250614676816146ec565b60008060408385031215614d8157600080fd5b505080516020909101519092909150565b600060208284031215614da457600080fd5b5051919050565b600060208284031215614dbd57600080fd5b8151613e948161463a565b600060208284031215614dda57600080fd5b8151613e94816146ec565b61ffff818116838216019080821115614e0057614e00614ba0565b5092915050565b85815284602082015260a060408201526000614e2660a0830186614b38565b6001600160a01b039490941660608301525060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220c7da0b64d74bf1f1e11a2809039ef0b130156b7c4f9a0ede517c08d9a6818cc364736f6c63430008130033

Deployed Bytecode Sourcemap

4392:26297:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6161:73;;;;;;;;;;;;6192:42;6161:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;6161:73:0;;;;;;;;6938:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6938:28:0;245:177:1;16636:153:0;;;;;;;;;;-1:-1:-1;16636:153:0;;;;;:::i;:::-;;:::i;:::-;;15512:415;;;;;;;;;;-1:-1:-1;15512:415:0;;;;;:::i;:::-;;:::i;5566:109::-;;;;;;;;;;-1:-1:-1;5566:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;3120:6:1;3153:15;;;3135:34;;3205:15;;;3200:2;3185:18;;3178:43;3257:15;;3237:18;;;3230:43;;;;3098:2;3083:18;5566:109:0;2914:365:1;10676:80:0;;;;;;;;;;-1:-1:-1;10748:5:0;;;;;;;;;;;;-1:-1:-1;;;10748:5:0;;;;10676:80;;;;;;;:::i;6100:26::-;;;;;;;;;;-1:-1:-1;6100:26:0;;;;;;;-1:-1:-1;;;;;6100:26:0;;;6067;;;;;;;;;;-1:-1:-1;6067:26:0;;;;;;;;;;;4250:14:1;;4243:22;4225:41;;4213:2;4198:18;6067:26:0;4085:187:1;11284:161:0;;;;;;;;;;-1:-1:-1;11284:161:0;;;;;:::i;:::-;;:::i;14658:140::-;;;;;;;;;;-1:-1:-1;14658:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14756:34:0;14732:4;14756:34;;;:25;:34;;;;;;;;;14658:140;19502:114;;;;;;;;;;;;;:::i;21024:809::-;;;;;;;;;;-1:-1:-1;21024:809:0;;;;;:::i;:::-;;:::i;10411:83::-;;;;;;;;;;;;;:::i;11954:306::-;;;;;;;;;;-1:-1:-1;11954:306:0;;;;;:::i;:::-;;:::i;19114:264::-;;;;;;;;;;-1:-1:-1;19114:264:0;;;;;:::i;:::-;;:::i;28401:447::-;;;;;;;;;;-1:-1:-1;28401:447:0;;;;;:::i;:::-;;:::i;7046:33::-;;;;;;;;;;;;;;;;14962:141;;;;;;;;;;;;;:::i;5864:42::-;;;;;;;;;;;;5902:4;5864:42;;6973:25;;;;;;;;;;;;;;;;10500:80;;;;;;;;;;-1:-1:-1;10500:80:0;;5191:2;7241:36:1;;7229:2;7214:18;10500:80:0;7099:184:1;16987:453:0;;;;;;;;;;-1:-1:-1;16987:453:0;;;;;:::i;:::-;;:::i;16518:110::-;;;;;;;;;;-1:-1:-1;16518:110:0;;;;;:::i;:::-;;:::i;14233:140::-;;;;;;;;;;-1:-1:-1;14233:140:0;;;;;:::i;:::-;;:::i;18833:273::-;;;;;;;;;;-1:-1:-1;18833:273:0;;;;;:::i;:::-;;:::i;6133:21::-;;;;;;;;;;-1:-1:-1;6133:21:0;;;;-1:-1:-1;;;;;6133:21:0;;;7214:34;;;;;;;;;;-1:-1:-1;7214:34:0;;;;;;;;19624:189;;;;;;;;;;-1:-1:-1;19624:189:0;;;;;:::i;:::-;;:::i;20528:217::-;;;;;;;;;;-1:-1:-1;20528:217:0;;;;;:::i;:::-;;:::i;9049:654::-;;;;;;;;;;-1:-1:-1;9049:654:0;;;;;:::i;:::-;;:::i;14381:127::-;;;;;;;;;;-1:-1:-1;14381:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14472:28:0;14448:4;14472:28;;;:19;:28;;;;;;;;;14381:127;7255:36;;;;;;;;;;-1:-1:-1;7255:36:0;;;;;;;;;;;14516:134;;;;;;;;;;-1:-1:-1;14516:134:0;;;;;:::i;:::-;;:::i;7328:26::-;;;;;;;;;;;;;;;;13528:557;;;;;;;;;;-1:-1:-1;13528:557:0;;;;;:::i;:::-;;:::i;14093:132::-;;;;;;;;;;-1:-1:-1;14093:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;14187:30:0;14163:4;14187:30;;;:21;:30;;;;;;;;;14093:132;16282:164;;;;;;;;;;;;;:::i;19386:108::-;;;;;;;;;;;;;:::i;10986:117::-;;;;;;;;;;-1:-1:-1;10986:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11079:16:0;11052:7;11079:16;;;;;;;;;;;;10986:117;9711:310;;;;;;;;;;;;;:::i;16797:182::-;;;;;;;;;;;;;:::i;12956:564::-;;;;;;;;;;-1:-1:-1;12956:564:0;;;;;:::i;:::-;;:::i;18008:817::-;;;;;;;;;;-1:-1:-1;18008:817:0;;;;;:::i;:::-;;:::i;10762:79::-;;;;;;;;;;-1:-1:-1;10832:6:0;;;;;-1:-1:-1;;;;;10832:6:0;10762:79;;11771:175;;;;;;;;;;;;;:::i;27162:737::-;;;;;;;;;;;;;:::i;10586:84::-;;;;;;;;;;-1:-1:-1;10660:7:0;;;;;;;;;;;;-1:-1:-1;;;10660:7:0;;;;10586:84;;11111:165;;;;;;;;;;-1:-1:-1;11111:165:0;;;;;:::i;:::-;;:::i;28097:296::-;;;;;;;;;;-1:-1:-1;28097:296:0;;;;;:::i;:::-;;:::i;7005:34::-;;;;;;;;;;-1:-1:-1;7005:34:0;;;;;;;;7361:40;;;;;;;;;;-1:-1:-1;7361:40:0;;;;;;;;20753:263;;;;;;;;;;-1:-1:-1;20753:263:0;;;;;:::i;:::-;;:::i;16072:202::-;;;;;;;;;;-1:-1:-1;16072:202:0;;;;;:::i;:::-;;:::i;5684:171::-;;;;;;;;;;-1:-1:-1;5684:171:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5684:171:0;;;;;;;;;9500:6:1;9533:15;;;9515:34;;9585:15;;;9580:2;9565:18;;9558:43;9637:15;;;9617:18;;;9610:43;;;;9689:15;;;9684:2;9669:18;;9662:43;9742:15;;9736:3;9721:19;;9714:44;9795:15;;;9789:3;9774:19;;9767:44;9477:3;9462:19;5684:171:0;9215:602:1;10847:133:0;;;;;;;;;;-1:-1:-1;10847:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10949:19:0;;;10931:7;10949:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10847:133;12268:680;;;;;;;;;;-1:-1:-1;12268:680:0;;;;;:::i;:::-;;:::i;27907:182::-;;;;;;;;;;;;;:::i;15179:325::-;;;;;;;;;;-1:-1:-1;15179:325:0;;;;;:::i;:::-;;:::i;17448:552::-;;;;;;;;;;-1:-1:-1;17448:552:0;;;;;:::i;:::-;;:::i;6451:410::-;;;;;;;;;;-1:-1:-1;6451:410:0;;;;;;;;;;;;-1:-1:-1;;;;;6451:410:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10719:15:1;;;10701:34;;10771:15;;;10766:2;10751:18;;10744:43;10823:15;;;10803:18;;;10796:43;;;;10875:15;;10870:2;10855:18;;10848:43;10928:15;;;10922:3;10907:19;;10900:44;10627:3;10612:19;6451:410:0;10301:649:1;19821:699:0;;;;;;;;;;-1:-1:-1;19821:699:0;;;;;:::i;:::-;;:::i;6892:39::-;;;;;;;;;;-1:-1:-1;6892:39:0;;;;;;;;;;;15935:129;;;;;;;;;;-1:-1:-1;15935:129:0;;;;;:::i;:::-;;:::i;14806:148::-;;;;;;;;;;-1:-1:-1;14806:148:0;;;;;:::i;:::-;;:::i;16636:153::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;;;;;;;;;16731:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;16731:50:0;;11878:14:1;;11871:22;16731:50:0::1;::::0;::::1;11853:41:1::0;11937:14;;11930:22;11910:18;;;11903:50;16731:11:0;;;::::1;-1:-1:-1::0;;;;;16731:11:0::1;::::0;:26:::1;::::0;11826:18:1;;16731:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16636:153:::0;;:::o;15512:415::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;15751:3:::1;15732:8;:15;:22;;15724:52;;;::::0;-1:-1:-1;;;15724:52:0;;12166:2:1;15724:52:0::1;::::0;::::1;12148:21:1::0;12205:2;12185:18;;;12178:30;12244:19;12224:18;;;12217:47;12281:18;;15724:52:0::1;11964:341:1::0;15724:52:0::1;15796:20;::::0;::::1;;15795:21;15787:63;;;::::0;-1:-1:-1;;;15787:63:0;;12512:2:1;15787:63:0::1;::::0;::::1;12494:21:1::0;12551:2;12531:18;;;12524:30;12590:31;12570:18;;;12563:59;12639:18;;15787:63:0::1;12310:353:1::0;15787:63:0::1;15861:11;::::0;:58:::1;::::0;-1:-1:-1;;;15861:58:0;;:11;;;::::1;-1:-1:-1::0;;;;;15861:11:0::1;::::0;:39:::1;::::0;:58:::1;::::0;15901:8;;15911:7;;15861:58:::1;;;:::i;11284:161::-:0;11361:4;11378:37;11387:10;11399:7;11408:6;11378:8;:37::i;:::-;-1:-1:-1;11433:4:0;11284:161;;;;;:::o;19502:114::-;19549:7;19594:13;5191:2;19594;:13;:::i;:::-;19576:14;;:32;;;;:::i;:::-;19569:39;;19502:114;:::o;21024:809::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;21128:23:::1;::::0;::::1;;21120:32;;;::::0;::::1;;-1:-1:-1::0;;;;;21171:23:0;::::1;21189:4;21171:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;21216:24:0;::::1;21235:4;21216:24;;21171:69;:107;;;;-1:-1:-1::0;21262:6:0::1;::::0;-1:-1:-1;;;;;21262:16:0;;::::1;:6:::0;::::1;:16;;21171:107;:146;;;;-1:-1:-1::0;21300:6:0::1;::::0;-1:-1:-1;;;;;21300:17:0;;::::1;:6:::0;::::1;:17;;21171:146;21163:170;;;::::0;-1:-1:-1;;;21163:170:0;;15443:2:1;21163:170:0::1;::::0;::::1;15425:21:1::0;15482:2;15462:18;;;15455:30;-1:-1:-1;;;15501:18:1;;;15494:41;15552:18;;21163:170:0::1;15241:335:1::0;21163:170:0::1;21358:7;-1:-1:-1::0;;;;;21348:17:0::1;:6;-1:-1:-1::0;;;;;21348:17:0::1;::::0;21344:482:::1;;-1:-1:-1::0;;;;;21382:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;21411:4:::1;-1:-1:-1::0;;21382:33:0;;::::1;::::0;::::1;::::0;;;21430:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;21477:34:::1;::::0;21382:26;;21477:19:::1;:34::i;:::-;21024:809:::0;;:::o;21344:482::-:1;-1:-1:-1::0;;;;;21544:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;21572:4:::1;-1:-1:-1::0;;21544:32:0;;::::1;::::0;::::1;::::0;;;21591:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;21639:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;21685:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;21732:33:::1;::::0;21544:25;;21732:19:::1;:33::i;:::-;21780:34;21800:7;21809:4;21780:19;:34::i;10411:83::-:0;10466:7;5252:13;5191:2;5252;:13;:::i;:::-;5235:30;;5039:11;5235:30;:::i;11954:306::-;-1:-1:-1;;;;;12075:19:0;;12054:4;12075:19;;;:11;:19;;;;;;;;12095:10;12075:31;;;;;;;;-1:-1:-1;;12075:52:0;12071:126;;-1:-1:-1;;;;;12144:19:0;;;;;;:11;:19;;;;;;;;12164:10;12144:31;;;;;;;:41;;12179:6;;12144:19;:41;;12179:6;;12144:41;:::i;:::-;;;;-1:-1:-1;;12071:126:0;12216:36;12226:6;12234:9;12245:6;12216:9;:36::i;:::-;12209:43;11954:306;-1:-1:-1;;;;11954:306:0:o;19114:264::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;19256:3:::1;5252:13;5191:2;5252;:13;:::i;:::-;5235:30;::::0;5039:11:::1;5235:30;:::i;:::-;19246:13;;;;:::i;:::-;19234:7:::0;19223;5252:13:::1;5191:2;5252;:13;:::i;:::-;5235:30;::::0;5039:11:::1;5235:30;:::i;:::-;19213:17;;;;:::i;:::-;19212:29;;;;:::i;:::-;:48;;19204:109;;;::::0;-1:-1:-1;;;19204:109:0;;16089:2:1;19204:109:0::1;::::0;::::1;16071:21:1::0;16128:2;16108:18;;;16101:30;16167:34;16147:18;;;16140:62;16238:18;16218;;;16211:46;16274:19;;19204:109:0::1;15887:412:1::0;19204:109:0::1;19363:7:::0;19352;5252:13:::1;5191:2;5252;:13;:::i;:::-;5235:30;::::0;5039:11:::1;5235:30;:::i;:::-;19342:17;;;;:::i;:::-;19341:29;;;;:::i;:::-;19324:14;:46:::0;-1:-1:-1;;19114:264:0:o;28401:447::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;28536:7:::1;:14;28517:8;:15;:33;28509:67;;;::::0;-1:-1:-1;;;28509:67:0;;16506:2:1;28509:67:0::1;::::0;::::1;16488:21:1::0;16545:2;16525:18;;;16518:30;16584:23;16564:18;;;16557:51;16625:18;;28509:67:0::1;16304:345:1::0;28509:67:0::1;28592:8;28587:254;28610:8;:15;28606:1;:19;;;28587:254;;;28691:13;5191:2;28691;:13;:::i;:::-;28680:7;28688:1;28680:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;28665:10;11052:7:::0;11079:16;;;;;;;;;;;28655:49:::1;;28647:80;;;::::0;-1:-1:-1;;;28647:80:0;;16988:2:1;28647:80:0::1;::::0;::::1;16970:21:1::0;17027:2;17007:18;;;17000:30;17066:20;17046:18;;;17039:48;17104:18;;28647:80:0::1;16786:342:1::0;28647:80:0::1;28742:87;28759:10;28771:8;28780:1;28771:11;;;;;;;;;;:::i;:::-;;;;;;;5191:2;28795;:13;;;;:::i;:::-;28784:7;28792:1;28784:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;28810:5;28817::::0;28824:4:::1;28742:16;:87::i;:::-;-1:-1:-1::0;28627:3:0;::::1;::::0;::::1;:::i;:::-;;;;28587:254;;;;28401:447:::0;;:::o;14962:141::-;15015:7;11079:16;;;;;;6192:42;11079:16;;;;15054:39;;11079:16;15054:39;:::i;:::-;5252:13;5191:2;5252;:13;:::i;:::-;5235:30;;5039:11;5235:30;:::i;:::-;15043:51;;;;:::i;16987:453::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;17095:14:::1;::::0;::::1;;17094:15;17086:45;;;::::0;-1:-1:-1;;;17086:45:0;;17667:2:1;17086:45:0::1;::::0;::::1;17649:21:1::0;17706:2;17686:18;;;17679:30;17745:19;17725:18;;;17718:47;17782:18;;17086:45:0::1;17465:341:1::0;17086:45:0::1;5902:4;17150:6;:21;;;;:65;;;;;5952:4;17192:7;:23;;;;17150:65;:117;;;;;6006:4;17236:11;:31;;;;17150:117;17142:170;;;::::0;-1:-1:-1;;;17142:170:0;;18013:2:1;17142:170:0::1;::::0;::::1;17995:21:1::0;18052:2;18032:18;;;18025:30;18091:25;18071:18;;;18064:53;18134:18;;17142:170:0::1;17811:347:1::0;17142:170:0::1;17323:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;17359:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;17397:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16987:453::o;16518:110::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;16587:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;16587:33:0;;-1:-1:-1;;;;;178:55:1;;;16587:33:0::1;::::0;::::1;160:74:1::0;16587:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;16587:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16518:110:::0;:::o;14233:140::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;-1:-1:-1;;;;;14325:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;14325:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14233:140::o;18833:273::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;18978:4:::1;5252:13;5191:2;5252;:13;:::i;:::-;5235:30;::::0;5039:11:::1;5235:30;:::i;:::-;18964:11;::::0;18974:1:::1;18964:11;:::i;:::-;:18;;;;:::i;:::-;18952:7:::0;18941;5252:13:::1;5191:2;5252;:13;:::i;:::-;5235:30;::::0;5039:11:::1;5235:30;:::i;:::-;18931:17;;;;:::i;:::-;18930:29;;;;:::i;:::-;:53;;18922:121;;;::::0;-1:-1:-1;;;18922:121:0;;18365:2:1;18922:121:0::1;::::0;::::1;18347:21:1::0;18404:2;18384:18;;;18377:30;18443:34;18423:18;;;18416:62;18514:25;18494:18;;;18487:53;18557:19;;18922:121:0::1;18163:419:1::0;18922:121:0::1;19091:7:::0;19080;5252:13:::1;5191:2;5252;:13;:::i;:::-;5235:30;::::0;5039:11:::1;5235:30;:::i;:::-;19070:17;;;;:::i;:::-;19069:29;;;;:::i;:::-;19054:12;:44:::0;-1:-1:-1;;18833:273:0:o;19624:189::-;19753:6;;-1:-1:-1;;;;;19753:6:0;19715:7;11079:16;;;;;;;;;;;6053:5;;19743:41;;19763:21;;19743:41;:::i;:::-;19742:62;;;;:::i;20528:217::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;20658:3:::1;20632:22;:29;;20624:64;;;::::0;-1:-1:-1;;;20624:64:0;;18789:2:1;20624:64:0::1;::::0;::::1;18771:21:1::0;18828:2;18808:18;;;18801:30;18867:24;18847:18;;;18840:52;18909:18;;20624:64:0::1;18587:346:1::0;20624:64:0::1;20699:13;:38:::0;20528:217::o;9049:654::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;-1:-1:-1;;;;;9128:22:0;::::1;9120:96;;;::::0;-1:-1:-1;;;9120:96:0;;19140:2:1;9120:96:0::1;::::0;::::1;19122:21:1::0;19179:2;19159:18;;;19152:30;19218:34;19198:18;;;19191:62;19289:31;19269:18;;;19262:59;19338:19;;9120:96:0::1;18938:425:1::0;9120:96:0::1;-1:-1:-1::0;;;;;;;9235:16:0;::::1;::::0;9227:90:::1;;;::::0;-1:-1:-1;;;9227:90:0;;19140:2:1;9227:90:0::1;::::0;::::1;19122:21:1::0;19179:2;19159:18;;;19152:30;19218:34;19198:18;;;19191:62;19289:31;19269:18;;;19262:59;19338:19;;9227:90:0::1;18938:425:1::0;9227:90:0::1;9348:6;::::0;9328:34:::1;::::0;9348:6:::1;::::0;::::1;-1:-1:-1::0;;;;;9348:6:0::1;9356:5;9328:19;:34::i;:::-;9373:35;9393:8;9403:4;9373:19;:35::i;:::-;9443:6;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;9443:6:0::1;9453:1;11079:16:::0;;;;;;;;;;;9433:21:::1;9429:127;;;9488:6;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;9488:6:0::1;11052:7:::0;11079:16;;;;;;;;;;;9471:73:::1;::::0;9488:6;9496:8;;9506:17:::1;10986:117:::0;9471:73:::1;;9429:127;9595:6;::::0;;-1:-1:-1;;;;;9612:17:0;;::::1;9595:6;9612:17:::0;;::::1;-1:-1:-1::0;;;;;;9612:17:0;::::1;;::::0;;;9645:40:::1;::::0;9595:6;;;::::1;;::::0;;;9645:40:::1;::::0;9576:16:::1;::::0;9645:40:::1;9109:594;9049:654:::0;:::o;14516:134::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;-1:-1:-1;;;;;14604:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14604:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14516:134::o;13528:557::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;13603:14:::1;::::0;::::1;;13602:15;13594:24;;;::::0;::::1;;13653:4;-1:-1:-1::0;;;;;13637:21:0;::::1;::::0;13629:48:::1;;;::::0;-1:-1:-1;;;13629:48:0;;19570:2:1;13629:48:0::1;::::0;::::1;19552:21:1::0;19609:2;19589:18;;;19582:30;19648:16;19628:18;;;19621:44;19682:18;;13629:48:0::1;19368:338:1::0;13629:48:0::1;13688:11;:31:::0;;-1:-1:-1;;;;;;13688:31:0::1;::::0;-1:-1:-1;;;;;13688:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;13734:23:::1;::::0;;-1:-1:-1;;;13734:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;13734:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;13734:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;13734:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;13730:348;;14067:8;::::0;::::1;13730:348;13821:9;:29:::0;;-1:-1:-1;;;;;;13821:29:0::1;;-1:-1:-1::0;;;;;13821:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13852:6:::1;:22:::0;;-1:-1:-1;;;;;;13852:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13876:15:0;;;-1:-1:-1;13876:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13876:22:0::1;::::0;;::::1;::::0;;13923:6:::1;::::0;13939:9;;13914:55:::1;::::0;13923:6;;::::1;::::0;::::1;::::0;13939:9;;::::1;;-1:-1:-1::0;;13914:8:0::1;:55::i;:::-;14016:9;::::0;13984:62:::1;::::0;14001:4:::1;::::0;14016:9:::1;::::0;::::1;-1:-1:-1::0;;;;;14016:9:0::1;-1:-1:-1::0;;13984:8:0::1;:62::i;13730:348::-;13528:557:::0;:::o;16282:164::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;16349:20:::1;::::0;::::1;;:28;;:20:::0;:28;16341:59:::1;;;::::0;-1:-1:-1;;;16341:59:0;;20303:2:1;16341:59:0::1;::::0;::::1;20285:21:1::0;20342:2;20322:18;;;20315:30;20381:20;20361:18;;;20354:48;20419:18;;16341:59:0::1;20101:342:1::0;16341:59:0::1;16411:20;:27:::0;;-1:-1:-1;;16411:27:0::1;16434:4;16411:27;::::0;;16282:164::o;19386:108::-;19429:7;19472:13;5191:2;19472;:13;:::i;:::-;19456:12;;:30;;;;:::i;9711:310::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;9778:14:::1;::::0;::::1;;9770:74;;;::::0;-1:-1:-1;;;9770:74:0;;20650:2:1;9770:74:0::1;::::0;::::1;20632:21:1::0;20689:2;20669:18;;;20662:30;20728:34;20708:18;;;20701:62;20799:17;20779:18;;;20772:45;20834:19;;9770:74:0::1;20448:411:1::0;9770:74:0::1;9875:6;::::0;9855:34:::1;::::0;9875:6:::1;::::0;::::1;-1:-1:-1::0;;;;;9875:6:0::1;9883:5;9855:19;:34::i;:::-;9919:6;::::0;;-1:-1:-1;;;;;;9936:19:0;::::1;::::0;;;9971:42:::1;::::0;9919:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;9919:6:0::1;::::0;-1:-1:-1;;9919:6:0;;9971:42:::1;::::0;-1:-1:-1;;9971:42:0::1;9759:262;9711:310::o:0;16797:182::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;16950:14:::1;:21:::0;;-1:-1:-1;;16950:21:0::1;16967:4;16950:21;::::0;;16797:182::o;12956:564::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;13038:7:::1;13033:480;;-1:-1:-1::0;;;;;13062:13:0;;::::1;13078:5;13062:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;13062:21:0::1;::::0;;13098:11:::1;::::0;:34;;-1:-1:-1;;;13098:34:0;;::::1;::::0;::::1;21032:74:1::0;;;;21122:18;;;21115:50;;;;13098:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;21005:18:1;;13098:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;13033:480;13169:17;::::0;:22;13165:135:::1;;13258:6;13238:17;;13220:15;:35;;;;:::i;:::-;:44;13212:72;;;::::0;-1:-1:-1;;;13212:72:0;;21378:2:1;13212:72:0::1;::::0;::::1;21360:21:1::0;21417:2;21397:18;;;21390:30;21456:17;21436:18;;;21429:45;21491:18;;13212:72:0::1;21176:339:1::0;13212:72:0::1;-1:-1:-1::0;;;;;13323:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;13322:14;13314:54;;;::::0;-1:-1:-1;;;13314:54:0;;21722:2:1;13314:54:0::1;::::0;::::1;21704:21:1::0;21761:2;21741:18;;;21734:30;21800:29;21780:18;;;21773:57;21847:18;;13314:54:0::1;21520:351:1::0;13314:54:0::1;-1:-1:-1::0;;;;;13383:13:0;;::::1;;::::0;;;13399:4:::1;13383:13;::::0;;;;;;;;:20;;-1:-1:-1;;13383:20:0::1;::::0;::::1;::::0;;13438:15:::1;13418:17;:35:::0;13468:11:::1;::::0;:33;;-1:-1:-1;;;13468:33:0;;::::1;::::0;::::1;21032:74:1::0;;;;21122:18;;;21115:50;13468:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;21005:18:1;;13468:33:0::1;20864:307:1::0;18008:817:0;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;-1:-1:-1;;;;;18297:23:0;::::1;::::0;;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;18341:25:0;::::1;::::0;::::1;18297:69;:108;;;;-1:-1:-1::0;;;;;;18387:18:0;::::1;::::0;::::1;18297:108;:151;;;;-1:-1:-1::0;;;;;;18426:22:0;::::1;::::0;::::1;18297:151;:197;;;;-1:-1:-1::0;;;;;;18469:25:0;::::1;::::0;::::1;18297:197;:239;;;;-1:-1:-1::0;;;;;;18515:21:0;::::1;::::0;::::1;18297:239;18289:275;;;::::0;-1:-1:-1;;;18289:275:0;;22078:2:1;18289:275:0::1;::::0;::::1;22060:21:1::0;22117:2;22097:18;;;22090:30;22156:25;22136:18;;;22129:53;22199:18;;18289:275:0::1;21876:347:1::0;18289:275:0::1;18575:11;:42:::0;;-1:-1:-1;;;;;;18575:42:0;;::::1;-1:-1:-1::0;;;;;18575:42:0;;::::1;;::::0;;;18628:16;:32;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18671:20;:40;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18722:23;:46;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18779:19;:38;;;;::::1;::::0;;;::::1;;::::0;;18008:817::o;11771:175::-;8903:6;;11837:4;;8903:6;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;11886:9:::1;::::0;11854:62:::1;::::0;11871:4:::1;::::0;11886:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11886:9:0::1;-1:-1:-1::0;;11854:8:0::1;:62::i;:::-;-1:-1:-1::0;11934:4:0::1;11771:175:::0;:::o;27162:737::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;27224:14:::1;::::0;::::1;;27223:15;27215:52;;;::::0;-1:-1:-1;;;27215:52:0;;22430:2:1;27215:52:0::1;::::0;::::1;22412:21:1::0;22469:2;22449:18;;;22442:30;22508:26;22488:18;;;22481:54;22552:18;;27215:52:0::1;22228:348:1::0;27215:52:0::1;27286:16;::::0;::::1;::::0;::::1;;;27278:53;;;::::0;-1:-1:-1;;;27278:53:0;;22783:2:1;27278:53:0::1;::::0;::::1;22765:21:1::0;22822:2;22802:18;;;22795:30;22861:26;22841:18;;;22834:54;22905:18;;27278:53:0::1;22581:348:1::0;27278:53:0::1;27354:11;::::0;;;::::1;-1:-1:-1::0;;;;;27354:11:0::1;27342:106;;27396:11;:40:::0;;-1:-1:-1;;;;;;27396:40:0::1;27430:4;27396:40:::0;::::1;;::::0;;27342:106:::1;27462:11;::::0;27484:6:::1;::::0;27462:87:::1;::::0;-1:-1:-1;;;27462:87:0;;-1:-1:-1;;;;;27484:6:0;;::::1;27462:87;::::0;::::1;23157:74:1::0;23279:10;27499:12:0::1;23267:23:1::0;23247:18;;;23240:51;23339:18;27521:15:0::1;23327:31:1::0;23307:18;;;23300:59;5191:2:0::1;23375:18:1::0;;;23368:45;27462:11:0;;;::::1;;::::0;:21:::1;::::0;23129:19:1;;27462:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;27575:11:0::1;::::0;27606:6:::1;::::0;-1:-1:-1;;;;;27606:6:0;;::::1;11052:7:::0;11079:16;;;;;;;;;;;;;27575:39;;-1:-1:-1;;;27575:39:0;;::::1;::::0;::::1;391:25:1::0;;;;27575:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;27575:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;27575:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;27575:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;27571:207:::0;::::1;;27686:13;:29:::0;;;;27730:10:::1;:27:::0;27571:207:::1;27788:14;:21:::0;;-1:-1:-1;;27788:21:0;;::::1;27805:4;27788:21;::::0;;;27820:23:::1;:31:::0;;;;::::1;::::0;;27876:15:::1;27862:11;:29:::0;27162:737::o;11111:165::-;11189:4;11206:40;11216:10;11228:9;11239:6;11206:9;:40::i;:::-;-1:-1:-1;11264:4:0;;11111:165;-1:-1:-1;;;11111:165:0:o;28097:296::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;28175:16:::1;::::0;::::1;::::0;::::1;;;28171:111;;;28233:4;-1:-1:-1::0;;;;;28216:22:0;::::1;::::0;28208:62:::1;;;::::0;-1:-1:-1;;;28208:62:0;;23876:2:1;28208:62:0::1;::::0;::::1;23858:21:1::0;23915:2;23895:18;;;23888:30;23954:29;23934:18;;;23927:57;24001:18;;28208:62:0::1;23674:351:1::0;28208:62:0::1;28346:6;::::0;28354:30:::1;::::0;-1:-1:-1;;;28354:30:0;;28378:4:::1;28354:30;::::0;::::1;160:74:1::0;28314:5:0;;-1:-1:-1;;;;;28331:14:0;;::::1;::::0;::::1;::::0;28346:6:::1;::::0;::::1;::::0;;::::1;::::0;28331:14;;28354:15:::1;::::0;133:18:1;;28354:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28331:54;::::0;-1:-1:-1;;;;;;28331:54:0::1;::::0;;;;;;-1:-1:-1;;;;;24411:55:1;;;28331:54:0::1;::::0;::::1;24393:74:1::0;24483:18;;;24476:34;24366:18;;28331:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20753:263::-:0;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;20862:19:::1;:33:::0;;-1:-1:-1;;20862:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;20906:22:::1;:47:::0;;-1:-1:-1;;20906:47:0::1;::::0;::::1;;;::::0;;20969:39:::1;::::0;4225:41:1;;;20969:39:0::1;::::0;4213:2:1;4198:18;20969:39:0::1;;;;;;;;20753:263:::0;;:::o;16072:202::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;16228:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;16228:38:0;;-1:-1:-1;;;;;178:55:1;;;16228:38:0::1;::::0;::::1;160:74:1::0;16228:11:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;133:18:1;;16228:38:0::1;14:226:1::0;12268:680:0;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;12348:16:::1;::::0;::::1;::::0;::::1;;;12347:17;12339:60;;;::::0;-1:-1:-1;;;12339:60:0;;24973:2:1;12339:60:0::1;::::0;::::1;24955:21:1::0;25012:2;24992:18;;;24985:30;25051:32;25031:18;;;25024:60;25101:18;;12339:60:0::1;24771:354:1::0;12339:60:0::1;12410:20;12443:9;12410:43;;12464:16;12494:10;-1:-1:-1::0;;;;;12494:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12483:40:0::1;;12532:4;12539:10;-1:-1:-1::0;;;;;12539:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12483:74;::::0;-1:-1:-1;;;;;;12483:74:0::1;::::0;;;;;;-1:-1:-1;;;;;25639:15:1;;;12483:74:0::1;::::0;::::1;25621:34:1::0;25691:15;;25671:18;;;25664:43;25533:18;;12483:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12576:6;::::0;-1:-1:-1;;;;;12576:6:0;;::::1;12586:5;12568:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;12568:23:0::1;::::0;;12464:93;;-1:-1:-1;12606:22:0;::::1;12602:200;;12665:10;-1:-1:-1::0;;;;;12665:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12654:43:0::1;;12706:4;12713:10;-1:-1:-1::0;;;;;12713:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12654:77;::::0;-1:-1:-1;;;;;;12654:77:0::1;::::0;;;;;;-1:-1:-1;;;;;25639:15:1;;;12654:77:0::1;::::0;::::1;25621:34:1::0;25691:15;;25671:18;;;25664:43;25533:18;;12654:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12645:6;:86:::0;;-1:-1:-1;;;;;;12645:86:0::1;-1:-1:-1::0;;;;;12645:86:0;;;::::1;::::0;;;::::1;::::0;;12602:200:::1;;;12773:6;:17:::0;;-1:-1:-1;;;;;;12773:17:0::1;-1:-1:-1::0;;;;;12773:17:0;::::1;;::::0;;12602:200:::1;12812:9;:22:::0;;-1:-1:-1;;;;;;12812:22:0::1;;-1:-1:-1::0;;;;;12812:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12853:6:::1;::::0;;::::1;-1:-1:-1::0;12845:15:0;;;-1:-1:-1;12845:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12845:22:0::1;::::0;;::::1;::::0;;12910:9;;12878:62:::1;::::0;12895:4:::1;::::0;12910:9;::::1;;-1:-1:-1::0;;12878:8:0::1;:62::i;27907:182::-:0;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;27974:16:::1;::::0;::::1;::::0;::::1;;;27973:17;27965:58;;;::::0;-1:-1:-1;;;27965:58:0;;25920:2:1;27965:58:0::1;::::0;::::1;25902:21:1::0;25959:2;25939:18;;;25932:30;25998;25978:18;;;25971:58;26046:18;;27965:58:0::1;25718:352:1::0;27965:58:0::1;28042:6;::::0;28034:47:::1;::::0;-1:-1:-1;;;;;28042:6:0::1;::::0;;::::1;::::0;;;::::1;::::0;28059:21:::1;28034:47:::0;::::1;;;::::0;::::1;::::0;;;28059:21;28042:6;28034:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;15179:325:::0;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;15382:20:::1;::::0;::::1;;15381:21;15373:63;;;::::0;-1:-1:-1;;;15373:63:0;;12512:2:1;15373:63:0::1;::::0;::::1;12494:21:1::0;12551:2;12531:18;;;12524:30;12590:31;12570:18;;;12563:59;12639:18;;15373:63:0::1;12310:353:1::0;15373:63:0::1;15447:11;::::0;:49:::1;::::0;-1:-1:-1;;;15447:49:0;;-1:-1:-1;;;;;21050:55:1;;;15447:49:0::1;::::0;::::1;21032:74:1::0;21149:14;;21142:22;21122:18;;;21115:50;15447:11:0;;;::::1;::::0;;::::1;::::0;:31:::1;::::0;21005:18:1;;15447:49:0::1;20864:307:1::0;17448:552:0;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;17581:7:::1;:29:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;17621:19:0;;;;;;;;;;::::1;;;-1:-1:-1::0;;17689:33:0;17651:27;;;::::1;;-1:-1:-1::0;;17689:33:0;;;;;::::1;;;-1:-1:-1::0;;17733:25:0::1;::::0;;;::::1;::::0;;;::::1;;::::0;;;17689:33;17651:27;17789:16:::1;17621:19:::0;17581:29;17789:16:::1;:::i;:::-;:27;;;;:::i;:::-;:41;;;;:::i;:::-;:51;;;;:::i;:::-;17769:7;:71:::0;;-1:-1:-1;;17769:71:0::1;-1:-1:-1::0;;;17769:71:0::1;::::0;;::::1;;;::::0;;:17:::1;17886::::0;-1:-1:-1;;17867:36:0::1;::::0;17886:17;;::::1;::::0;::::1;::::0;17867:16:::1;:36;:::i;:::-;17922:7;:17:::0;17851:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;17922:17:0;::::1;;:26:::0;-1:-1:-1;17922:26:0::1;17914:78;;;::::0;-1:-1:-1;;;17914:78:0;;26450:2:1;17914:78:0::1;::::0;::::1;26432:21:1::0;26489:2;26469:18;;;26462:30;26528:34;26508:18;;;26501:62;-1:-1:-1;;;26579:18:1;;;26572:37;26626:19;;17914:78:0::1;26248:403:1::0;19821:699:0;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;20021:16;20001;5252:13:::1;5191:2;5252;:13;:::i;:::-;5235:30;::::0;5039:11:::1;5235:30;:::i;:::-;19991:26;;;;:::i;:::-;19990:47;;;;:::i;:::-;19974:13;:63:::0;20089:13;20072;5252::::1;5191:2;5252;:13;:::i;:::-;5235:30;::::0;5039:11:::1;5235:30;:::i;:::-;20062:23;;;;:::i;:::-;20061:41;;;;:::i;:::-;20048:10;:54:::0;;;20121:13:::1;::::0;:27:::1;;20113:73;;;::::0;-1:-1:-1;;;20113:73:0;;26858:2:1;20113:73:0::1;::::0;::::1;26840:21:1::0;26897:2;26877:18;;;26870:30;26936:34;26916:18;;;26909:62;-1:-1:-1;;;26987:18:1;;;26980:31;27028:19;;20113:73:0::1;26656:397:1::0;20113:73:0::1;20230:6;::::0;-1:-1:-1;;;;;20230:6:0::1;11052:7:::0;11079:16;;;;;;;;;;;6053:5:::1;::::0;20220:23:::1;::::0;20240:3:::1;20220:23;:::i;:::-;20219:44;;;;:::i;:::-;20205:10;;:58;;20197:106;;;::::0;-1:-1:-1;;;20197:106:0;;27260:2:1;20197:106:0::1;::::0;::::1;27242:21:1::0;27299:2;27279:18;;;27272:30;27338:34;27318:18;;;27311:62;-1:-1:-1;;;27389:18:1;;;27382:33;27432:19;;20197:106:0::1;27058:399:1::0;20197:106:0::1;20346:9;5252:13;5191:2;5252;:13;:::i;:::-;5235:30;::::0;5039:11:::1;5235:30;:::i;:::-;20336:19;;;;:::i;:::-;20322:10;;:33;;20314:92;;;::::0;-1:-1:-1;;;20314:92:0;;27664:2:1;20314:92:0::1;::::0;::::1;27646:21:1::0;27703:2;27683:18;;;27676:30;27742:34;27722:18;;;27715:62;-1:-1:-1;;;27793:18:1;;;27786:44;27847:19;;20314:92:0::1;27462:410:1::0;20314:92:0::1;20452:9;5252:13;5191:2;5252;:13;:::i;:::-;5235:30;::::0;5039:11:::1;5235:30;:::i;:::-;20442:19;;;;:::i;:::-;20425:13;;:36;;20417:95;;;::::0;-1:-1:-1;;;20417:95:0;;27664:2:1;20417:95:0::1;::::0;::::1;27646:21:1::0;27703:2;27683:18;;;27676:30;27742:34;27722:18;;;27715:62;-1:-1:-1;;;27793:18:1;;;27786:44;27847:19;;20417:95:0::1;27462:410:1::0;20417:95:0::1;19821:699:::0;;;;:::o;15935:129::-;16022:11;;:34;;-1:-1:-1;;;16022:34:0;;-1:-1:-1;;;;;178:55:1;;;16022:34:0;;;160:74:1;15998:4:0;;16022:11;;;;;:25;;133:18:1;;16022:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14806:148::-;8903:6;;;;;-1:-1:-1;;;;;8903:6:0;8913:10;8903:20;8895:50;;;;-1:-1:-1;;;8895:50:0;;11547:2:1;8895:50:0;;;11529:21:1;11586:2;11566:18;;;11559:30;-1:-1:-1;;;;;;;;;;;11605:18:1;;;11598:47;11662:18;;8895:50:0;11345:341:1;8895:50:0;-1:-1:-1;;;;;14902:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14902:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14806:148::o;11453:310::-;-1:-1:-1;;;;;11548:20:0;;11540:52;;;;-1:-1:-1;;;11540:52:0;;28079:2:1;11540:52:0;;;28061:21:1;28118:2;28098:18;;;28091:30;-1:-1:-1;;;28137:18:1;;;28130:49;28196:18;;11540:52:0;27877:343:1;11540:52:0;-1:-1:-1;;;;;11611:21:0;;11603:53;;;;-1:-1:-1;;;11603:53:0;;28079:2:1;11603:53:0;;;28061:21:1;28118:2;28098:18;;;28091:30;-1:-1:-1;;;28137:18:1;;;28130:49;28196:18;;11603:53:0;27877:343:1;11603:53:0;-1:-1:-1;;;;;11669:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11722:33;;391:25:1;;;11722:33:0;;364:18:1;11722:33:0;;;;;;;11453:310;;;:::o;22295:2286::-;22374:4;-1:-1:-1;;;;;22399:18:0;;22391:68;;;;-1:-1:-1;;;22391:68:0;;28427:2:1;22391:68:0;;;28409:21:1;28466:2;28446:18;;;28439:30;28505:34;28485:18;;;28478:62;-1:-1:-1;;;28556:18:1;;;28549:35;28601:19;;22391:68:0;28225:401:1;22391:68:0;-1:-1:-1;;;;;22478:16:0;;22470:64;;;;-1:-1:-1;;;22470:64:0;;28833:2:1;22470:64:0;;;28815:21:1;28872:2;28852:18;;;28845:30;28911:34;28891:18;;;28884:62;-1:-1:-1;;;28962:18:1;;;28955:33;29005:19;;22470:64:0;28631:399:1;22470:64:0;22562:1;22553:6;:10;22545:64;;;;-1:-1:-1;;;22545:64:0;;29237:2:1;22545:64:0;;;29219:21:1;29276:2;29256:18;;;29249:30;29315:34;29295:18;;;29288:62;-1:-1:-1;;;29366:18:1;;;29359:39;29415:19;;22545:64:0;29035:405:1;22545:64:0;-1:-1:-1;;;;;22708:13:0;;22620:8;22708:13;;;:7;:13;;;;;;22620:8;;;;22708:13;;22704:162;;;22744:4;22738:10;;22704:162;;;-1:-1:-1;;;;;22770:11:0;;;;;;:7;:11;;;;;;;;22766:100;;;22805:4;22798:11;;22766:100;;;-1:-1:-1;22850:4:0;22766:100;22880:20;22891:4;22897:2;22880:10;:20::i;:::-;22876:874;;;22921:14;;;;22917:319;;22961:5;22956:265;;22991:34;;-1:-1:-1;;;22991:34:0;;29647:2:1;22991:34:0;;;29629:21:1;29686:2;29666:18;;;29659:30;29725:26;29705:18;;;29698:54;29769:18;;22991:34:0;29445:348:1;22956:265:0;-1:-1:-1;;;;;23056:31:0;;;;;;:25;:31;;;;;;;;23055:32;:66;;;;-1:-1:-1;;;;;;23092:29:0;;;;;;:25;:29;;;;;;;;23091:30;23055:66;23051:170;;;23146:55;;-1:-1:-1;;;23146:55:0;;30000:2:1;23146:55:0;;;29982:21:1;30039:2;30019:18;;;30012:30;30078:34;30058:18;;;30051:62;-1:-1:-1;;;30129:18:1;;;30122:43;30182:19;;23146:55:0;29798:409:1;23051:170:0;23254:3;:11;;;;23261:4;23254:11;23250:232;;;-1:-1:-1;;;;;23290:27:0;;;;;;:21;:27;;;;;;;;23289:28;:58;;;;-1:-1:-1;;;;;;23322:25:0;;;;;;:21;:25;;;;;;;;23321:26;23289:58;23285:182;;;23390:12;;23380:6;:22;;23372:75;;;;-1:-1:-1;;;23372:75:0;;30414:2:1;23372:75:0;;;30396:21:1;30453:2;30433:18;;;30426:30;30492:34;30472:18;;;30465:62;-1:-1:-1;;;30543:18:1;;;30536:38;30591:19;;23372:75:0;30212:404:1;23372:75:0;23514:9;;-1:-1:-1;;;;;23500:24:0;;;23514:9;;;;;23500:24;;;;:33;;;23529:4;23528:5;23500:33;23496:243;;;-1:-1:-1;;;;;23559:25:0;;;;;;:21;:25;;;;;;;;23554:170;;23643:14;;23633:6;23617:13;23627:2;-1:-1:-1;;;;;11079:16:0;11052:7;11079:16;;;;;;;;;;;;10986:117;23617:13;:22;;;;:::i;:::-;:40;;23609:95;;;;-1:-1:-1;;;23609:95:0;;30823:2:1;23609:95:0;;;30805:21:1;30862:2;30842:18;;;30835:30;30901:34;30881:18;;;30874:62;-1:-1:-1;;;30952:18:1;;;30945:40;31002:19;;23609:95:0;30621:406:1;23609:95:0;23766:4;23762:742;;;23792:6;;;;23787:706;;23823:19;;;;;;;:64;;;;-1:-1:-1;;;;;;23867:20:0;;;;;;:16;:20;;;;;;;;23866:21;23823:64;:111;;;;-1:-1:-1;;;;;;23912:22:0;;;;;;:16;:22;;;;;;;;23911:23;23823:111;23819:659;;;24026:4;23977:28;11079:16;;;;;;;;;;;24083:13;;24059:37;;24055:404;;24143:10;;24184:22;;;;24180:97;;;24241:13;;24231:6;;-1:-1:-1;;;;;24231:6:0;11052:7;11079:16;;;;;;;;;;;6053:5;;24221:33;;;:::i;:::-;24220:54;;;;:::i;:::-;24210:64;;24180:97;24331:7;24307:20;:31;24303:72;;24365:7;24342:30;;24303:72;24401:34;24414:20;24401:12;:34::i;:::-;24098:361;24055:404;23954:524;23819:659;24521:52;24538:4;24544:2;24548:6;24556:3;24561:4;24567:5;24521:16;:52::i;:::-;24514:59;22295:2286;-1:-1:-1;;;;;;;22295:2286:0:o;28856:1055::-;28975:4;28996:20;29007:4;29013:2;28996:10;:20::i;:::-;28992:228;;;29051:11;;:39;;-1:-1:-1;;;29051:39:0;;-1:-1:-1;;;;;31313:15:1;;;29051:39:0;;;31295:34:1;31365:15;;;31345:18;;;31338:43;31397:18;;;31390:34;;;29020:12:0;;29051:11;;;;;:21;;31207:18:1;;29051:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;29051:39:0;;;;;;;;-1:-1:-1;;29051:39:0;;;;;;;;;;;;:::i;:::-;;;29047:122;;29158:8;;;29047:122;29141:5;-1:-1:-1;29187:7:0;29183:26;;29198:8;;;29183:26;29018:202;28992:228;-1:-1:-1;;;;;29264:25:0;;29230:12;29264:25;;;:19;:25;;;;;;29245:4;;29264:25;;;:52;;-1:-1:-1;;;;;;29293:23:0;;;;;;:19;:23;;;;;;;;29264:52;29260:99;;;-1:-1:-1;29342:5:0;29260:99;-1:-1:-1;;;;;29369:13:0;;:7;:13;;;;;;;;;;:23;;29386:6;;29369:7;:23;;29386:6;;29369:23;:::i;:::-;;;;-1:-1:-1;29403:22:0;;-1:-1:-1;29429:7:0;29428:55;;29477:6;29428:55;;;29440:34;29450:4;29456:6;29464:3;29469:4;29440:9;:34::i;:::-;29403:80;;29509:14;29494:7;:11;29502:2;-1:-1:-1;;;;;29494:11:0;-1:-1:-1;;;;;29494:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;29554:2;-1:-1:-1;;;;;29539:34:0;29548:4;-1:-1:-1;;;;;29539:34:0;;29558:14;29539:34;;;;391:25:1;;379:2;364:18;;245:177;29539:34:0;;;;;;;;29589:16;;;;;;;29584:298;;29622:28;29641:4;29647:2;29622:18;:28::i;:::-;29670:16;;;;;;;29669:17;:41;;;;;29690:20;29701:4;29707:2;29690:10;:20::i;:::-;29669:77;;;;-1:-1:-1;;;;;;29715:31:0;;;;;;:25;:31;;;;;;;;29714:32;29669:77;:111;;;;-1:-1:-1;;;;;;29751:29:0;;;;;;:25;:29;;;;;;;;29750:30;29669:111;:121;;;;;29785:5;29784:6;29669:121;29665:206;;;29811:44;;-1:-1:-1;;;29811:44:0;;31637:2:1;29811:44:0;;;31619:21:1;31676:2;31656:18;;;31649:30;31715:34;31695:18;;;31688:62;-1:-1:-1;;;31766:18:1;;;31759:32;31808:19;;29811:44:0;31435:398:1;29665:206:0;-1:-1:-1;29899:4:0;;28856:1055;-1:-1:-1;;;;;;;;28856:1055:0:o;21841:446::-;21942:6;;21910:4;;-1:-1:-1;;;;;21934:14:0;;;21942:6;;;;;21934:14;;;;:43;;-1:-1:-1;21971:6:0;;-1:-1:-1;;;;;21965:12:0;;;21971:6;;;;;21965:12;;21934:43;:79;;;;-1:-1:-1;22007:6:0;;;;;-1:-1:-1;;;;;22007:6:0;21994:9;:19;;21934:79;:118;;;;-1:-1:-1;;;;;;22031:21:0;;;;;;:17;:21;;;;;;;;22030:22;21934:118;:159;;;;-1:-1:-1;;;;;;22070:23:0;;;;;;:17;:23;;;;;;;;22069:24;21934:159;:186;;;;-1:-1:-1;;;;;;22110:10:0;;6192:42;22110:10;;21934:186;:219;;;;-1:-1:-1;;;;;;22137:16:0;;;;21934:219;:257;;;;-1:-1:-1;;;;;;22170:21:0;;22186:4;22170:21;;21934:257;:302;;;;-1:-1:-1;22224:11:0;;-1:-1:-1;;;;;22208:28:0;;;22224:11;;;;;22208:28;;21934:302;:345;;;;-1:-1:-1;22267:11:0;;-1:-1:-1;;;;;22253:26:0;;;22267:11;;;;;22253:26;;21934:345;21927:352;21841:446;-1:-1:-1;;;21841:446:0:o;24589:1994::-;7566:6;:13;;-1:-1:-1;;7566:13:0;7575:4;7566:13;;;24672:30:::1;::::0;;::::1;::::0;::::1;::::0;;24695:7:::1;24672:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24672:30:0;::::1;::::0;;::::1;::::0;;;;;;7566:6;24717:21;24713:60:::1;;24755:7;;;24713:60;24809:4;24789:26;::::0;;;:11:::1;:26;::::0;;;;;;;24824:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;24824:9:0::1;24789:46:::0;;;;;;;;-1:-1:-1;;24789:67:0::1;24785:166;;24893:4;24873:26;::::0;;;:11:::1;:26;::::0;;;;;;;24908:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;24908:9:0::1;24873:46:::0;;;;;;;-1:-1:-1;;24873:66:0;;24785:166:::1;24995:16;::::0;;25009:1:::1;24995:16:::0;;;;;::::1;::::0;;24971:21:::1;::::0;24995:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24995:16:0::1;24971:40;;25040:4;25022;25027:1;25022:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;25022:23:0::1;;;-1:-1:-1::0;;;;;25022:23:0::1;;;::::0;::::1;25066:9;;;;;;;;;-1:-1:-1::0;;;;;25066:9:0::1;-1:-1:-1::0;;;;;25066:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25056:4;25061:1;25056:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25056:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;25099:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;25099:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;25174:20;;25209:1:::1;::::0;25225:4;;25252::::1;::::0;25272:15:::1;::::0;25099:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25095:246;;25323:7;;;;25095:246;25353:18;25374:21;25353:42;;25406:12;25429:19:::0;25480:6:::1;:16;;;25451:45;;25465:6;:11;;;25452:24;;:10;:24;;;;:::i;:::-;25451:45;;;;:::i;:::-;25429:67;;25507:23;25566:6;:16;;;25533:49;;25547:6;:15;;;25534:28;;:10;:28;;;;:::i;:::-;25533:49;;;;:::i;:::-;25507:75;;25593:26;25658:6;:16;;;25622:52;;25636:6;:18;;;25623:31;;:10;:31;;;;:::i;:::-;25622:52;;;;:::i;:::-;25593:81;;25685:22;25742:6;:16;;;25710:48;;25724:6;:14;;;25711:27;;:10;:27;;;;:::i;:::-;25710:48;;;;:::i;:::-;25685:73:::0;-1:-1:-1;25769:24:0::1;25685:73:::0;25842:18;25810:29:::1;25824:15:::0;25810:11;:29:::1;:::i;:::-;:50;;;;:::i;:::-;:67;;;;:::i;:::-;25796:82;::::0;:10;:82:::1;:::i;:::-;25893:11;::::0;::::1;::::0;25769:109;;-1:-1:-1;25893:15:0::1;;::::0;25889:118:::1;;25938:16:::0;;:57:::1;::::0;-1:-1:-1;;;;;25938:16:0;;::::1;::::0;25985:5:::1;::::0;25967:11;;25938:57:::1;::::0;;;25967:11;25938:16;25985:5;25938:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25925:70:0;;-1:-1:-1;;25889:118:0::1;26021:15;::::0;::::1;::::0;:19:::1;;::::0;26017:130:::1;;26070:20:::0;;:65:::1;::::0;-1:-1:-1;;;;;26070:20:0;;::::1;::::0;26125:5:::1;::::0;26103:15;;26070:65:::1;::::0;;;26103:15;26070:20;26125:5;26070:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;26057:78:0;;-1:-1:-1;;26017:130:0::1;26161:18;::::0;::::1;::::0;:22:::1;;::::0;26157:139:::1;;26213:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;26213:23:0;;::::1;::::0;26274:5:::1;::::0;26249:18;;26213:71:::1;::::0;;;26249:18;26213:23;26274:5;26213:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;26200:84:0;;-1:-1:-1;;26157:139:0::1;26310:14;::::0;::::1;::::0;:18:::1;;::::0;26306:127:::1;;26358:19:::0;;:63:::1;::::0;-1:-1:-1;;;;;26358:19:0;;::::1;::::0;26411:5:::1;::::0;26390:14;;26358:63:::1;::::0;;;26390:14;26358:19;26411:5;26358:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;26345:76:0;;-1:-1:-1;;26306:127:0::1;26447:16:::0;;:20:::1;;::::0;26443:133:::1;;26497:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;26497:21:0;;::::1;::::0;26554:5:::1;::::0;26531:16;;26497:67:::1;::::0;;;26531:16;26497:21;26554:5;26497:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;26484:80:0;;-1:-1:-1;;26443:133:0::1;24661:1922;;;;;;;;;7590:1;-1:-1:-1::0;7602:6:0;:14;;-1:-1:-1;;7602:14:0;;;24589:1994::o;29919:767::-;30007:7;30027:18;30060:3;30056:205;;;-1:-1:-1;30093:9:0;:16;;;30056:205;;;30131:4;30127:134;;;-1:-1:-1;30165:9:0;:17;;;;;;30127:134;;;-1:-1:-1;30228:9:0;:21;;;;;;30127:134;30283:11;;;;;-1:-1:-1;;;;;30283:11:0;30307:4;30275:37;:73;;;;;30329:13;30346:2;30329:19;;30275:73;30271:101;;;-1:-1:-1;30365:4:0;30271:101;30386:10;30400:1;30386:15;30382:39;;30412:6;30405:13;;;;;30382:39;30431:17;6053:5;30451:19;30460:10;30451:6;:19;:::i;:::-;:38;;;;:::i;:::-;30431:58;-1:-1:-1;30504:13:0;;30500:141;;30550:4;30534:7;:22;;;;;;;;;;:35;;30560:9;;30534:7;:35;;30560:9;;30534:35;:::i;:::-;;;;-1:-1:-1;;30589:40:0;;391:25:1;;;30612:4:0;;-1:-1:-1;;;;;30589:40:0;;;;;379:2:1;364:18;30589:40:0;;;;;;;30500:141;30660:18;30669:9;30660:6;:18;:::i;26591:563::-;26674:16;;;;;;;26673:17;26665:65;;;;-1:-1:-1;;;26665:65:0;;32860:2:1;26665:65:0;;;32842:21:1;32899:2;32879:18;;;32872:30;32938:34;32918:18;;;32911:62;-1:-1:-1;;;32989:18:1;;;32982:33;33032:19;;26665:65:0;32658:399:1;26665:65:0;26746:20;26757:4;26763:2;26746:10;:20::i;:::-;26745:21;:37;;;;-1:-1:-1;26776:6:0;;-1:-1:-1;;;;;26770:12:0;;;26776:6;;26770:12;26745:37;26741:406;;;-1:-1:-1;;;;;26799:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;26799:30:0;;;26825:4;26799:30;;;;;;26844:19;:25;;;;;:32;;;;;;;;;;26891:16;:23;;-1:-1:-1;;26891:23:0;26799:30;26891:23;;;;;26941:11;;;;26929:114;;26987:11;:40;;-1:-1:-1;;;;;;26987:40:0;27021:4;26987:40;;;;;26929:114;27057:19;:26;;-1:-1:-1;;27057:26:0;;;;;27103:32;;-1:-1:-1;4225:41:1;;27103:32:0;;4213:2:1;4198:18;27103:32:0;4085: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;931:127::-;992:10;987:3;983:20;980:1;973:31;1023:4;1020:1;1013:15;1047:4;1044:1;1037:15;1063:275;1134:2;1128:9;1199:2;1180:13;;-1:-1:-1;;1176:27:1;1164:40;;1234:18;1219:34;;1255:22;;;1216:62;1213:88;;;1281:18;;:::i;:::-;1317:2;1310:22;1063:275;;-1:-1:-1;1063:275:1:o;1343:183::-;1403:4;1436:18;1428:6;1425:30;1422:56;;;1458:18;;:::i;:::-;-1:-1:-1;1503:1:1;1499:14;1515:4;1495:25;;1343:183::o;1531:154::-;-1:-1:-1;;;;;1610:5:1;1606:54;1599:5;1596:65;1586:93;;1675:1;1672;1665:12;1690:737;1744:5;1797:3;1790:4;1782:6;1778:17;1774:27;1764:55;;1815:1;1812;1805:12;1764:55;1851:6;1838:20;1877:4;1901:60;1917:43;1957:2;1917:43;:::i;:::-;1901:60;:::i;:::-;1995:15;;;2081:1;2077:10;;;;2065:23;;2061:32;;;2026:12;;;;2105:15;;;2102:35;;;2133:1;2130;2123:12;2102:35;2169:2;2161:6;2157:15;2181:217;2197:6;2192:3;2189:15;2181:217;;;2277:3;2264:17;2294:31;2319:5;2294:31;:::i;:::-;2338:18;;2376:12;;;;2214;;2181:217;;;-1:-1:-1;2416:5:1;1690:737;-1:-1:-1;;;;;;1690:737:1:o;2432:477::-;2522:6;2530;2583:2;2571:9;2562:7;2558:23;2554:32;2551:52;;;2599:1;2596;2589:12;2551:52;2639:9;2626:23;2672:18;2664:6;2661:30;2658:50;;;2704:1;2701;2694:12;2658:50;2727:61;2780:7;2771:6;2760:9;2756:22;2727:61;:::i;:::-;2717:71;;;2838:2;2827:9;2823:18;2810:32;2851:28;2873:5;2851:28;:::i;3284:548::-;3396:4;3425:2;3454;3443:9;3436:21;3486:6;3480:13;3529:6;3524:2;3513:9;3509:18;3502:34;3554:1;3564:140;3578:6;3575:1;3572:13;3564:140;;;3673:14;;;3669:23;;3663:30;3639:17;;;3658:2;3635:26;3628:66;3593:10;;3564:140;;;3568:3;3753:1;3748:2;3739:6;3728:9;3724:22;3720:31;3713:42;3823:2;3816;3812:7;3807:2;3799:6;3795:15;3791:29;3780:9;3776:45;3772:54;3764:62;;;;3284:548;;;;:::o;4277:315::-;4345:6;4353;4406:2;4394:9;4385:7;4381:23;4377:32;4374:52;;;4422:1;4419;4412:12;4374:52;4461:9;4448:23;4480:31;4505:5;4480:31;:::i;:::-;4530:5;4582:2;4567:18;;;;4554:32;;-1:-1:-1;;;4277:315:1:o;4597:247::-;4656:6;4709:2;4697:9;4688:7;4684:23;4680:32;4677:52;;;4725:1;4722;4715:12;4677:52;4764:9;4751:23;4783:31;4808:5;4783:31;:::i;4849:388::-;4917:6;4925;4978:2;4966:9;4957:7;4953:23;4949:32;4946:52;;;4994:1;4991;4984:12;4946:52;5033:9;5020:23;5052:31;5077:5;5052:31;:::i;:::-;5102:5;-1:-1:-1;5159:2:1;5144:18;;5131:32;5172:33;5131:32;5172:33;:::i;5242:456::-;5319:6;5327;5335;5388:2;5376:9;5367:7;5363:23;5359:32;5356:52;;;5404:1;5401;5394:12;5356:52;5443:9;5430:23;5462:31;5487:5;5462:31;:::i;:::-;5512:5;-1:-1:-1;5569:2:1;5554:18;;5541:32;5582:33;5541:32;5582:33;:::i;:::-;5242:456;;5634:7;;-1:-1:-1;;;5688:2:1;5673:18;;;;5660:32;;5242:456::o;5703:248::-;5771:6;5779;5832:2;5820:9;5811:7;5807:23;5803:32;5800:52;;;5848:1;5845;5838:12;5800:52;-1:-1:-1;;5871:23:1;;;5941:2;5926:18;;;5913:32;;-1:-1:-1;5703:248:1:o;5956:1138::-;6074:6;6082;6135:2;6123:9;6114:7;6110:23;6106:32;6103:52;;;6151:1;6148;6141:12;6103:52;6191:9;6178:23;6220:18;6261:2;6253:6;6250:14;6247:34;;;6277:1;6274;6267:12;6247:34;6300:61;6353:7;6344:6;6333:9;6329:22;6300:61;:::i;:::-;6290:71;;6380:2;6370:12;;6435:2;6424:9;6420:18;6407:32;6464:2;6454:8;6451:16;6448:36;;;6480:1;6477;6470:12;6448:36;6503:24;;;-1:-1:-1;6558:4:1;6550:13;;6546:27;-1:-1:-1;6536:55:1;;6587:1;6584;6577:12;6536:55;6623:2;6610:16;6646:60;6662:43;6702:2;6662:43;:::i;6646:60::-;6740:15;;;6822:1;6818:10;;;;6810:19;;6806:28;;;6771:12;;;;6846:19;;;6843:39;;;6878:1;6875;6868:12;6843:39;6902:11;;;;6922:142;6938:6;6933:3;6930:15;6922:142;;;7004:17;;6992:30;;6955:12;;;;7042;;;;6922:142;;;7083:5;7073:15;;;;;;;5956:1138;;;;;:::o;7288:159::-;7355:20;;7415:6;7404:18;;7394:29;;7384:57;;7437:1;7434;7427:12;7384:57;7288:159;;;:::o;7452:328::-;7526:6;7534;7542;7595:2;7583:9;7574:7;7570:23;7566:32;7563:52;;;7611:1;7608;7601:12;7563:52;7634:28;7652:9;7634:28;:::i;:::-;7624:38;;7681:37;7714:2;7703:9;7699:18;7681:37;:::i;:::-;7671:47;;7737:37;7770:2;7759:9;7755:18;7737:37;:::i;:::-;7727:47;;7452:328;;;;;:::o;7785:382::-;7850:6;7858;7911:2;7899:9;7890:7;7886:23;7882:32;7879:52;;;7927:1;7924;7917:12;7879:52;7966:9;7953:23;7985:31;8010:5;7985:31;:::i;8172:180::-;8231:6;8284:2;8272:9;8263:7;8259:23;8255:32;8252:52;;;8300:1;8297;8290:12;8252:52;-1:-1:-1;8323:23:1;;8172:180;-1:-1:-1;8172:180:1:o;8357:853::-;8492:6;8500;8508;8516;8524;8577:3;8565:9;8556:7;8552:23;8548:33;8545:53;;;8594:1;8591;8584:12;8545:53;8633:9;8620:23;8652:31;8677:5;8652:31;:::i;:::-;8702:5;-1:-1:-1;8759:2:1;8744:18;;8731:32;8772:33;8731:32;8772:33;:::i;:::-;8824:7;-1:-1:-1;8883:2:1;8868:18;;8855:32;8896:33;8855:32;8896:33;:::i;:::-;8948:7;-1:-1:-1;9007:2:1;8992:18;;8979:32;9020:33;8979:32;9020:33;:::i;:::-;9072:7;-1:-1:-1;9131:3:1;9116:19;;9103:33;9145;9103;9145;:::i;:::-;9197:7;9187:17;;;8357:853;;;;;;;;:::o;9822:474::-;9912:6;9920;9928;9936;9944;9997:3;9985:9;9976:7;9972:23;9968:33;9965:53;;;10014:1;10011;10004:12;9965:53;10037:28;10055:9;10037:28;:::i;:::-;10027:38;;10084:37;10117:2;10106:9;10102:18;10084:37;:::i;:::-;10074:47;;10140:37;10173:2;10162:9;10158:18;10140:37;:::i;:::-;10130:47;;10196:37;10229:2;10218:9;10214:18;10196:37;:::i;:::-;10186:47;;10252:38;10285:3;10274:9;10270:19;10252:38;:::i;:::-;10242:48;;9822:474;;;;;;;;:::o;10955:385::-;11041:6;11049;11057;11065;11118:3;11106:9;11097:7;11093:23;11089:33;11086:53;;;11135:1;11132;11125:12;11086:53;-1:-1:-1;;11158:23:1;;;11228:2;11213:18;;11200:32;;-1:-1:-1;11279:2:1;11264:18;;11251:32;;11330:2;11315:18;11302:32;;-1:-1:-1;10955:385:1;-1:-1:-1;10955:385:1:o;12668:484::-;12721:3;12759:5;12753:12;12786:6;12781:3;12774:19;12812:4;12841:2;12836:3;12832:12;12825:19;;12878:2;12871:5;12867:14;12899:1;12909:218;12923:6;12920:1;12917:13;12909:218;;;12988:13;;-1:-1:-1;;;;;12984:62:1;12972:75;;13067:12;;;;13102:15;;;;12945:1;12938:9;12909:218;;;-1:-1:-1;13143:3:1;;12668:484;-1:-1:-1;;;;;12668:484:1:o;13157:342::-;13358:2;13347:9;13340:21;13321:4;13378:56;13430:2;13419:9;13415:18;13407:6;13378:56;:::i;:::-;13370:64;;13484:6;13477:14;13470:22;13465:2;13454:9;13450:18;13443:50;13157:342;;;;;:::o;13504:127::-;13565:10;13560:3;13556:20;13553:1;13546:31;13596:4;13593:1;13586:15;13620:4;13617:1;13610:15;13636:422;13725:1;13768:5;13725:1;13782:270;13803:7;13793:8;13790:21;13782:270;;;13862:4;13858:1;13854:6;13850:17;13844:4;13841:27;13838:53;;;13871:18;;:::i;:::-;13921:7;13911:8;13907:22;13904:55;;;13941:16;;;;13904:55;14020:22;;;;13980:15;;;;13782:270;;;13786:3;13636:422;;;;;:::o;14063:806::-;14112:5;14142:8;14132:80;;-1:-1:-1;14183:1:1;14197:5;;14132:80;14231:4;14221:76;;-1:-1:-1;14268:1:1;14282:5;;14221:76;14313:4;14331:1;14326:59;;;;14399:1;14394:130;;;;14306:218;;14326:59;14356:1;14347:10;;14370:5;;;14394:130;14431:3;14421:8;14418:17;14415:43;;;14438:18;;:::i;:::-;-1:-1:-1;;14494:1:1;14480:16;;14509:5;;14306:218;;14608:2;14598:8;14595:16;14589:3;14583:4;14580:13;14576:36;14570:2;14560:8;14557:16;14552:2;14546:4;14543:12;14539:35;14536:77;14533:159;;;-1:-1:-1;14645:19:1;;;14677:5;;14533:159;14724:34;14749:8;14743:4;14724:34;:::i;:::-;14794:6;14790:1;14786:6;14782:19;14773:7;14770:32;14767:58;;;14805:18;;:::i;:::-;14843:20;;14063:806;-1:-1:-1;;;14063:806:1:o;14874:140::-;14932:5;14961:47;15002:4;14992:8;14988:19;14982:4;14961:47;:::i;15019:217::-;15059:1;15085;15075:132;;15129:10;15124:3;15120:20;15117:1;15110:31;15164:4;15161:1;15154:15;15192:4;15189:1;15182:15;15075:132;-1:-1:-1;15221:9:1;;15019:217::o;15581:168::-;15654:9;;;15685;;15702:15;;;15696:22;;15682:37;15672:71;;15723:18;;:::i;15754:128::-;15821:9;;;15842:11;;;15839:37;;;15856:18;;:::i;16654:127::-;16715:10;16710:3;16706:20;16703:1;16696:31;16746:4;16743:1;16736:15;16770:4;16767:1;16760:15;17133:197;17171:3;17199:6;17240:2;17233:5;17229:14;17267:2;17258:7;17255:15;17252:41;;17273:18;;:::i;:::-;17322:1;17309:15;;17133:197;-1:-1:-1;;;17133:197:1:o;17335:125::-;17400:9;;;17421:10;;;17418:36;;;17434:18;;:::i;19711:385::-;19790:6;19798;19851:2;19839:9;19830:7;19826:23;19822:32;19819:52;;;19867:1;19864;19857:12;19819:52;19899:9;19893:16;19918:31;19943:5;19918:31;:::i;:::-;20018:2;20003:18;;19997:25;19968:5;;-1:-1:-1;20031:33:1;19997:25;20031:33;:::i;23424:245::-;23503:6;23511;23564:2;23552:9;23543:7;23539:23;23535:32;23532:52;;;23580:1;23577;23570:12;23532:52;-1:-1:-1;;23603:16:1;;23659:2;23644:18;;;23638:25;23603:16;;23638:25;;-1:-1:-1;23424:245:1:o;24030:184::-;24100:6;24153:2;24141:9;24132:7;24128:23;24124:32;24121:52;;;24169:1;24166;24159:12;24121:52;-1:-1:-1;24192:16:1;;24030:184;-1:-1:-1;24030:184:1:o;24521:245::-;24588:6;24641:2;24629:9;24620:7;24616:23;24612:32;24609:52;;;24657:1;24654;24647:12;24609:52;24689:9;24683:16;24708:28;24730:5;24708:28;:::i;25130:251::-;25200:6;25253:2;25241:9;25232:7;25228:23;25224:32;25221:52;;;25269:1;25266;25259:12;25221:52;25301:9;25295:16;25320:31;25345:5;25320:31;:::i;26075:168::-;26142:6;26168:10;;;26180;;;26164:27;;26203:11;;;26200:37;;;26217:18;;:::i;:::-;26200:37;26075:168;;;;:::o;31838:605::-;32137:6;32126:9;32119:25;32180:6;32175:2;32164:9;32160:18;32153:34;32223:3;32218:2;32207:9;32203:18;32196:31;32100:4;32244:57;32296:3;32285:9;32281:19;32273:6;32244:57;:::i;:::-;-1:-1:-1;;;;;32337:55:1;;;;32332:2;32317:18;;32310:83;-1:-1:-1;32424:3:1;32409:19;32402:35;32236:65;31838:605;-1:-1:-1;;;31838:605:1:o

Swarm Source

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