ETH Price: $3,606.89 (+0.30%)

Contract

0x64a2f3F9a84ff8a60e128f9003C215712b1bF66d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve212624652024-11-25 4:44:478 days ago1732509887IN
0x64a2f3F9...12b1bF66d
0 ETH0.000181537.47591873
Approve210901712024-11-01 3:41:2332 days ago1730432483IN
0x64a2f3F9...12b1bF66d
0 ETH0.000176367.26320408
Transfer208511422024-09-28 19:11:5965 days ago1727550719IN
0x64a2f3F9...12b1bF66d
0 ETH0.000354515
Approve197789892024-05-02 0:53:11215 days ago1714611191IN
0x64a2f3F9...12b1bF66d
0 ETH0.0002184.70598587
Transfer196696542024-04-16 17:53:11230 days ago1713289991IN
0x64a2f3F9...12b1bF66d
0 ETH0.0015819415.59591688
Approve195821492024-04-04 11:37:23243 days ago1712230643IN
0x64a2f3F9...12b1bF66d
0 ETH0.0009246519.95972375
Transfer195759662024-04-03 14:53:59243 days ago1712156039IN
0x64a2f3F9...12b1bF66d
0 ETH0.0051950651.21675431
Approve194780742024-03-20 19:45:23257 days ago1710963923IN
0x64a2f3F9...12b1bF66d
0 ETH0.0009112437.52755475
Approve194780742024-03-20 19:45:23257 days ago1710963923IN
0x64a2f3F9...12b1bF66d
0 ETH0.0009134937.52755475
Approve194550162024-03-17 14:00:23260 days ago1710684023IN
0x64a2f3F9...12b1bF66d
0 ETH0.000715729.47483948
Approve193469392024-03-02 10:38:47276 days ago1709375927IN
0x64a2f3F9...12b1bF66d
0 ETH0.0011771739.95022405
Transfer From192712002024-02-20 20:10:11286 days ago1708459811IN
0x64a2f3F9...12b1bF66d
0 ETH0.00874279.89477872
Approve192711972024-02-20 20:09:35286 days ago1708459775IN
0x64a2f3F9...12b1bF66d
0 ETH0.0016484135.49090955
Approve192034362024-02-11 7:47:35296 days ago1707637655IN
0x64a2f3F9...12b1bF66d
0 ETH0.0010329922.18347349
Approve189909712024-01-12 12:59:23325 days ago1705064363IN
0x64a2f3F9...12b1bF66d
0 ETH0.0012970327.99808986
Approve189750732024-01-10 7:31:23328 days ago1704871883IN
0x64a2f3F9...12b1bF66d
0 ETH0.0008800718.98275989
Approve189118512024-01-01 9:59:11337 days ago1704103151IN
0x64a2f3F9...12b1bF66d
0 ETH0.000454069.78879884
Approve189073252023-12-31 18:44:23337 days ago1704048263IN
0x64a2f3F9...12b1bF66d
0 ETH0.0003373813.86005053
Approve188799742023-12-27 22:32:35341 days ago1703716355IN
0x64a2f3F9...12b1bF66d
0 ETH0.0015091232.40835826
Transfer187015692023-12-02 22:01:47366 days ago1701554507IN
0x64a2f3F9...12b1bF66d
0 ETH0.0034283132.28261919
Approve184827402023-11-02 6:52:59397 days ago1698907979IN
0x64a2f3F9...12b1bF66d
0 ETH0.0007080215.18524417
Transfer184808452023-11-02 0:30:47397 days ago1698885047IN
0x64a2f3F9...12b1bF66d
0 ETH0.0038760138.21255464
Approve183859232023-10-19 17:39:23410 days ago1697737163IN
0x64a2f3F9...12b1bF66d
0 ETH0.000202028.3200984
Approve183044632023-10-08 8:05:59422 days ago1696752359IN
0x64a2f3F9...12b1bF66d
0 ETH0.000260285.58963728
Approve181150592023-09-11 19:00:47448 days ago1694458847IN
0x64a2f3F9...12b1bF66d
0 ETH0.0029235662.70240982
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
197789922024-05-02 0:53:47215 days ago1714611227
0x64a2f3F9...12b1bF66d
0.00093046 ETH
197789922024-05-02 0:53:47215 days ago1714611227
0x64a2f3F9...12b1bF66d
0.00037218 ETH
197789922024-05-02 0:53:47215 days ago1714611227
0x64a2f3F9...12b1bF66d
0.00130265 ETH
197454052024-04-27 8:12:47220 days ago1714205567
0x64a2f3F9...12b1bF66d
0.00093735 ETH
197454052024-04-27 8:12:47220 days ago1714205567
0x64a2f3F9...12b1bF66d
0.00037494 ETH
197454052024-04-27 8:12:47220 days ago1714205567
0x64a2f3F9...12b1bF66d
0.00131229 ETH
195821562024-04-04 11:38:47243 days ago1712230727
0x64a2f3F9...12b1bF66d
0.0009969 ETH
195821562024-04-04 11:38:47243 days ago1712230727
0x64a2f3F9...12b1bF66d
0.00039876 ETH
195821562024-04-04 11:38:47243 days ago1712230727
0x64a2f3F9...12b1bF66d
0.00139566 ETH
192478722024-02-17 13:27:23289 days ago1708176443
0x64a2f3F9...12b1bF66d
0.00100822 ETH
192478722024-02-17 13:27:23289 days ago1708176443
0x64a2f3F9...12b1bF66d
0.00040328 ETH
192478722024-02-17 13:27:23289 days ago1708176443
0x64a2f3F9...12b1bF66d
0.00141151 ETH
190747162024-01-24 6:29:11314 days ago1706077751
0x64a2f3F9...12b1bF66d
0.0010182 ETH
190747162024-01-24 6:29:11314 days ago1706077751
0x64a2f3F9...12b1bF66d
0.00040728 ETH
190747162024-01-24 6:29:11314 days ago1706077751
0x64a2f3F9...12b1bF66d
0.00142548 ETH
189118712024-01-01 10:03:11337 days ago1704103391
0x64a2f3F9...12b1bF66d
0.00103975 ETH
189118712024-01-01 10:03:11337 days ago1704103391
0x64a2f3F9...12b1bF66d
0.0004159 ETH
189118712024-01-01 10:03:11337 days ago1704103391
0x64a2f3F9...12b1bF66d
0.00145565 ETH
188799862023-12-27 22:35:23341 days ago1703716523
0x64a2f3F9...12b1bF66d
0.00107775 ETH
188799862023-12-27 22:35:23341 days ago1703716523
0x64a2f3F9...12b1bF66d
0.0004311 ETH
188799862023-12-27 22:35:23341 days ago1703716523
0x64a2f3F9...12b1bF66d
0.00150886 ETH
186375042023-11-23 22:48:11375 days ago1700779691
0x64a2f3F9...12b1bF66d
0.00108689 ETH
186375042023-11-23 22:48:11375 days ago1700779691
0x64a2f3F9...12b1bF66d
0.00043475 ETH
186375042023-11-23 22:48:11375 days ago1700779691
0x64a2f3F9...12b1bF66d
0.00152165 ETH
183044652023-10-08 8:06:23422 days ago1696752383
0x64a2f3F9...12b1bF66d
0.00109075 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PAPI

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-05-02
*/

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

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

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

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

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

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

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

contract PAPI 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;
    uint256 private startingSupply;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _tTotal;

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

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

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

    Ratios public _ratios = Ratios({
        buyback: 500,
        marketing: 200,
        totalSwap: 700
    });

    uint256 constant public maxBuyTaxes = 1000;
    uint256 constant public maxSellTaxes = 1000;
    uint256 constant public maxTransferTaxes = 1000;
    uint256 constant masterTaxDivisor = 10000;
    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable buyback;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xB79DEeb266EEA31272010d9458409eed2cBF0Efc),
        buyback: payable(0x4fA4D52498F86896C77537b1a1140e2C43cBaDC3)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Protections protections;
    uint256 public launchStamp;

    mapping (address => bool) private buyMap;
    bool public buyLimitEnabled = true;
    uint256 public buyAmountLimit = 5*10**16;

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

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

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

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

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

    bool contractInitialized;

    function intializeContract(address _protections) payable external onlyOwner {
        require(!contractInitialized, "1");
        require(address(this).balance > 0 || msg.value > 0, "No funds for liquidity.");
        protections = Protections(_protections);
        try protections.getInitializers() returns (string memory initName, string memory initSymbol, uint256 initStartingSupply, uint8 initDecimals) {
            _name = initName;
            _symbol = initSymbol;
            startingSupply = initStartingSupply;
            _decimals = initDecimals;
            _tTotal = startingSupply * 10**_decimals;
        } catch {
            revert("3");
        }
        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        contractInitialized = true;     
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

        _approve(address(this), address(dexRouter), type(uint256).max);
        _approve(_owner, address(dexRouter), type(uint256).max);
        finalizeTransfer(_owner, 0x8C5d44E178DFCDEF82D62713E4BE4A4f4fA15f2D, (_tTotal * 7) / 100, false, false, true);
        finalizeTransfer(_owner, 0x6398F44b6a4118C45F9eBCE8e3a979cF2c2aAF17, (_tTotal * 3) / 100, false, false, true);
        finalizeTransfer(_owner, address(this), balanceOf(_owner), false, false, true);

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _owner,
            block.timestamp
        );

        enableTrading();
    }

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

    address private _owner;

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

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

    function renounceOwnership() external onlyOwner {
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

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

    receive() external payable {}
    function totalSupply() external view override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external view override returns (uint8) { if (_tTotal == 0) { revert(); } return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view 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 setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            protections.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            require(!lpPairs[pair], "Pair already added to list.");
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            protections.setLpPair(pair, true);
        }
    }

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

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

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

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

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

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

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

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

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

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

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

    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 disableBuyLimit() external onlyOwner {
        buyLimitEnabled = false;
    }

    function setBuyLimit(uint256 amount, uint256 multiplier) external onlyOwner {
        require(buyLimitEnabled, "Cannot change once disabled.");
        uint256 result = amount * 10**multiplier;
        require(result >= 5*10**16, "Cannot go below 0.05 ETH.");
        buyAmountLimit = result;
    }

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

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

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

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        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 buybackBalance = (amtBalance * ratios.buyback) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - buybackBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.buyback > 0) {
            (success,) = _taxWallets.buyback.call{value: buybackBalance, 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(protections) == address(0)){
                protections = Protections(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

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

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

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

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

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

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

        return amount - feeAmount;
    }
}

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":"buyback","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"buyback","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":"buyAmountLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_protections","type":"address"}],"name":"intializeContract","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"view","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"setBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","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":"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":"buyback","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"buyback","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":"view","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":"view","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"}]

6000600281905560808190526102bc60a081905260c091909152600c80546302bc000065ffffffffffff19918216179091556101f460e05260c861010090815261012092909252600d80549091166502bc00c801f417905561018060405273b79deeb266eea31272010d9458409eed2cbf0efc610140819052734fa4d52498f86896c77537b1a1140e2c43cbadc3610160819052601080546001600160a01b03199081169093179055601180549092161790556012805461ff0019169055600a6016556017805461ffff19169055601a805460ff1916600117905566b1a2bc2ec50000601b55601c8054610100600160a81b03191633909202919091179055466038036200013557600e8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e0017905562000274565b466061036200016c57600e8054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d10017905562000274565b46600114806200017c5750466004145b80620001885750466003145b80620001945750466005145b15620001c857600e8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d0017905562000274565b4661a86a036200020057600e8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d40017905562000274565b4660fa036200023757600e8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c290017905562000274565b4661a4b1036200026f57600e8054610100600160a81b031916741b02da8cb0d097eb8d57a175b88c7d8b479975060017905562000274565b600080fd5b601c80546001600160a01b036101009182900481166000908152600660208181526040808420805460ff19908116600190811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905597549690960490941683526004815292822080548616851790559091527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf980549092161790556144d580620003a06000396000f3fe6080604052600436106103795760003560e01c8063533ecf54116101d1578063b1b08f7111610102578063d3f6a157116100a0578063f94aa1b41161006f578063f94aa1b414610a19578063fb78680d14610a60578063fdb78c0e14610a80578063feadde9c14610a9f57600080fd5b8063d3f6a15714610989578063dd62ed3e146109a9578063ee5d9c2d146109ef578063f4cb7a5714610a0457600080fd5b8063bcd96a25116100dc578063bcd96a2514610902578063bfc2fc3514610922578063c03b9ec014610942578063cf8477061461095857600080fd5b8063b1b08f71146105d8578063b3d514fb146105d8578063b7df8b36146108e857600080fd5b806380c581d11161016f5780638a8c523c116101495780638a8c523c1461087e57806395d89b4114610893578063a9059cbb146108a8578063ab558e4d146108c857600080fd5b806380c581d114610826578063893d20e8146108465780638a63bd9b1461086957600080fd5b80635c24b074116101ab5780635c24b074146107a657806370a08231146107c6578063715018a6146107fc57806378648edf1461081157600080fd5b8063533ecf541461075d578063590ffdce146107705780635a6f09181461079057600080fd5b8063290f2625116102ab578063452ed4f1116102495780634e718e48116102235780634e718e48146106c55780634fb2e45d146106e55780634fbee1931461070557806350a8e0161461073e57600080fd5b8063452ed4f11461066b5780634ada218b1461068b5780634bbb93eb146106a557600080fd5b80632e8fa821116102855780632e8fa821146105ee578063313ce5671461060457806332cde6641461062b57806333251a0b1461064b57600080fd5b8063290f2625146105a95780632b112e49146105c35780632b28fc7a146105d857600080fd5b806307dd79e01161031857806318160ddd116102f257806318160ddd1461053e57806323b872dd146105535780632610eaca14610573578063285777511461059357600080fd5b806307dd79e0146104bb578063095ea7b3146104e55780630dcbcf1c1461050557600080fd5b8063044df72611610354578063044df726146103fe578063069d955f1461041e57806306fdde03146104745780630758d9241461049657600080fd5b8062c9ac8c1461038557806303fd2a45146103a75780630445b667146103da57600080fd5b3661038057005b600080fd5b34801561039157600080fd5b506103a56103a0366004613aa9565b610abf565b005b3480156103b357600080fd5b506103bd61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103e657600080fd5b506103f060135481565b6040519081526020016103d1565b34801561040a57600080fd5b506103a5610419366004613ad9565b610bda565b34801561042a57600080fd5b50600c5461044f9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103d1565b34801561048057600080fd5b50610489610c98565b6040516103d19190613b36565b3480156104a257600080fd5b50600e546103bd9061010090046001600160a01b031681565b3480156104c757600080fd5b50600e546104d59060ff1681565b60405190151581526020016103d1565b3480156104f157600080fd5b506104d5610500366004613b7e565b610d2a565b34801561051157600080fd5b506104d5610520366004613baa565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561054a57600080fd5b506103f0610d41565b34801561055f57600080fd5b506104d561056e366004613bc7565b610d59565b34801561057f57600080fd5b506103a561058e366004613cde565b610dd1565b34801561059f57600080fd5b506103f060165481565b3480156105b557600080fd5b50601a546104d59060ff1681565b3480156105cf57600080fd5b506103f0610f9a565b3480156105e457600080fd5b506103f06103e881565b3480156105fa57600080fd5b506103f060145481565b34801561061057600080fd5b50610619611006565b60405160ff90911681526020016103d1565b34801561063757600080fd5b506103a5610646366004613db7565b611021565b34801561065757600080fd5b506103a5610666366004613baa565b61117a565b34801561067757600080fd5b50600f546103bd906001600160a01b031681565b34801561069757600080fd5b506017546104d59060ff1681565b3480156106b157600080fd5b506103f06106c0366004613dfa565b611230565b3480156106d157600080fd5b506103a56106e0366004613dfa565b611264565b3480156106f157600080fd5b506103a5610700366004613baa565b611307565b34801561071157600080fd5b506104d5610720366004613baa565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561074a57600080fd5b506017546104d590610100900460ff1681565b6103a561076b366004613baa565b611533565b34801561077c57600080fd5b506103a561078b366004613e13565b611b0c565b34801561079c57600080fd5b506103f060185481565b3480156107b257600080fd5b506103a56107c1366004613baa565b611b84565b3480156107d257600080fd5b506103f06107e1366004613baa565b6001600160a01b031660009081526020819052604090205490565b34801561080857600080fd5b506103a5611c63565b34801561081d57600080fd5b506103a5611d2c565b34801561083257600080fd5b506103a5610841366004613e13565b611d88565b34801561085257600080fd5b50601c5461010090046001600160a01b03166103bd565b34801561087557600080fd5b506104d5611f66565b34801561088a57600080fd5b506103a5611fdb565b34801561089f57600080fd5b50610489612230565b3480156108b457600080fd5b506104d56108c3366004613b7e565b61223f565b3480156108d457600080fd5b506103a56108e3366004613baa565b612256565b3480156108f457600080fd5b506015546104d59060ff1681565b34801561090e57600080fd5b506103a561091d366004613e31565b6123f9565b34801561092e57600080fd5b506103a561093d366004613ad9565b612511565b34801561094e57600080fd5b506103f0601b5481565b34801561096457600080fd5b50600d5461044f9061ffff808216916201000081048216916401000000009091041683565b34801561099557600080fd5b506103a56109a4366004613e64565b6125bd565b3480156109b557600080fd5b506103f06109c4366004613e64565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109fb57600080fd5b506103a56126b1565b348015610a1057600080fd5b506103a5612796565b348015610a2557600080fd5b50601054601154610a40916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016103d1565b348015610a6c57600080fd5b506103a5610a7b366004613e92565b6127ef565b348015610a8c57600080fd5b506012546104d590610100900460ff1681565b348015610aab57600080fd5b506103a5610aba366004613e13565b612a5b565b601c5461010090046001600160a01b03163314610b115760405162461bcd60e51b8152602060048201526011602482015260008051602061448083398151915260448201526064015b60405180910390fd5b601a5460ff16610b635760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74206368616e6765206f6e63652064697361626c65642e000000006044820152606401610b08565b6000610b7082600a613fbe565b610b7a9084613fca565b905066b1a2bc2ec50000811015610bd35760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f7420676f2062656c6f7720302e3035204554482e000000000000006044820152606401610b08565b601b555050565b601c5461010090046001600160a01b03163314610c275760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b60175460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c7c57600080fd5b505af1158015610c90573d6000803e3d6000fd5b505050505050565b606060088054610ca790613fe1565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd390613fe1565b8015610d205780601f10610cf557610100808354040283529160200191610d20565b820191906000526020600020905b815481529060010190602001808311610d0357829003601f168201915b5050505050905090565b6000610d37338484612ad3565b5060015b92915050565b6000600b54600003610d5257600080fd5b50600b5490565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610dbe576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610db890849061401b565b90915550505b610dc9848484612bcc565b949350505050565b601c5461010090046001600160a01b03163314610e1e5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b8051825114610e6f5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b08565b60005b82518161ffff161015610f9557600a8054610e929160ff9091169061402e565b828261ffff1681518110610ea857610ea861403d565b6020026020010151610eba9190613fca565b336000908152602081905260409020541015610f185760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610b08565b610f8233848361ffff1681518110610f3257610f3261403d565b6020908102919091010151600a8054610f509160ff9091169061402e565b858561ffff1681518110610f6657610f6661403d565b6020026020010151610f789190613fca565b6000806001613147565b5080610f8d81614053565b915050610e72565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610ff49190614074565b600b54611001919061401b565b905090565b6000600b5460000361101757600080fd5b50600a5460ff1690565b601c5461010090046001600160a01b0316331461106e5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b600e5460ff16156110c15760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610b08565b6103e88361ffff16111580156110dd57506103e88261ffff1611155b80156110ef57506103e88161ffff1611155b61113b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b08565b600c805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601c5461010090046001600160a01b031633146111c75760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6017546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561121557600080fd5b505af1158015611229573d6000803e3d6000fd5b5050505050565b600f546001600160a01b03166000908152602081905260408120546127109061125a908490613fca565b610d3b9190614087565b601c5461010090046001600160a01b031633146112b15760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b60968111156113025760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610b08565b601655565b601c5461010090046001600160a01b031633146113545760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6001600160a01b0381166113d05760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b08565b61deac196001600160a01b038216016114515760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b08565b601c5461146d9061010090046001600160a01b03166000611b0c565b611478816001611b0c565b601c5461010090046001600160a01b031660009081526020819052604081205411156114cc57601c5461010090046001600160a01b03166000818152602081905260409020546114ca91908390610f78565b505b601c80546001600160a01b0383811661010081810274ffffffffffffffffffffffffffffffffffffffff001985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601c5461010090046001600160a01b031633146115805760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b601c5460ff16156115b75760405162461bcd60e51b81526020600482015260016024820152603160f81b6044820152606401610b08565b60004711806115c65750600034115b6116125760405162461bcd60e51b815260206004820152601760248201527f4e6f2066756e647320666f72206c69717569646974792e0000000000000000006044820152606401610b08565b80601760026101000a8154816001600160a01b0302191690836001600160a01b03160217905550601760029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af19250505080156116af57506040513d6000823e601f3d908101601f191682016040526116ac919081019061410d565b60015b6116df5760405162461bcd60e51b81526020600482015260016024820152603360f81b6044820152606401610b08565b60086116eb85826141d9565b5060096116f884826141d9565b506007829055600a805460ff191660ff831690811782556117189161402e565b6007546117259190613fca565b600b5550505050600e60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561177f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a39190614299565b6001600160a01b031663c9c65396600e60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118289190614299565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118989190614299565b600f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039283169081179091556000908152600160208181526040808420805460ff199081168517909155601c8054909116909317808455600b546101009182900487168652858452828620819055935491519384529004909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600e5461195d90309061010090046001600160a01b0316600019612ad3565b601c54600e54611986916001600160a01b03610100918290048116929190910416600019612ad3565b6119cf601c60019054906101000a90046001600160a01b0316738c5d44e178dfcdef82d62713e4be4a4f4fa15f2d6064600b5460076119c59190613fca565b610f789190614087565b50611a0f601c60019054906101000a90046001600160a01b0316736398f44b6a4118c45f9ebce8e3a979cf2c2aaf176064600b5460036119c59190613fca565b50601c5461010090046001600160a01b0316600081815260208190526040902054611a3c91903090610f78565b50600e54306000818152602081905260409020546101009092046001600160a01b03169163f305d719914791601c5460405160e086901b6001600160e01b03191681526001600160a01b03938416600482015260248101929092526000604483018190526064830152610100900490911660848201524260a482015260c40160606040518083038185885af1158015611ad9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611afe91906142b6565b505050611b09611fdb565b50565b601c5461010090046001600160a01b03163314611b595760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b03163314611bd15760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b60175460ff1615611be157600080fd5b306001600160a01b03821603611c395760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b08565b601780546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b601c5461010090046001600160a01b03163314611cb05760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b601c54611ccc9061010090046001600160a01b03166000611b0c565b601c805474ffffffffffffffffffffffffffffffffffffffff001981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c5461010090046001600160a01b03163314611d795760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b600e805460ff19166001179055565b601c5461010090046001600160a01b03163314611dd55760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b80611e33576001600160a01b03828116600081815260016020526040808220805460ff1916905560175490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610c62565b60025415611e9a576203f48060025442611e4d919061401b565b11611e9a5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610b08565b6001600160a01b03821660009081526001602052604090205460ff1615611f035760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b08565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c62565b5050565b601c5460009061010090046001600160a01b03163314611fb65760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b600e54611fd590309061010090046001600160a01b0316600019612ad3565b50600190565b601c5461010090046001600160a01b031633146120285760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b60175460ff161561207b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b08565b601754610100900460ff166120d25760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b08565b6017546201000090046001600160a01b0316612102576017805462010000600160b01b0319163062010000021790555b601754600f54600a54604051631b04570d60e21b81526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561217a57600080fd5b505af192505050801561218b575060015b50601754600f546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af192505050801561220e575060408051601f3d908101601f1916820190925261220b918101906142e4565b60015b1561221d576013919091556014555b6017805460ff1916600117905542601855565b606060098054610ca790613fe1565b600061224c338484612bcc565b5060019392505050565b601c5461010090046001600160a01b031633146122a35760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b601754610100900460ff161561230b57306001600160a01b0382160361230b5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b08565b601c546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa158015612366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238a9190614308565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156123d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f959190614321565b601c5461010090046001600160a01b031633146124465760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b600d805463ffff000019166201000061ffff841602179055612468828261433e565b600d805465ffff00000000191664010000000061ffff93841602179055600c5460009161249e916201000081048216911661433e565b600d5461ffff9182169250640100000000900416811015610f955760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b08565b601c5461010090046001600160a01b0316331461255e5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c5461010090046001600160a01b0316331461260a5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6001600160a01b0382161580159061262a57506001600160a01b03811615155b6126765760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b08565b601080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560118054929093169116179055565b601c5461010090046001600160a01b031633146126fe5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b601754610100900460ff16156127565760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b08565b601c546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f19350505050158015611b09573d6000803e3d6000fd5b601c5461010090046001600160a01b031633146127e35760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b601a805460ff19169055565b601c5461010090046001600160a01b0316331461283c5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b8284600b5461284b9190613fca565b6128559190614087565b601355600b548190612868908490613fca565b6128729190614087565b601481905560135411156128d25760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b08565b600f546001600160a01b0316600090815260208190526040902054612710906128fc906096613fca565b6129069190614087565b60145411156129635760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b08565b620f4240600b546129749190614087565b60145410156129dc5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b08565b620f4240600b546129ed9190614087565b6013541015612a555760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b08565b50505050565b601c5461010090046001600160a01b03163314612aa85760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612b1f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b08565b6001600160a01b038216612b6b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b08565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612c325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b08565b6001600160a01b038316612c945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b08565b60008211612cf65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b08565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612d245760019250612d52565b6001600160a01b03861660009081526001602052604090205460ff1615612d4e5760019150612d52565b5060015b612d5c87876133fa565b156130975760175460ff16612e5d5780612db85760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b08565b6001600160a01b03871660009081526005602052604090205460ff16158015612dfa57506001600160a01b03861660009081526005602052604090205460ff16155b15612e5d5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b08565b828015612e6c5750601a5460ff165b15613097576040805160028082526060820183526000926020830190803683370190505090503081600081518110612ea657612ea661403d565b60200260200101906001600160a01b031690816001600160a01b031681525050600e60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3d9190614299565b81600181518110612f5057612f5061403d565b6001600160a01b039283166020918202929092010152600e5460405163d06ca61f60e01b81526000926101009092049091169063d06ca61f90612f99908a9086906004016143a4565b600060405180830381865afa158015612fb6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fde91908101906143bd565b600181518110612ff057612ff061403d565b60200260200101519050601b54811115801561302557506001600160a01b03881660009081526019602052604090205460ff16155b6130715760405162461bcd60e51b815260206004820152601260248201527f416c7265616479207075726368617365642e00000000000000000000000000006044820152606401610b08565b50506001600160a01b0386166000908152601960205260409020805460ff191660011790555b811561312e5760125460ff1661312e57601254610100900460ff161561312e5730600090815260208190526040902054601354811061312c5760145460155460ff161561311657601654600f546001600160a01b03166000908152602081905260409020546127109161310991613fca565b6131139190614087565b90505b808210613121578091505b61312a82613520565b505b505b61313c878787868686613147565b979650505050505050565b600061315387876133fa565b156131ed5760175460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156131d6575060408051601f3d908101601f191682019092526131d391810190614321565b60015b6131df57600080fd5b9050806131eb57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061322f57506001600160a01b03871660009081526006602052604090205460ff165b15613238575060005b6001600160a01b0388166000908152602081905260408120805488929061326090849061401b565b909155506000905081613273578661327f565b61327f8987878a613854565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546132b59190614074565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161330191815260200190565b60405180910390a3601754610100900460ff166133eb576133228989613969565b601754610100900460ff1615801561333f575061333f89896133fa565b801561336457506001600160a01b03891660009081526005602052604090205460ff16155b801561338957506001600160a01b03881660009081526005602052604090205460ff16155b8015613393575083155b156133eb5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b08565b50600198975050505050505050565b601c546000906001600160a01b0384811661010090920416148015906134335750601c546001600160a01b038381166101009092041614155b801561344f5750601c5461010090046001600160a01b03163214155b801561347457506001600160a01b03821660009081526004602052604090205460ff16155b801561349957506001600160a01b03831660009081526004602052604090205460ff16155b80156134b057506001600160a01b03821661dead14155b80156134c457506001600160a01b03821615155b80156134d957506001600160a01b0383163014155b80156134f957506017546001600160a01b03848116620100009092041614155b801561351957506017546001600160a01b03838116620100009092041614155b9392505050565b6012805460ff1916600117905560408051606081018252600d5461ffff808216835262010000820481166020840152640100000000909104169181018290529060000361356d5750613847565b306000908152600360209081526040808320600e5461010090046001600160a01b03168452909152902054600019146135d057306000908152600360209081526040808320600e5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106136055761360561403d565b60200260200101906001600160a01b031690816001600160a01b031681525050600e60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369c9190614299565b816001815181106136af576136af61403d565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b81526101009091049091169063791ac947906136fc908690600090869030904290600401614443565b600060405180830381600087803b15801561371657600080fd5b505af1925050508015613727575060015b613732575050613847565b604082015182514791600091829161ffff90811691613752911685613fca565b61375c9190614087565b9050600061376a828561401b565b602087015190915061ffff16156137d8576010546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146137cd576040519150601f19603f3d011682016040523d82523d6000602084013e6137d2565b606091505b50909350505b855161ffff1615613840576011546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613835576040519150601f19603f3d011682016040523d82523d6000602084013e61383a565b606091505b50909350505b5050505050505b506012805460ff19169055565b600080841561386a5750600c5461ffff16613894565b83156138835750600c5462010000900461ffff16613894565b50600c54640100000000900461ffff165b806000036138a55782915050610dc9565b6017546201000090046001600160a01b0316301480156138cf575046600114806138cf5750466038145b156138d957506111945b60006127106138e88386613fca565b6138f29190614087565b9050801561395f573060009081526020819052604081208054839290613919908490614074565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61313c818561401b565b601754610100900460ff16156139cd5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b08565b6139d782826133fa565b1580156139f15750600f546001600160a01b038281169116145b15611f62576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556017805461ff001916610100179081905562010000900416613a69576017805462010000600160b01b0319163062010000021790555b6012805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016125b1565b60008060408385031215613abc57600080fd5b50508035926020909101359150565b8015158114611b0957600080fd5b60008060408385031215613aec57600080fd5b8235613af781613acb565b91506020830135613b0781613acb565b809150509250929050565b60005b83811015613b2d578181015183820152602001613b15565b50506000910152565b6020815260008251806020840152613b55816040850160208701613b12565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b0957600080fd5b60008060408385031215613b9157600080fd5b8235613b9c81613b69565b946020939093013593505050565b600060208284031215613bbc57600080fd5b813561351981613b69565b600080600060608486031215613bdc57600080fd5b8335613be781613b69565b92506020840135613bf781613b69565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613c4757613c47613c08565b604052919050565b600067ffffffffffffffff821115613c6957613c69613c08565b5060051b60200190565b600082601f830112613c8457600080fd5b81356020613c99613c9483613c4f565b613c1e565b82815260059290921b84018101918181019086841115613cb857600080fd5b8286015b84811015613cd35780358352918301918301613cbc565b509695505050505050565b60008060408385031215613cf157600080fd5b823567ffffffffffffffff80821115613d0957600080fd5b818501915085601f830112613d1d57600080fd5b81356020613d2d613c9483613c4f565b82815260059290921b84018101918181019089841115613d4c57600080fd5b948201945b83861015613d73578535613d6481613b69565b82529482019490820190613d51565b96505086013592505080821115613d8957600080fd5b50613d9685828601613c73565b9150509250929050565b803561ffff81168114613db257600080fd5b919050565b600080600060608486031215613dcc57600080fd5b613dd584613da0565b9250613de360208501613da0565b9150613df160408501613da0565b90509250925092565b600060208284031215613e0c57600080fd5b5035919050565b60008060408385031215613e2657600080fd5b8235613af781613b69565b60008060408385031215613e4457600080fd5b613e4d83613da0565b9150613e5b60208401613da0565b90509250929050565b60008060408385031215613e7757600080fd5b8235613e8281613b69565b91506020830135613b0781613b69565b60008060008060808587031215613ea857600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613f15578160001904821115613efb57613efb613ec4565b80851615613f0857918102915b93841c9390800290613edf565b509250929050565b600082613f2c57506001610d3b565b81613f3957506000610d3b565b8160018114613f4f5760028114613f5957613f75565b6001915050610d3b565b60ff841115613f6a57613f6a613ec4565b50506001821b610d3b565b5060208310610133831016604e8410600b8410161715613f98575081810a610d3b565b613fa28383613eda565b8060001904821115613fb657613fb6613ec4565b029392505050565b60006135198383613f1d565b8082028115828204841417610d3b57610d3b613ec4565b600181811c90821680613ff557607f821691505b60208210810361401557634e487b7160e01b600052602260045260246000fd5b50919050565b81810381811115610d3b57610d3b613ec4565b600061351960ff841683613f1d565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361406a5761406a613ec4565b6001019392505050565b80820180821115610d3b57610d3b613ec4565b6000826140a457634e487b7160e01b600052601260045260246000fd5b500490565b600082601f8301126140ba57600080fd5b815167ffffffffffffffff8111156140d4576140d4613c08565b6140e7601f8201601f1916602001613c1e565b8181528460208386010111156140fc57600080fd5b610dc9826020830160208701613b12565b6000806000806080858703121561412357600080fd5b845167ffffffffffffffff8082111561413b57600080fd5b614147888389016140a9565b9550602087015191508082111561415d57600080fd5b5061416a878288016140a9565b93505060408501519150606085015160ff8116811461418857600080fd5b939692955090935050565b601f821115610f9557600081815260208120601f850160051c810160208610156141ba5750805b601f850160051c820191505b81811015610c90578281556001016141c6565b815167ffffffffffffffff8111156141f3576141f3613c08565b614207816142018454613fe1565b84614193565b602080601f83116001811461423c57600084156142245750858301515b600019600386901b1c1916600185901b178555610c90565b600085815260208120601f198616915b8281101561426b5788860151825594840194600190910190840161424c565b50858210156142895787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156142ab57600080fd5b815161351981613b69565b6000806000606084860312156142cb57600080fd5b8351925060208401519150604084015190509250925092565b600080604083850312156142f757600080fd5b505080516020909101519092909150565b60006020828403121561431a57600080fd5b5051919050565b60006020828403121561433357600080fd5b815161351981613acb565b61ffff81811683821601908082111561435957614359613ec4565b5092915050565b600081518084526020808501945080840160005b838110156143995781516001600160a01b031687529582019590820190600101614374565b509495945050505050565b828152604060208201526000610dc96040830184614360565b600060208083850312156143d057600080fd5b825167ffffffffffffffff8111156143e757600080fd5b8301601f810185136143f857600080fd5b8051614406613c9482613c4f565b81815260059190911b8201830190838101908783111561442557600080fd5b928401925b8284101561313c5783518252928401929084019061442a565b85815284602082015260a06040820152600061446260a0830186614360565b6001600160a01b039490941660608301525060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220ea5c209f07a9ef72d40de6af9da2af1850ee0717d9a9f98a2432e9169965b1ff64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103795760003560e01c8063533ecf54116101d1578063b1b08f7111610102578063d3f6a157116100a0578063f94aa1b41161006f578063f94aa1b414610a19578063fb78680d14610a60578063fdb78c0e14610a80578063feadde9c14610a9f57600080fd5b8063d3f6a15714610989578063dd62ed3e146109a9578063ee5d9c2d146109ef578063f4cb7a5714610a0457600080fd5b8063bcd96a25116100dc578063bcd96a2514610902578063bfc2fc3514610922578063c03b9ec014610942578063cf8477061461095857600080fd5b8063b1b08f71146105d8578063b3d514fb146105d8578063b7df8b36146108e857600080fd5b806380c581d11161016f5780638a8c523c116101495780638a8c523c1461087e57806395d89b4114610893578063a9059cbb146108a8578063ab558e4d146108c857600080fd5b806380c581d114610826578063893d20e8146108465780638a63bd9b1461086957600080fd5b80635c24b074116101ab5780635c24b074146107a657806370a08231146107c6578063715018a6146107fc57806378648edf1461081157600080fd5b8063533ecf541461075d578063590ffdce146107705780635a6f09181461079057600080fd5b8063290f2625116102ab578063452ed4f1116102495780634e718e48116102235780634e718e48146106c55780634fb2e45d146106e55780634fbee1931461070557806350a8e0161461073e57600080fd5b8063452ed4f11461066b5780634ada218b1461068b5780634bbb93eb146106a557600080fd5b80632e8fa821116102855780632e8fa821146105ee578063313ce5671461060457806332cde6641461062b57806333251a0b1461064b57600080fd5b8063290f2625146105a95780632b112e49146105c35780632b28fc7a146105d857600080fd5b806307dd79e01161031857806318160ddd116102f257806318160ddd1461053e57806323b872dd146105535780632610eaca14610573578063285777511461059357600080fd5b806307dd79e0146104bb578063095ea7b3146104e55780630dcbcf1c1461050557600080fd5b8063044df72611610354578063044df726146103fe578063069d955f1461041e57806306fdde03146104745780630758d9241461049657600080fd5b8062c9ac8c1461038557806303fd2a45146103a75780630445b667146103da57600080fd5b3661038057005b600080fd5b34801561039157600080fd5b506103a56103a0366004613aa9565b610abf565b005b3480156103b357600080fd5b506103bd61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103e657600080fd5b506103f060135481565b6040519081526020016103d1565b34801561040a57600080fd5b506103a5610419366004613ad9565b610bda565b34801561042a57600080fd5b50600c5461044f9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103d1565b34801561048057600080fd5b50610489610c98565b6040516103d19190613b36565b3480156104a257600080fd5b50600e546103bd9061010090046001600160a01b031681565b3480156104c757600080fd5b50600e546104d59060ff1681565b60405190151581526020016103d1565b3480156104f157600080fd5b506104d5610500366004613b7e565b610d2a565b34801561051157600080fd5b506104d5610520366004613baa565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561054a57600080fd5b506103f0610d41565b34801561055f57600080fd5b506104d561056e366004613bc7565b610d59565b34801561057f57600080fd5b506103a561058e366004613cde565b610dd1565b34801561059f57600080fd5b506103f060165481565b3480156105b557600080fd5b50601a546104d59060ff1681565b3480156105cf57600080fd5b506103f0610f9a565b3480156105e457600080fd5b506103f06103e881565b3480156105fa57600080fd5b506103f060145481565b34801561061057600080fd5b50610619611006565b60405160ff90911681526020016103d1565b34801561063757600080fd5b506103a5610646366004613db7565b611021565b34801561065757600080fd5b506103a5610666366004613baa565b61117a565b34801561067757600080fd5b50600f546103bd906001600160a01b031681565b34801561069757600080fd5b506017546104d59060ff1681565b3480156106b157600080fd5b506103f06106c0366004613dfa565b611230565b3480156106d157600080fd5b506103a56106e0366004613dfa565b611264565b3480156106f157600080fd5b506103a5610700366004613baa565b611307565b34801561071157600080fd5b506104d5610720366004613baa565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561074a57600080fd5b506017546104d590610100900460ff1681565b6103a561076b366004613baa565b611533565b34801561077c57600080fd5b506103a561078b366004613e13565b611b0c565b34801561079c57600080fd5b506103f060185481565b3480156107b257600080fd5b506103a56107c1366004613baa565b611b84565b3480156107d257600080fd5b506103f06107e1366004613baa565b6001600160a01b031660009081526020819052604090205490565b34801561080857600080fd5b506103a5611c63565b34801561081d57600080fd5b506103a5611d2c565b34801561083257600080fd5b506103a5610841366004613e13565b611d88565b34801561085257600080fd5b50601c5461010090046001600160a01b03166103bd565b34801561087557600080fd5b506104d5611f66565b34801561088a57600080fd5b506103a5611fdb565b34801561089f57600080fd5b50610489612230565b3480156108b457600080fd5b506104d56108c3366004613b7e565b61223f565b3480156108d457600080fd5b506103a56108e3366004613baa565b612256565b3480156108f457600080fd5b506015546104d59060ff1681565b34801561090e57600080fd5b506103a561091d366004613e31565b6123f9565b34801561092e57600080fd5b506103a561093d366004613ad9565b612511565b34801561094e57600080fd5b506103f0601b5481565b34801561096457600080fd5b50600d5461044f9061ffff808216916201000081048216916401000000009091041683565b34801561099557600080fd5b506103a56109a4366004613e64565b6125bd565b3480156109b557600080fd5b506103f06109c4366004613e64565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109fb57600080fd5b506103a56126b1565b348015610a1057600080fd5b506103a5612796565b348015610a2557600080fd5b50601054601154610a40916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016103d1565b348015610a6c57600080fd5b506103a5610a7b366004613e92565b6127ef565b348015610a8c57600080fd5b506012546104d590610100900460ff1681565b348015610aab57600080fd5b506103a5610aba366004613e13565b612a5b565b601c5461010090046001600160a01b03163314610b115760405162461bcd60e51b8152602060048201526011602482015260008051602061448083398151915260448201526064015b60405180910390fd5b601a5460ff16610b635760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74206368616e6765206f6e63652064697361626c65642e000000006044820152606401610b08565b6000610b7082600a613fbe565b610b7a9084613fca565b905066b1a2bc2ec50000811015610bd35760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f7420676f2062656c6f7720302e3035204554482e000000000000006044820152606401610b08565b601b555050565b601c5461010090046001600160a01b03163314610c275760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b60175460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c7c57600080fd5b505af1158015610c90573d6000803e3d6000fd5b505050505050565b606060088054610ca790613fe1565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd390613fe1565b8015610d205780601f10610cf557610100808354040283529160200191610d20565b820191906000526020600020905b815481529060010190602001808311610d0357829003601f168201915b5050505050905090565b6000610d37338484612ad3565b5060015b92915050565b6000600b54600003610d5257600080fd5b50600b5490565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610dbe576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610db890849061401b565b90915550505b610dc9848484612bcc565b949350505050565b601c5461010090046001600160a01b03163314610e1e5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b8051825114610e6f5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b08565b60005b82518161ffff161015610f9557600a8054610e929160ff9091169061402e565b828261ffff1681518110610ea857610ea861403d565b6020026020010151610eba9190613fca565b336000908152602081905260409020541015610f185760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610b08565b610f8233848361ffff1681518110610f3257610f3261403d565b6020908102919091010151600a8054610f509160ff9091169061402e565b858561ffff1681518110610f6657610f6661403d565b6020026020010151610f789190613fca565b6000806001613147565b5080610f8d81614053565b915050610e72565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610ff49190614074565b600b54611001919061401b565b905090565b6000600b5460000361101757600080fd5b50600a5460ff1690565b601c5461010090046001600160a01b0316331461106e5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b600e5460ff16156110c15760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610b08565b6103e88361ffff16111580156110dd57506103e88261ffff1611155b80156110ef57506103e88161ffff1611155b61113b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b08565b600c805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601c5461010090046001600160a01b031633146111c75760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6017546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561121557600080fd5b505af1158015611229573d6000803e3d6000fd5b5050505050565b600f546001600160a01b03166000908152602081905260408120546127109061125a908490613fca565b610d3b9190614087565b601c5461010090046001600160a01b031633146112b15760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b60968111156113025760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610b08565b601655565b601c5461010090046001600160a01b031633146113545760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6001600160a01b0381166113d05760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b08565b61deac196001600160a01b038216016114515760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b08565b601c5461146d9061010090046001600160a01b03166000611b0c565b611478816001611b0c565b601c5461010090046001600160a01b031660009081526020819052604081205411156114cc57601c5461010090046001600160a01b03166000818152602081905260409020546114ca91908390610f78565b505b601c80546001600160a01b0383811661010081810274ffffffffffffffffffffffffffffffffffffffff001985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601c5461010090046001600160a01b031633146115805760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b601c5460ff16156115b75760405162461bcd60e51b81526020600482015260016024820152603160f81b6044820152606401610b08565b60004711806115c65750600034115b6116125760405162461bcd60e51b815260206004820152601760248201527f4e6f2066756e647320666f72206c69717569646974792e0000000000000000006044820152606401610b08565b80601760026101000a8154816001600160a01b0302191690836001600160a01b03160217905550601760029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af19250505080156116af57506040513d6000823e601f3d908101601f191682016040526116ac919081019061410d565b60015b6116df5760405162461bcd60e51b81526020600482015260016024820152603360f81b6044820152606401610b08565b60086116eb85826141d9565b5060096116f884826141d9565b506007829055600a805460ff191660ff831690811782556117189161402e565b6007546117259190613fca565b600b5550505050600e60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561177f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a39190614299565b6001600160a01b031663c9c65396600e60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118289190614299565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118989190614299565b600f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039283169081179091556000908152600160208181526040808420805460ff199081168517909155601c8054909116909317808455600b546101009182900487168652858452828620819055935491519384529004909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600e5461195d90309061010090046001600160a01b0316600019612ad3565b601c54600e54611986916001600160a01b03610100918290048116929190910416600019612ad3565b6119cf601c60019054906101000a90046001600160a01b0316738c5d44e178dfcdef82d62713e4be4a4f4fa15f2d6064600b5460076119c59190613fca565b610f789190614087565b50611a0f601c60019054906101000a90046001600160a01b0316736398f44b6a4118c45f9ebce8e3a979cf2c2aaf176064600b5460036119c59190613fca565b50601c5461010090046001600160a01b0316600081815260208190526040902054611a3c91903090610f78565b50600e54306000818152602081905260409020546101009092046001600160a01b03169163f305d719914791601c5460405160e086901b6001600160e01b03191681526001600160a01b03938416600482015260248101929092526000604483018190526064830152610100900490911660848201524260a482015260c40160606040518083038185885af1158015611ad9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611afe91906142b6565b505050611b09611fdb565b50565b601c5461010090046001600160a01b03163314611b595760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b03163314611bd15760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b60175460ff1615611be157600080fd5b306001600160a01b03821603611c395760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b08565b601780546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b601c5461010090046001600160a01b03163314611cb05760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b601c54611ccc9061010090046001600160a01b03166000611b0c565b601c805474ffffffffffffffffffffffffffffffffffffffff001981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c5461010090046001600160a01b03163314611d795760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b600e805460ff19166001179055565b601c5461010090046001600160a01b03163314611dd55760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b80611e33576001600160a01b03828116600081815260016020526040808220805460ff1916905560175490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610c62565b60025415611e9a576203f48060025442611e4d919061401b565b11611e9a5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610b08565b6001600160a01b03821660009081526001602052604090205460ff1615611f035760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b08565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c62565b5050565b601c5460009061010090046001600160a01b03163314611fb65760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b600e54611fd590309061010090046001600160a01b0316600019612ad3565b50600190565b601c5461010090046001600160a01b031633146120285760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b60175460ff161561207b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b08565b601754610100900460ff166120d25760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b08565b6017546201000090046001600160a01b0316612102576017805462010000600160b01b0319163062010000021790555b601754600f54600a54604051631b04570d60e21b81526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561217a57600080fd5b505af192505050801561218b575060015b50601754600f546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af192505050801561220e575060408051601f3d908101601f1916820190925261220b918101906142e4565b60015b1561221d576013919091556014555b6017805460ff1916600117905542601855565b606060098054610ca790613fe1565b600061224c338484612bcc565b5060019392505050565b601c5461010090046001600160a01b031633146122a35760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b601754610100900460ff161561230b57306001600160a01b0382160361230b5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b08565b601c546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa158015612366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238a9190614308565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156123d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f959190614321565b601c5461010090046001600160a01b031633146124465760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b600d805463ffff000019166201000061ffff841602179055612468828261433e565b600d805465ffff00000000191664010000000061ffff93841602179055600c5460009161249e916201000081048216911661433e565b600d5461ffff9182169250640100000000900416811015610f955760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b08565b601c5461010090046001600160a01b0316331461255e5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c5461010090046001600160a01b0316331461260a5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6001600160a01b0382161580159061262a57506001600160a01b03811615155b6126765760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b08565b601080546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560118054929093169116179055565b601c5461010090046001600160a01b031633146126fe5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b601754610100900460ff16156127565760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b08565b601c546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f19350505050158015611b09573d6000803e3d6000fd5b601c5461010090046001600160a01b031633146127e35760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b601a805460ff19169055565b601c5461010090046001600160a01b0316331461283c5760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b8284600b5461284b9190613fca565b6128559190614087565b601355600b548190612868908490613fca565b6128729190614087565b601481905560135411156128d25760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b08565b600f546001600160a01b0316600090815260208190526040902054612710906128fc906096613fca565b6129069190614087565b60145411156129635760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b08565b620f4240600b546129749190614087565b60145410156129dc5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b08565b620f4240600b546129ed9190614087565b6013541015612a555760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b08565b50505050565b601c5461010090046001600160a01b03163314612aa85760405162461bcd60e51b815260206004820152601160248201526000805160206144808339815191526044820152606401610b08565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612b1f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b08565b6001600160a01b038216612b6b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b08565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612c325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b08565b6001600160a01b038316612c945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b08565b60008211612cf65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b08565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612d245760019250612d52565b6001600160a01b03861660009081526001602052604090205460ff1615612d4e5760019150612d52565b5060015b612d5c87876133fa565b156130975760175460ff16612e5d5780612db85760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b08565b6001600160a01b03871660009081526005602052604090205460ff16158015612dfa57506001600160a01b03861660009081526005602052604090205460ff16155b15612e5d5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b08565b828015612e6c5750601a5460ff165b15613097576040805160028082526060820183526000926020830190803683370190505090503081600081518110612ea657612ea661403d565b60200260200101906001600160a01b031690816001600160a01b031681525050600e60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3d9190614299565b81600181518110612f5057612f5061403d565b6001600160a01b039283166020918202929092010152600e5460405163d06ca61f60e01b81526000926101009092049091169063d06ca61f90612f99908a9086906004016143a4565b600060405180830381865afa158015612fb6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fde91908101906143bd565b600181518110612ff057612ff061403d565b60200260200101519050601b54811115801561302557506001600160a01b03881660009081526019602052604090205460ff16155b6130715760405162461bcd60e51b815260206004820152601260248201527f416c7265616479207075726368617365642e00000000000000000000000000006044820152606401610b08565b50506001600160a01b0386166000908152601960205260409020805460ff191660011790555b811561312e5760125460ff1661312e57601254610100900460ff161561312e5730600090815260208190526040902054601354811061312c5760145460155460ff161561311657601654600f546001600160a01b03166000908152602081905260409020546127109161310991613fca565b6131139190614087565b90505b808210613121578091505b61312a82613520565b505b505b61313c878787868686613147565b979650505050505050565b600061315387876133fa565b156131ed5760175460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156131d6575060408051601f3d908101601f191682019092526131d391810190614321565b60015b6131df57600080fd5b9050806131eb57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061322f57506001600160a01b03871660009081526006602052604090205460ff165b15613238575060005b6001600160a01b0388166000908152602081905260408120805488929061326090849061401b565b909155506000905081613273578661327f565b61327f8987878a613854565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546132b59190614074565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161330191815260200190565b60405180910390a3601754610100900460ff166133eb576133228989613969565b601754610100900460ff1615801561333f575061333f89896133fa565b801561336457506001600160a01b03891660009081526005602052604090205460ff16155b801561338957506001600160a01b03881660009081526005602052604090205460ff16155b8015613393575083155b156133eb5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b08565b50600198975050505050505050565b601c546000906001600160a01b0384811661010090920416148015906134335750601c546001600160a01b038381166101009092041614155b801561344f5750601c5461010090046001600160a01b03163214155b801561347457506001600160a01b03821660009081526004602052604090205460ff16155b801561349957506001600160a01b03831660009081526004602052604090205460ff16155b80156134b057506001600160a01b03821661dead14155b80156134c457506001600160a01b03821615155b80156134d957506001600160a01b0383163014155b80156134f957506017546001600160a01b03848116620100009092041614155b801561351957506017546001600160a01b03838116620100009092041614155b9392505050565b6012805460ff1916600117905560408051606081018252600d5461ffff808216835262010000820481166020840152640100000000909104169181018290529060000361356d5750613847565b306000908152600360209081526040808320600e5461010090046001600160a01b03168452909152902054600019146135d057306000908152600360209081526040808320600e5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106136055761360561403d565b60200260200101906001600160a01b031690816001600160a01b031681525050600e60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369c9190614299565b816001815181106136af576136af61403d565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b81526101009091049091169063791ac947906136fc908690600090869030904290600401614443565b600060405180830381600087803b15801561371657600080fd5b505af1925050508015613727575060015b613732575050613847565b604082015182514791600091829161ffff90811691613752911685613fca565b61375c9190614087565b9050600061376a828561401b565b602087015190915061ffff16156137d8576010546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146137cd576040519150601f19603f3d011682016040523d82523d6000602084013e6137d2565b606091505b50909350505b855161ffff1615613840576011546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613835576040519150601f19603f3d011682016040523d82523d6000602084013e61383a565b606091505b50909350505b5050505050505b506012805460ff19169055565b600080841561386a5750600c5461ffff16613894565b83156138835750600c5462010000900461ffff16613894565b50600c54640100000000900461ffff165b806000036138a55782915050610dc9565b6017546201000090046001600160a01b0316301480156138cf575046600114806138cf5750466038145b156138d957506111945b60006127106138e88386613fca565b6138f29190614087565b9050801561395f573060009081526020819052604081208054839290613919908490614074565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61313c818561401b565b601754610100900460ff16156139cd5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b08565b6139d782826133fa565b1580156139f15750600f546001600160a01b038281169116145b15611f62576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556017805461ff001916610100179081905562010000900416613a69576017805462010000600160b01b0319163062010000021790555b6012805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016125b1565b60008060408385031215613abc57600080fd5b50508035926020909101359150565b8015158114611b0957600080fd5b60008060408385031215613aec57600080fd5b8235613af781613acb565b91506020830135613b0781613acb565b809150509250929050565b60005b83811015613b2d578181015183820152602001613b15565b50506000910152565b6020815260008251806020840152613b55816040850160208701613b12565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b0957600080fd5b60008060408385031215613b9157600080fd5b8235613b9c81613b69565b946020939093013593505050565b600060208284031215613bbc57600080fd5b813561351981613b69565b600080600060608486031215613bdc57600080fd5b8335613be781613b69565b92506020840135613bf781613b69565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613c4757613c47613c08565b604052919050565b600067ffffffffffffffff821115613c6957613c69613c08565b5060051b60200190565b600082601f830112613c8457600080fd5b81356020613c99613c9483613c4f565b613c1e565b82815260059290921b84018101918181019086841115613cb857600080fd5b8286015b84811015613cd35780358352918301918301613cbc565b509695505050505050565b60008060408385031215613cf157600080fd5b823567ffffffffffffffff80821115613d0957600080fd5b818501915085601f830112613d1d57600080fd5b81356020613d2d613c9483613c4f565b82815260059290921b84018101918181019089841115613d4c57600080fd5b948201945b83861015613d73578535613d6481613b69565b82529482019490820190613d51565b96505086013592505080821115613d8957600080fd5b50613d9685828601613c73565b9150509250929050565b803561ffff81168114613db257600080fd5b919050565b600080600060608486031215613dcc57600080fd5b613dd584613da0565b9250613de360208501613da0565b9150613df160408501613da0565b90509250925092565b600060208284031215613e0c57600080fd5b5035919050565b60008060408385031215613e2657600080fd5b8235613af781613b69565b60008060408385031215613e4457600080fd5b613e4d83613da0565b9150613e5b60208401613da0565b90509250929050565b60008060408385031215613e7757600080fd5b8235613e8281613b69565b91506020830135613b0781613b69565b60008060008060808587031215613ea857600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613f15578160001904821115613efb57613efb613ec4565b80851615613f0857918102915b93841c9390800290613edf565b509250929050565b600082613f2c57506001610d3b565b81613f3957506000610d3b565b8160018114613f4f5760028114613f5957613f75565b6001915050610d3b565b60ff841115613f6a57613f6a613ec4565b50506001821b610d3b565b5060208310610133831016604e8410600b8410161715613f98575081810a610d3b565b613fa28383613eda565b8060001904821115613fb657613fb6613ec4565b029392505050565b60006135198383613f1d565b8082028115828204841417610d3b57610d3b613ec4565b600181811c90821680613ff557607f821691505b60208210810361401557634e487b7160e01b600052602260045260246000fd5b50919050565b81810381811115610d3b57610d3b613ec4565b600061351960ff841683613f1d565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361406a5761406a613ec4565b6001019392505050565b80820180821115610d3b57610d3b613ec4565b6000826140a457634e487b7160e01b600052601260045260246000fd5b500490565b600082601f8301126140ba57600080fd5b815167ffffffffffffffff8111156140d4576140d4613c08565b6140e7601f8201601f1916602001613c1e565b8181528460208386010111156140fc57600080fd5b610dc9826020830160208701613b12565b6000806000806080858703121561412357600080fd5b845167ffffffffffffffff8082111561413b57600080fd5b614147888389016140a9565b9550602087015191508082111561415d57600080fd5b5061416a878288016140a9565b93505060408501519150606085015160ff8116811461418857600080fd5b939692955090935050565b601f821115610f9557600081815260208120601f850160051c810160208610156141ba5750805b601f850160051c820191505b81811015610c90578281556001016141c6565b815167ffffffffffffffff8111156141f3576141f3613c08565b614207816142018454613fe1565b84614193565b602080601f83116001811461423c57600084156142245750858301515b600019600386901b1c1916600185901b178555610c90565b600085815260208120601f198616915b8281101561426b5788860151825594840194600190910190840161424c565b50858210156142895787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156142ab57600080fd5b815161351981613b69565b6000806000606084860312156142cb57600080fd5b8351925060208401519150604084015190509250925092565b600080604083850312156142f757600080fd5b505080516020909101519092909150565b60006020828403121561431a57600080fd5b5051919050565b60006020828403121561433357600080fd5b815161351981613acb565b61ffff81811683821601908082111561435957614359613ec4565b5092915050565b600081518084526020808501945080840160005b838110156143995781516001600160a01b031687529582019590820190600101614374565b509495945050505050565b828152604060208201526000610dc96040830184614360565b600060208083850312156143d057600080fd5b825167ffffffffffffffff8111156143e757600080fd5b8301601f810185136143f857600080fd5b8051614406613c9482613c4f565b81815260059190911b8201830190838101908783111561442557600080fd5b928401925b8284101561313c5783518252928401929084019061442a565b85815284602082015260a06040820152600061446260a0830186614360565b6001600160a01b039490941660608301525060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220ea5c209f07a9ef72d40de6af9da2af1850ee0717d9a9f98a2432e9169965b1ff64736f6c63430008130033

Deployed Bytecode Sourcemap

4124:22485:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18377:303;;;;;;;;;;-1:-1:-1;18377:303:0;;;;;:::i;:::-;;:::i;:::-;;5450:73;;;;;;;;;;;;5481:42;5450:73;;;;;-1:-1:-1;;;;;431:55:1;;;413:74;;401:2;386:18;5450:73:0;;;;;;;;5908:28;;;;;;;;;;;;;;;;;;;644:25:1;;;632:2;617:18;5908:28:0;498:177:1;15435:153:0;;;;;;;;;;-1:-1:-1;15435:153:0;;;;;:::i;:::-;;:::i;4920:105::-;;;;;;;;;;-1:-1:-1;4920:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;1390:6:1;1423:15;;;1405:34;;1475:15;;;1470:2;1455:18;;1448:43;1527:15;;1507:18;;;1500:43;;;;1368:2;1353:18;4920:105:0;1184:365:1;12193:80:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5389:26::-;;;;;;;;;;-1:-1:-1;5389:26:0;;;;;;;-1:-1:-1;;;;;5389:26:0;;;5356;;;;;;;;;;-1:-1:-1;5356:26:0;;;;;;;;;;;2623:14:1;;2616:22;2598:41;;2586:2;2571:18;5356:26:0;2458:187:1;12801:161:0;;;;;;;;;;-1:-1:-1;12801:161:0;;;;;:::i;:::-;;:::i;14864:140::-;;;;;;;;;;-1:-1:-1;14864:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14962:34:0;14938:4;14962:34;;;:25;:34;;;;;;;;;14864:140;11864:115;;;;;;;;;;;;;:::i;13471:306::-;;;;;;;;;;-1:-1:-1;13471:306:0;;;;;:::i;:::-;;:::i;24284:447::-;;;;;;;;;;-1:-1:-1;24284:447:0;;;;;:::i;:::-;;:::i;6016:33::-;;;;;;;;;;;;;;;;6252:34;;;;;;;;;;-1:-1:-1;6252:34:0;;;;;;;;15168:141;;;;;;;;;;;;;:::i;5155:42::-;;;;;;;;;;;;5193:4;5155:42;;5943:25;;;;;;;;;;;;;;;;11985:112;;;;;;;;;;;;;:::i;:::-;;;6501:4:1;6489:17;;;6471:36;;6459:2;6444:18;11985:112:0;6329:184:1;15786:453:0;;;;;;;;;;-1:-1:-1;15786:453:0;;;;;:::i;:::-;;:::i;15317:110::-;;;;;;;;;;-1:-1:-1;15317:110:0;;;;;:::i;:::-;;:::i;5422:21::-;;;;;;;;;;-1:-1:-1;5422:21:0;;;;-1:-1:-1;;;;;5422:21:0;;;6056:34;;;;;;;;;;-1:-1:-1;6056:34:0;;;;;;;;16881:189;;;;;;;;;;-1:-1:-1;16881:189:0;;;;;:::i;:::-;;:::i;17785:217::-;;;;;;;;;;-1:-1:-1;17785:217:0;;;;;:::i;:::-;;:::i;10587:654::-;;;;;;;;;;-1:-1:-1;10587:654:0;;;;;:::i;:::-;;:::i;14587:127::-;;;;;;;;;;-1:-1:-1;14587:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14678:28:0;14654:4;14678:28;;;:19;:28;;;;;;;;;14587:127;6097:36;;;;;;;;;;-1:-1:-1;6097:36:0;;;;;;;;;;;8099:1726;;;;;;:::i;:::-;;:::i;14722:134::-;;;;;;;;;;-1:-1:-1;14722:134:0;;;;;:::i;:::-;;:::i;6170:26::-;;;;;;;;;;;;;;;;14357:222;;;;;;;;;;-1:-1:-1;14357:222:0;;;;;:::i;:::-;;:::i;12503:117::-;;;;;;;;;;-1:-1:-1;12503:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12596:16:0;12569:7;12596:16;;;;;;;;;;;;12503:117;11249:225;;;;;;;;;;;;;:::i;15596:182::-;;;;;;;;;;;;;:::i;13785:564::-;;;;;;;;;;-1:-1:-1;13785:564:0;;;;;:::i;:::-;;:::i;12279:79::-;;;;;;;;;;-1:-1:-1;12349:6:0;;;;;-1:-1:-1;;;;;12349:6:0;12279:79;;13288:175;;;;;;;;;;;;;:::i;23087:695::-;;;;;;;;;;;;;:::i;12103:84::-;;;;;;;;;;;;;:::i;12628:165::-;;;;;;;;;;-1:-1:-1;12628:165:0;;;;;:::i;:::-;;:::i;23980:296::-;;;;;;;;;;-1:-1:-1;23980:296:0;;;;;:::i;:::-;;:::i;5975:34::-;;;;;;;;;;-1:-1:-1;5975:34:0;;;;;;;;16247:322;;;;;;;;;;-1:-1:-1;16247:322:0;;;;;:::i;:::-;;:::i;18010:263::-;;;;;;;;;;-1:-1:-1;18010:263:0;;;;;:::i;:::-;;:::i;6293:40::-;;;;;;;;;;;;;;;;5034:112;;;;;;;;;;-1:-1:-1;5034:112:0;;;;;;;;;;;;;;;;;;;;;;16577:296;;;;;;;;;;-1:-1:-1;16577:296:0;;;;;:::i;:::-;;:::i;12364:133::-;;;;;;;;;;-1:-1:-1;12364:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12466:19:0;;;12448:7;12466:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12364:133;23790:182;;;;;;;;;;;;;:::i;18281:88::-;;;;;;;;;;;;;:::i;5636:195::-;;;;;;;;;;-1:-1:-1;5636:195:0;;;;;;-1:-1:-1;;;;;5636:195:0;;;;;;;;;;;-1:-1:-1;;;;;8935:15:1;;;8917:34;;8987:15;;;;8982:2;8967:18;;8960:43;8829:18;5636:195:0;8650:359:1;17078:699:0;;;;;;;;;;-1:-1:-1;17078:699:0;;;;;:::i;:::-;;:::i;5862:39::-;;;;;;;;;;-1:-1:-1;5862:39:0;;;;;;;;;;;15012:148;;;;;;;;;;-1:-1:-1;15012:148:0;;;;;:::i;:::-;;:::i;18377:303::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;;;;;;;;;18472:15:::1;::::0;::::1;;18464:56;;;::::0;-1:-1:-1;;;18464:56:0;;9952:2:1;18464:56:0::1;::::0;::::1;9934:21:1::0;9991:2;9971:18;;;9964:30;10030;10010:18;;;10003:58;10078:18;;18464:56:0::1;9750:352:1::0;18464:56:0::1;18531:14;18557;18561:10:::0;18557:2:::1;:14;:::i;:::-;18548:23;::::0;:6;:23:::1;:::i;:::-;18531:40;;18600:8;18590:6;:18;;18582:56;;;::::0;-1:-1:-1;;;18582:56:0;;11988:2:1;18582:56:0::1;::::0;::::1;11970:21:1::0;12027:2;12007:18;;;12000:30;12066:27;12046:18;;;12039:55;12111:18;;18582:56:0::1;11786:349:1::0;18582:56:0::1;18649:14;:23:::0;-1:-1:-1;;18377:303:0:o;15435:153::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;15530:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;15530:50:0;;12327:14:1;;12320:22;15530:50:0::1;::::0;::::1;12302:41:1::0;12386:14;;12379:22;12359:18;;;12352:50;15530:11:0;;;::::1;-1:-1:-1::0;;;;;15530:11:0::1;::::0;:26:::1;::::0;12275:18:1;;15530:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15435:153:::0;;:::o;12193:80::-;12241:13;12265:5;12258:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12193:80;:::o;12801:161::-;12878:4;12895:37;12904:10;12916:7;12925:6;12895:8;:37::i;:::-;-1:-1:-1;12950:4:0;12801:161;;;;;:::o;11864:115::-;11919:7;11934;;11945:1;11934:12;11930:31;;11950:8;;;11930:31;-1:-1:-1;11969:7:0;;;11864:115::o;13471:306::-;-1:-1:-1;;;;;13592:19:0;;13571:4;13592:19;;;:11;:19;;;;;;;;13612:10;13592:31;;;;;;;;-1:-1:-1;;13592:52:0;13588:126;;-1:-1:-1;;;;;13661:19:0;;;;;;:11;:19;;;;;;;;13681:10;13661:31;;;;;;;:41;;13696:6;;13661:19;:41;;13696:6;;13661:41;:::i;:::-;;;;-1:-1:-1;;13588:126:0;13733:36;13743:6;13751:9;13762:6;13733:9;:36::i;:::-;13726:43;13471:306;-1:-1:-1;;;;13471:306:0:o;24284:447::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;24419:7:::1;:14;24400:8;:15;:33;24392:67;;;::::0;-1:-1:-1;;;24392:67:0;;13133:2:1;24392:67:0::1;::::0;::::1;13115:21:1::0;13172:2;13152:18;;;13145:30;13211:23;13191:18;;;13184:51;13252:18;;24392:67:0::1;12931:345:1::0;24392:67:0::1;24475:8;24470:254;24493:8;:15;24489:1;:19;;;24470:254;;;24578:9;::::0;;24574:13:::1;::::0;24578:9:::1;::::0;;::::1;::::0;24574:13:::1;:::i;:::-;24563:7;24571:1;24563:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24548:10;12569:7:::0;12596:16;;;;;;;;;;;24538:49:::1;;24530:80;;;::::0;-1:-1:-1;;;24530:80:0;;13760:2:1;24530:80:0::1;::::0;::::1;13742:21:1::0;13799:2;13779:18;;;13772:30;13838:20;13818:18;;;13811:48;13876:18;;24530:80:0::1;13558:342:1::0;24530:80:0::1;24625:87;24642:10;24654:8;24663:1;24654:11;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;24682:9:::1;::::0;;24678:13:::1;::::0;24682:9:::1;::::0;;::::1;::::0;24678:13:::1;:::i;:::-;24667:7;24675:1;24667:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24693:5;24700::::0;24707:4:::1;24625:16;:87::i;:::-;-1:-1:-1::0;24510:3:0;::::1;::::0;::::1;:::i;:::-;;;;24470:254;;;;24284:447:::0;;:::o;15168:141::-;15221:7;12596:16;;;;;;5481:42;12596:16;;;;15260:39;;12596:16;15260:39;:::i;:::-;15249:7;;:51;;;;:::i;:::-;15241:60;;15168:141;:::o;11985:112::-;12037:5;12050:7;;12061:1;12050:12;12046:31;;12066:8;;;12046:31;-1:-1:-1;12085:9:0;;;;;11985:112::o;15786:453::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;15894:14:::1;::::0;::::1;;15893:15;15885:45;;;::::0;-1:-1:-1;;;15885:45:0;;14439:2:1;15885:45:0::1;::::0;::::1;14421:21:1::0;14478:2;14458:18;;;14451:30;14517:19;14497:18;;;14490:47;14554:18;;15885:45:0::1;14237:341:1::0;15885:45:0::1;5193:4;15949:6;:21;;;;:65;;;;;5243:4;15991:7;:23;;;;15949:65;:117;;;;;5297:4;16035:11;:31;;;;15949:117;15941:170;;;::::0;-1:-1:-1;;;15941:170:0;;14785:2:1;15941:170:0::1;::::0;::::1;14767:21:1::0;14824:2;14804:18;;;14797:30;14863:25;14843:18;;;14836:53;14906:18;;15941:170:0::1;14583:347:1::0;15941:170:0::1;16122:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;16158:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;16196:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15786:453::o;15317:110::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;15386:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;15386:33:0;;-1:-1:-1;;;;;431:55:1;;;15386:33:0::1;::::0;::::1;413:74:1::0;15386:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;386:18:1;;15386:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15317:110:::0;:::o;16881:189::-;17010:6;;-1:-1:-1;;;;;17010:6:0;16972:7;12596:16;;;;;;;;;;;5344:5;;17000:41;;17020:21;;17000:41;:::i;:::-;16999:62;;;;:::i;17785:217::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;17915:3:::1;17889:22;:29;;17881:64;;;::::0;-1:-1:-1;;;17881:64:0;;15359:2:1;17881:64:0::1;::::0;::::1;15341:21:1::0;15398:2;15378:18;;;15371:30;15437:24;15417:18;;;15410:52;15479:18;;17881:64:0::1;15157:346:1::0;17881:64:0::1;17956:13;:38:::0;17785:217::o;10587:654::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;-1:-1:-1;;;;;10666:22:0;::::1;10658:96;;;::::0;-1:-1:-1;;;10658:96:0;;15710:2:1;10658:96:0::1;::::0;::::1;15692:21:1::0;15749:2;15729:18;;;15722:30;15788:34;15768:18;;;15761:62;15859:31;15839:18;;;15832:59;15908:19;;10658:96:0::1;15508:425:1::0;10658:96:0::1;-1:-1:-1::0;;;;;;;10773:16:0;::::1;::::0;10765:90:::1;;;::::0;-1:-1:-1;;;10765:90:0;;15710:2:1;10765:90:0::1;::::0;::::1;15692:21:1::0;15749:2;15729:18;;;15722:30;15788:34;15768:18;;;15761:62;15859:31;15839:18;;;15832:59;15908:19;;10765:90:0::1;15508:425:1::0;10765:90:0::1;10886:6;::::0;10866:34:::1;::::0;10886:6:::1;::::0;::::1;-1:-1:-1::0;;;;;10886:6:0::1;10894:5;10866:19;:34::i;:::-;10911:35;10931:8;10941:4;10911:19;:35::i;:::-;10981:6;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;10981:6:0::1;10991:1;12596:16:::0;;;;;;;;;;;10971:21:::1;10967:127;;;11026:6;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;11026:6:0::1;12569:7:::0;12596:16;;;;;;;;;;;11009:73:::1;::::0;11026:6;11034:8;;11044:17:::1;12503:117:::0;11009:73:::1;;10967:127;11133:6;::::0;;-1:-1:-1;;;;;11150:17:0;;::::1;11133:6;11150:17:::0;;::::1;-1:-1:-1::0;;11150:17:0;::::1;;::::0;;;11183:40:::1;::::0;11133:6;;;::::1;;::::0;;;11183:40:::1;::::0;11114:16:::1;::::0;11183:40:::1;10647:594;10587:654:::0;:::o;8099:1726::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;8195:19:::1;::::0;::::1;;8194:20;8186:34;;;::::0;-1:-1:-1;;;8186:34:0;;16140:2:1;8186:34:0::1;::::0;::::1;16122:21:1::0;16179:1;16159:18;;;16152:29;-1:-1:-1;;;16197:18:1;;;16190:31;16238:18;;8186:34:0::1;15938:324:1::0;8186:34:0::1;8263:1;8239:21;:25;:42;;;;8280:1;8268:9;:13;8239:42;8231:78;;;::::0;-1:-1:-1;;;8231:78:0;;16469:2:1;8231:78:0::1;::::0;::::1;16451:21:1::0;16508:2;16488:18;;;16481:30;16547:25;16527:18;;;16520:53;16590:18;;8231:78:0::1;16267:347:1::0;8231:78:0::1;8346:12;8320:11;;:39;;;;;-1:-1:-1::0;;;;;8320:39:0::1;;;;;-1:-1:-1::0;;;;;8320:39:0::1;;;;;;8374:11;;;;;;;;;-1:-1:-1::0;;;;;8374:11:0::1;-1:-1:-1::0;;;;;8374:27:0::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;8374:29:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;;8370:408;;8755:11;::::0;-1:-1:-1;;;8755:11:0;;18115:2:1;8755:11:0::1;::::0;::::1;18097:21:1::0;18154:1;18134:18;;;18127:29;-1:-1:-1;;;18172:18:1;;;18165:31;18213:18;;8755:11:0::1;17913:324:1::0;8370:408:0::1;8526:5;:16;8534:8:::0;8526:5;:16:::1;:::i;:::-;-1:-1:-1::0;8557:7:0::1;:20;8567:10:::0;8557:7;:20:::1;:::i;:::-;-1:-1:-1::0;8592:14:0::1;:35:::0;;;8642:9:::1;:24:::0;;-1:-1:-1;;8642:24:0::1;;::::0;::::1;::::0;;::::1;::::0;;8708:13:::1;::::0;::::1;:::i;:::-;8691:14;;:30;;;;:::i;:::-;8681:7;:40:::0;-1:-1:-1;;;;8808:9:0::1;;;;;;;;;-1:-1:-1::0;;;;;8808:9:0::1;-1:-1:-1::0;;;;;8808:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8797:42:0::1;;8840:9;;;;;;;;;-1:-1:-1::0;;;;;8840:9:0::1;-1:-1:-1::0;;;;;8840:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8797:75;::::0;-1:-1:-1;;;;;;8797:75:0::1;::::0;;;;;;-1:-1:-1;;;;;8935:15:1;;;8797:75:0::1;::::0;::::1;8917:34:1::0;8866:4:0::1;8967:18:1::0;;;8960:43;8829:18;;8797:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8788:6;:84:::0;;-1:-1:-1;;8788:84:0::1;-1:-1:-1::0;;;;;8788:84:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;8883:15:0;;;-1:-1:-1;8883:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;8883:22:0;;::::1;::::0;::::1;::::0;;;8916:19:::1;:26:::0;;;;::::1;::::0;;::::1;::::0;;;8976:7:::1;::::0;8788:84:::1;8966:6:::0;;;::::1;::::0;::::1;8958:15:::0;;;;;;;;:25;;;9020:6;;8999:37;;644:25:1;;;9020:6:0;::::1;::::0;;::::1;::::0;8999:37:::1;::::0;617:18:1;8999:37:0::1;;;;;;;9081:9;::::0;9049:62:::1;::::0;9066:4:::1;::::0;9081:9:::1;::::0;::::1;-1:-1:-1::0;;;;;9081:9:0::1;-1:-1:-1::0;;9049:8:0::1;:62::i;:::-;9131:6;::::0;9147:9:::1;::::0;9122:55:::1;::::0;-1:-1:-1;;;;;9131:6:0::1;::::0;;;::::1;::::0;::::1;::::0;9147:9;;;::::1;;-1:-1:-1::0;;9122:8:0::1;:55::i;:::-;9188:109;9205:6;;;;;;;;;-1:-1:-1::0;;;;;9205:6:0::1;9213:42;9273:3;9258:7;;9268:1;9258:11;;;;:::i;:::-;9257:19;;;;:::i;9188:109::-;;9308;9325:6;;;;;;;;;-1:-1:-1::0;;;;;9325:6:0::1;9333:42;9393:3;9378:7;;9388:1;9378:11;;;;:::i;9308:109::-;-1:-1:-1::0;9445:6:0::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;9445:6:0::1;12569:7:::0;12596:16;;;;;;;;;;;9428:78:::1;::::0;9445:6;9461:4:::1;::::0;9468:17:::1;12503:117:::0;9428:78:::1;-1:-1:-1::0;9519:9:0::1;::::0;9597:4:::1;12569:7:::0;12596:16;;;;;;;;;;;9519:9:::1;::::0;;::::1;-1:-1:-1::0;;;;;9519:9:0::1;::::0;:25:::1;::::0;9552:21:::1;::::0;9742:6:::1;::::0;9519:270:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;9519:270:0;;;-1:-1:-1;;;;;21416:15:1;;;9519:270:0::1;::::0;::::1;21398:34:1::0;21448:18;;;21441:34;;;;9656:1:0::1;21491:18:1::0;;;21484:34;;;21534:18;;;21527:34;9742:6:0::1;::::0;::::1;::::0;;::::1;21577:19:1::0;;;21570:44;9763:15:0::1;21630:19:1::0;;;21623:35;21309:19;;9519:270:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9802:15;:13;:15::i;:::-;8099:1726:::0;:::o;14722:134::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;-1:-1:-1;;;;;14810:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14810:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14722:134::o;14357:222::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;14441:14:::1;::::0;::::1;;14440:15;14432:24;;;::::0;::::1;;14498:4;-1:-1:-1::0;;;;;14475:28:0;::::1;::::0;14467:55:::1;;;::::0;-1:-1:-1;;;14467:55:0;;22182:2:1;14467:55:0::1;::::0;::::1;22164:21:1::0;22221:2;22201:18;;;22194:30;22260:16;22240:18;;;22233:44;22294:18;;14467:55:0::1;21980:338:1::0;14467:55:0::1;14533:11;:38:::0;;-1:-1:-1;;;;;14533:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;14533:38:0;;::::1;::::0;;;::::1;::::0;;14357:222::o;11249:225::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;11328:6:::1;::::0;11308:34:::1;::::0;11328:6:::1;::::0;::::1;-1:-1:-1::0;;;;;11328:6:0::1;11336:5;11308:19;:34::i;:::-;11372:6;::::0;;-1:-1:-1;;11389:19:0;::::1;::::0;;;11424:42:::1;::::0;11372:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;11372:6:0::1;::::0;-1:-1:-1;;11372:6:0;;11424:42:::1;::::0;-1:-1:-1;;11424:42:0::1;11297:177;11249:225::o:0;15596:182::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;15749:14:::1;:21:::0;;-1:-1:-1;;15749:21:0::1;15766:4;15749:21;::::0;;15596:182::o;13785:564::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;13867:7:::1;13862:480;;-1:-1:-1::0;;;;;13891:13:0;;::::1;13907:5;13891:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;13891:21:0::1;::::0;;13927:11:::1;::::0;:34;;-1:-1:-1;;;13927:34:0;;::::1;::::0;::::1;22491:74:1::0;;;;22581:18;;;22574:50;;;;13927:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;22464:18:1;;13927:34:0::1;22323:307:1::0;13862:480:0::1;13998:17;::::0;:22;13994:135:::1;;14087:6;14067:17;;14049:15;:35;;;;:::i;:::-;:44;14041:72;;;::::0;-1:-1:-1;;;14041:72:0;;22837:2:1;14041:72:0::1;::::0;::::1;22819:21:1::0;22876:2;22856:18;;;22849:30;22915:17;22895:18;;;22888:45;22950:18;;14041:72:0::1;22635:339:1::0;14041:72:0::1;-1:-1:-1::0;;;;;14152:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;14151:14;14143:54;;;::::0;-1:-1:-1;;;14143:54:0;;23181:2:1;14143:54:0::1;::::0;::::1;23163:21:1::0;23220:2;23200:18;;;23193:30;23259:29;23239:18;;;23232:57;23306:18;;14143:54:0::1;22979:351:1::0;14143:54:0::1;-1:-1:-1::0;;;;;14212:13:0;;::::1;;::::0;;;14228:4:::1;14212:13;::::0;;;;;;;;:20;;-1:-1:-1;;14212:20:0::1;::::0;::::1;::::0;;14267:15:::1;14247:17;:35:::0;14297:11:::1;::::0;:33;;-1:-1:-1;;;14297:33:0;;::::1;::::0;::::1;22491:74:1::0;;;;22581:18;;;22574:50;14297:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;22464:18:1;;14297:33:0::1;22323:307:1::0;13862:480:0::1;13785:564:::0;;:::o;13288:175::-;10441:6;;13354:4;;10441:6;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;13403:9:::1;::::0;13371:62:::1;::::0;13388:4:::1;::::0;13403:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13403:9:0::1;-1:-1:-1::0;;13371:8:0::1;:62::i;:::-;-1:-1:-1::0;13451:4:0::1;13288:175:::0;:::o;23087:695::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;23149:14:::1;::::0;::::1;;23148:15;23140:52;;;::::0;-1:-1:-1;;;23140:52:0;;23537:2:1;23140:52:0::1;::::0;::::1;23519:21:1::0;23576:2;23556:18;;;23549:30;23615:26;23595:18;;;23588:54;23659:18;;23140:52:0::1;23335:348:1::0;23140:52:0::1;23211:16;::::0;::::1;::::0;::::1;;;23203:53;;;::::0;-1:-1:-1;;;23203:53:0;;23890:2:1;23203:53:0::1;::::0;::::1;23872:21:1::0;23929:2;23909:18;;;23902:30;23968:26;23948:18;;;23941:54;24012:18;;23203:53:0::1;23688:348:1::0;23203:53:0::1;23279:11;::::0;;;::::1;-1:-1:-1::0;;;;;23279:11:0::1;23267:106;;23321:11;:40:::0;;-1:-1:-1;;;;;;23321:40:0::1;23355:4;23321:40:::0;::::1;;::::0;;23267:106:::1;23387:11;::::0;23409:6:::1;::::0;23464:9:::1;::::0;23387:87:::1;::::0;-1:-1:-1;;;23387:87:0;;-1:-1:-1;;;;;23409:6:0;;::::1;23387:87;::::0;::::1;24264:74:1::0;24386:10;23424:12:0::1;24374:23:1::0;24354:18;;;24347:51;24446:18;23446:15:0::1;24434:31:1::0;24414:18;;;24407:59;23464:9:0::1;::::0;;::::1;24482:18:1::0;;;24475:45;23387:11:0;;;::::1;;::::0;:21:::1;::::0;24236:19:1;;23387:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;23500:11:0::1;::::0;23531:6:::1;::::0;-1:-1:-1;;;;;23531:6:0;;::::1;12569:7:::0;12596:16;;;;;;;;;;;;;23500:39;;-1:-1:-1;;;23500:39:0;;::::1;::::0;::::1;644:25:1::0;;;;23500:11:0;;;::::1;;::::0;:20:::1;::::0;617:18:1;;23500:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;23500:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;23500:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;23496:207:::0;::::1;;23611:13;:29:::0;;;;23655:10:::1;:27:::0;23496:207:::1;23713:14;:21:::0;;-1:-1:-1;;23713:21:0::1;23730:4;23713:21;::::0;;23759:15:::1;23745:11;:29:::0;23087:695::o;12103:84::-;12153:13;12177:7;12170:14;;;;;:::i;12628:165::-;12706:4;12723:40;12733:10;12745:9;12756:6;12723:9;:40::i;:::-;-1:-1:-1;12781:4:0;;12628:165;-1:-1:-1;;;12628:165:0:o;23980:296::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;24058:16:::1;::::0;::::1;::::0;::::1;;;24054:111;;;24116:4;-1:-1:-1::0;;;;;24099:22:0;::::1;::::0;24091:62:::1;;;::::0;-1:-1:-1;;;24091:62:0;;24983:2:1;24091:62:0::1;::::0;::::1;24965:21:1::0;25022:2;25002:18;;;24995:30;25061:29;25041:18;;;25034:57;25108:18;;24091:62:0::1;24781:351:1::0;24091:62:0::1;24229:6;::::0;24237:30:::1;::::0;-1:-1:-1;;;24237:30:0;;24261:4:::1;24237:30;::::0;::::1;413:74:1::0;24197:5:0;;-1:-1:-1;;;;;24214:14:0;;::::1;::::0;::::1;::::0;24229:6:::1;::::0;::::1;::::0;;::::1;::::0;24214:14;;24237:15:::1;::::0;386:18:1;;24237:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24214:54;::::0;-1:-1:-1;;;;;;24214:54:0::1;::::0;;;;;;-1:-1:-1;;;;;25518:55:1;;;24214:54:0::1;::::0;::::1;25500:74:1::0;25590:18;;;25583:34;25473:18;;24214:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16247:322::-:0;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;16330:7:::1;:29:::0;;-1:-1:-1;;16330:29:0::1;::::0;::::1;::::0;::::1;;;::::0;;16390:19:::1;16402:7:::0;16330:29;16390:19:::1;:::i;:::-;16370:7;:39:::0;;-1:-1:-1;;16370:39:0::1;::::0;::::1;::::0;;::::1;;;::::0;;16455:9:::1;:17:::0;-1:-1:-1;;16436:36:0::1;::::0;16455:17;;::::1;::::0;::::1;::::0;16436:16:::1;:36;:::i;:::-;16491:7;:17:::0;16420:52:::1;::::0;;::::1;::::0;-1:-1:-1;16491:17:0;;::::1;;:26:::0;-1:-1:-1;16491:26:0::1;16483:78;;;::::0;-1:-1:-1;;;16483:78:0;;26253:2:1;16483:78:0::1;::::0;::::1;26235:21:1::0;26292:2;26272:18;;;26265:30;26331:34;26311:18;;;26304:62;-1:-1:-1;;;26382:18:1;;;26375:37;26429:19;;16483:78:0::1;26051:403:1::0;18010:263:0;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;18119:19:::1;:33:::0;;-1:-1:-1;;18119:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;18163:22:::1;:47:::0;;-1:-1:-1;;18163:47:0::1;::::0;::::1;;;::::0;;18226:39:::1;::::0;2598:41:1;;;18226:39:0::1;::::0;2586:2:1;2571:18;18226:39:0::1;;;;;;;;18010:263:::0;;:::o;16577:296::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;-1:-1:-1;;;;;16687:23:0;::::1;::::0;;::::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;16714:21:0;::::1;::::0;::::1;16687:48;16679:84;;;::::0;-1:-1:-1;;;16679:84:0;;26661:2:1;16679:84:0::1;::::0;::::1;26643:21:1::0;26700:2;26680:18;;;26673:30;26739:25;26719:18;;;26712:53;26782:18;;16679:84:0::1;26459:347:1::0;16679:84:0::1;16774:11;:42:::0;;-1:-1:-1;;;;;16774:42:0;;::::1;-1:-1:-1::0;;16774:42:0;;::::1;;::::0;;;16827:19;:38;;;;;::::1;::::0;::::1;;::::0;;16577:296::o;23790:182::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;23857:16:::1;::::0;::::1;::::0;::::1;;;23856:17;23848:58;;;::::0;-1:-1:-1;;;23848:58:0;;27013:2:1;23848:58:0::1;::::0;::::1;26995:21:1::0;27052:2;27032:18;;;27025:30;27091;27071:18;;;27064:58;27139:18;;23848:58:0::1;26811:352:1::0;23848:58:0::1;23925:6;::::0;23917:47:::1;::::0;-1:-1:-1;;;;;23925:6:0::1;::::0;;::::1;::::0;;;::::1;::::0;23942:21:::1;23917:47:::0;::::1;;;::::0;::::1;::::0;;;23942:21;23925:6;23917:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;18281:88:::0;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;18338:15:::1;:23:::0;;-1:-1:-1;;18338:23:0::1;::::0;;18281:88::o;17078:699::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;17278:16:::1;17258;17248:7;;:26;;;;:::i;:::-;17247:47;;;;:::i;:::-;17231:13;:63:::0;17319:7:::1;::::0;17346:13;;17319:23:::1;::::0;17329:13;;17319:23:::1;:::i;:::-;17318:41;;;;:::i;:::-;17305:10;:54:::0;;;17378:13:::1;::::0;:27:::1;;17370:73;;;::::0;-1:-1:-1;;;17370:73:0;;27370:2:1;17370:73:0::1;::::0;::::1;27352:21:1::0;27409:2;27389:18;;;27382:30;27448:34;27428:18;;;27421:62;-1:-1:-1;;;27499:18:1;;;27492:31;27540:19;;17370:73:0::1;27168:397:1::0;17370:73:0::1;17487:6;::::0;-1:-1:-1;;;;;17487:6:0::1;12569:7:::0;12596:16;;;;;;;;;;;5344:5:::1;::::0;17477:23:::1;::::0;17497:3:::1;17477:23;:::i;:::-;17476:44;;;;:::i;:::-;17462:10;;:58;;17454:106;;;::::0;-1:-1:-1;;;17454:106:0;;27772:2:1;17454:106:0::1;::::0;::::1;27754:21:1::0;27811:2;27791:18;;;27784:30;27850:34;27830:18;;;27823:62;-1:-1:-1;;;27901:18:1;;;27894:33;27944:19;;17454:106:0::1;27570:399:1::0;17454:106:0::1;17603:9;17593:7;;:19;;;;:::i;:::-;17579:10;;:33;;17571:92;;;::::0;-1:-1:-1;;;17571:92:0;;28176:2:1;17571:92:0::1;::::0;::::1;28158:21:1::0;28215:2;28195:18;;;28188:30;28254:34;28234:18;;;28227:62;-1:-1:-1;;;28305:18:1;;;28298:44;28359:19;;17571:92:0::1;27974:410:1::0;17571:92:0::1;17709:9;17699:7;;:19;;;;:::i;:::-;17682:13;;:36;;17674:95;;;::::0;-1:-1:-1;;;17674:95:0;;28176:2:1;17674:95:0::1;::::0;::::1;28158:21:1::0;28215:2;28195:18;;;28188:30;28254:34;28234:18;;;28227:62;-1:-1:-1;;;28305:18:1;;;28298:44;28359:19;;17674:95:0::1;27974:410:1::0;17674:95:0::1;17078:699:::0;;;;:::o;15012:148::-;10441:6;;;;;-1:-1:-1;;;;;10441:6:0;10451:10;10441:20;10433:50;;;;-1:-1:-1;;;10433:50:0;;9606:2:1;10433:50:0;;;9588:21:1;9645:2;9625:18;;;9618:30;-1:-1:-1;;;;;;;;;;;9664:18:1;;;9657:47;9721:18;;10433:50:0;9404:341:1;10433:50:0;-1:-1:-1;;;;;15108:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;15108:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15012:148::o;12970:310::-;-1:-1:-1;;;;;13065:20:0;;13057:52;;;;-1:-1:-1;;;13057:52:0;;28591:2:1;13057:52:0;;;28573:21:1;28630:2;28610:18;;;28603:30;-1:-1:-1;;;28649:18:1;;;28642:49;28708:18;;13057:52:0;28389:343:1;13057:52:0;-1:-1:-1;;;;;13128:21:0;;13120:53;;;;-1:-1:-1;;;13120:53:0;;28591:2:1;13120:53:0;;;28573:21:1;28630:2;28610:18;;;28603:30;-1:-1:-1;;;28649:18:1;;;28642:49;28708:18;;13120:53:0;28389:343:1;13120:53:0;-1:-1:-1;;;;;13186:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13239:33;;644:25:1;;;13239:33:0;;617:18:1;13239:33:0;;;;;;;12970:310;;;:::o;19142:2092::-;19221:4;-1:-1:-1;;;;;19246:18:0;;19238:68;;;;-1:-1:-1;;;19238:68:0;;28939:2:1;19238:68:0;;;28921:21:1;28978:2;28958:18;;;28951:30;29017:34;28997:18;;;28990:62;-1:-1:-1;;;29068:18:1;;;29061:35;29113:19;;19238:68:0;28737:401:1;19238:68:0;-1:-1:-1;;;;;19325:16:0;;19317:64;;;;-1:-1:-1;;;19317:64:0;;29345:2:1;19317:64:0;;;29327:21:1;29384:2;29364:18;;;29357:30;29423:34;29403:18;;;29396:62;-1:-1:-1;;;29474:18:1;;;29467:33;29517:19;;19317:64:0;29143:399:1;19317:64:0;19409:1;19400:6;:10;19392:64;;;;-1:-1:-1;;;19392:64:0;;29749:2:1;19392:64:0;;;29731:21:1;29788:2;29768:18;;;29761:30;29827:34;29807:18;;;29800:62;-1:-1:-1;;;29878:18:1;;;29871:39;29927:19;;19392:64:0;29547:405:1;19392:64:0;-1:-1:-1;;;;;19555:13:0;;19467:8;19555:13;;;:7;:13;;;;;;19467:8;;;;19555:13;;19551:162;;;19591:4;19585:10;;19551:162;;;-1:-1:-1;;;;;19617:11:0;;;;;;:7;:11;;;;;;;;19613:100;;;19652:4;19645:11;;19613:100;;;-1:-1:-1;19697:4:0;19613:100;19727:20;19738:4;19744:2;19727:10;:20::i;:::-;19723:790;;;19768:14;;;;19764:319;;19808:5;19803:265;;19838:34;;-1:-1:-1;;;19838:34:0;;30159:2:1;19838:34:0;;;30141:21:1;30198:2;30178:18;;;30171:30;30237:26;30217:18;;;30210:54;30281:18;;19838:34:0;29957:348:1;19803:265:0;-1:-1:-1;;;;;19903:31:0;;;;;;:25;:31;;;;;;;;19902:32;:66;;;;-1:-1:-1;;;;;;19939:29:0;;;;;;:25;:29;;;;;;;;19938:30;19902:66;19898:170;;;19993:55;;-1:-1:-1;;;19993:55:0;;30512:2:1;19993:55:0;;;30494:21:1;30551:2;30531:18;;;30524:30;30590:34;30570:18;;;30563:62;-1:-1:-1;;;30641:18:1;;;30634:43;30694:19;;19993:55:0;30310:409:1;19898:170:0;20101:3;:22;;;;-1:-1:-1;20108:15:0;;;;20101:22;20097:405;;;20168:16;;;20182:1;20168:16;;;;;;;;20144:21;;20168:16;;;;;;;;;;-1:-1:-1;20168:16:0;20144:40;;20221:4;20203;20208:1;20203:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20203:23:0;;;-1:-1:-1;;;;;20203:23:0;;;;;20255:9;;;;;;;;;-1:-1:-1;;;;;20255:9:0;-1:-1:-1;;;;;20255:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20245:4;20250:1;20245:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20245:26:0;;;:7;;;;;;;;;:26;20314:9;;:37;;-1:-1:-1;;;20314:37:0;;20290:21;;20314:9;;;;;;;;:23;;:37;;20338:6;;20346:4;;20314:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20314:37:0;;;;;;;;;;;;:::i;:::-;20352:1;20314:40;;;;;;;;:::i;:::-;;;;;;;20290:64;;20398:14;;20381:13;:31;;:46;;;;-1:-1:-1;;;;;;20417:10:0;;;;;;:6;:10;;;;;;;;20416:11;20381:46;20373:77;;;;-1:-1:-1;;;20373:77:0;;32638:2:1;20373:77:0;;;32620:21:1;32677:2;32657:18;;;32650:30;32716:20;32696:18;;;32689:48;32754:18;;20373:77:0;32436:342:1;20373:77:0;-1:-1:-1;;;;;;;20469:10:0;;;;;;:6;:10;;;;;:17;;-1:-1:-1;;20469:17:0;20482:4;20469:17;;;20097:405;20529:4;20525:632;;;20555:6;;;;20550:596;;20586:19;;;;;;;20582:549;;;20679:4;20630:28;12596:16;;;;;;;;;;;20736:13;;20712:37;;20708:404;;20796:10;;20837:22;;;;20833:97;;;20894:13;;20884:6;;-1:-1:-1;;;;;20884:6:0;12569:7;12596:16;;;;;;;;;;;5344:5;;20874:33;;;:::i;:::-;20873:54;;;;:::i;:::-;20863:64;;20833:97;20984:7;20960:20;:31;20956:72;;21018:7;20995:30;;20956:72;21054:34;21067:20;21054:12;:34::i;:::-;20751:361;20708:404;20607:524;20582:549;21174:52;21191:4;21197:2;21201:6;21209:3;21214:4;21220:5;21174:16;:52::i;:::-;21167:59;19142:2092;-1:-1:-1;;;;;;;19142:2092:0:o;24739:1055::-;24858:4;24879:20;24890:4;24896:2;24879:10;:20::i;:::-;24875:228;;;24934:11;;:39;;-1:-1:-1;;;24934:39:0;;-1:-1:-1;;;;;33064:15:1;;;24934:39:0;;;33046:34:1;33116:15;;;33096:18;;;33089:43;33148:18;;;33141:34;;;24903:12:0;;24934:11;;;;;:21;;32958:18:1;;24934:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24934:39:0;;;;;;;;-1:-1:-1;;24934:39:0;;;;;;;;;;;;:::i;:::-;;;24930:122;;25041:8;;;24930:122;25024:5;-1:-1:-1;25070:7:0;25066:26;;25081:8;;;25066:26;24901:202;24875:228;-1:-1:-1;;;;;25147:25:0;;25113:12;25147:25;;;:19;:25;;;;;;25128:4;;25147:25;;;:52;;-1:-1:-1;;;;;;25176:23:0;;;;;;:19;:23;;;;;;;;25147:52;25143:99;;;-1:-1:-1;25225:5:0;25143:99;-1:-1:-1;;;;;25252:13:0;;:7;:13;;;;;;;;;;:23;;25269:6;;25252:7;:23;;25269:6;;25252:23;:::i;:::-;;;;-1:-1:-1;25286:22:0;;-1:-1:-1;25312:7:0;25311:55;;25360:6;25311:55;;;25323:34;25333:4;25339:3;25344:4;25350:6;25323:9;:34::i;:::-;25286:80;;25392:14;25377:7;:11;25385:2;-1:-1:-1;;;;;25377:11:0;-1:-1:-1;;;;;25377:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;25437:2;-1:-1:-1;;;;;25422:34:0;25431:4;-1:-1:-1;;;;;25422:34:0;;25441:14;25422:34;;;;644:25:1;;632:2;617:18;;498:177;25422:34:0;;;;;;;;25472:16;;;;;;;25467:298;;25505:28;25524:4;25530:2;25505:18;:28::i;:::-;25553:16;;;;;;;25552:17;:41;;;;;25573:20;25584:4;25590:2;25573:10;:20::i;:::-;25552:77;;;;-1:-1:-1;;;;;;25598:31:0;;;;;;:25;:31;;;;;;;;25597:32;25552:77;:111;;;;-1:-1:-1;;;;;;25634:29:0;;;;;;:25;:29;;;;;;;;25633:30;25552:111;:121;;;;;25668:5;25667:6;25552:121;25548:206;;;25694:44;;-1:-1:-1;;;25694:44:0;;33388:2:1;25694:44:0;;;33370:21:1;33427:2;33407:18;;;33400:30;33466:34;33446:18;;;33439:62;-1:-1:-1;;;33517:18:1;;;33510:32;33559:19;;25694:44:0;33186:398:1;25548:206:0;-1:-1:-1;25782:4:0;;24739:1055;-1:-1:-1;;;;;;;;24739:1055:0:o;18688:446::-;18789:6;;18757:4;;-1:-1:-1;;;;;18781:14:0;;;18789:6;;;;;18781:14;;;;:43;;-1:-1:-1;18818:6:0;;-1:-1:-1;;;;;18812:12:0;;;18818:6;;;;;18812:12;;18781:43;:79;;;;-1:-1:-1;18854:6:0;;;;;-1:-1:-1;;;;;18854:6:0;18841:9;:19;;18781:79;:118;;;;-1:-1:-1;;;;;;18878:21:0;;;;;;:17;:21;;;;;;;;18877:22;18781:118;:159;;;;-1:-1:-1;;;;;;18917:23:0;;;;;;:17;:23;;;;;;;;18916:24;18781:159;:186;;;;-1:-1:-1;;;;;;18957:10:0;;5481:42;18957:10;;18781:186;:219;;;;-1:-1:-1;;;;;;18984:16:0;;;;18781:219;:257;;;;-1:-1:-1;;;;;;19017:21:0;;19033:4;19017:21;;18781:257;:302;;;;-1:-1:-1;19071:11:0;;-1:-1:-1;;;;;19055:28:0;;;19071:11;;;;;19055:28;;18781:302;:345;;;;-1:-1:-1;19114:11:0;;-1:-1:-1;;;;;19100:26:0;;;19114:11;;;;;19100:26;;18781:345;18774:352;18688:446;-1:-1:-1;;;18688:446:0:o;21242:1266::-;6498:6;:13;;-1:-1:-1;;6498:13:0;6507:4;6498:13;;;21325:30:::1;::::0;;::::1;::::0;::::1;::::0;;21348:7:::1;21325:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;6498:6;21370:21;21366:60:::1;;21408:7;;;21366:60;21462:4;21442:26;::::0;;;:11:::1;:26;::::0;;;;;;;21477:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21477:9:0::1;21442:46:::0;;;;;;;;-1:-1:-1;;21442:67:0::1;21438:166;;21546:4;21526:26;::::0;;;:11:::1;:26;::::0;;;;;;;21561:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21561:9:0::1;21526:46:::0;;;;;;;-1:-1:-1;;21526:66:0;;21438:166:::1;21648:16;::::0;;21662:1:::1;21648:16:::0;;;;;::::1;::::0;;21624:21:::1;::::0;21648:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21648:16:0::1;21624:40;;21693:4;21675;21680:1;21675:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;21675:23:0::1;;;-1:-1:-1::0;;;;;21675:23:0::1;;;::::0;::::1;21719:9;;;;;;;;;-1:-1:-1::0;;;;;21719:9:0::1;-1:-1:-1::0;;;;;21719:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21709:4;21714:1;21709:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21709:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21752:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;21752:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;21827:20;;21862:1:::1;::::0;21878:4;;21905::::1;::::0;21925:15:::1;::::0;21752:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21748:246;;21976:7;;;;21748:246;22139:16;::::0;::::1;::::0;22121:14;;22027:21:::1;::::0;22006:18:::1;::::0;;;22107:48:::1;::::0;;::::1;::::0;22108:27:::1;::::0;::::1;22027:21:::0;22108:27:::1;:::i;:::-;22107:48;;;;:::i;:::-;22082:73:::0;-1:-1:-1;22166:24:0::1;22193:27;22082:73:::0;22193:10;:27:::1;:::i;:::-;22235:16;::::0;::::1;::::0;22166:54;;-1:-1:-1;22235:20:0::1;;::::0;22231:133:::1;;22285:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;22285:21:0;;::::1;::::0;22342:5:::1;::::0;22319:16;;22285:67:::1;::::0;;;22319:16;22285:21;22342:5;22285:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22272:80:0;;-1:-1:-1;;22231:133:0::1;22378:14:::0;;:18:::1;;::::0;22374:127:::1;;22426:19:::0;;:63:::1;::::0;-1:-1:-1;;;;;22426:19:0;;::::1;::::0;22479:5:::1;::::0;22458:14;;22426:63:::1;::::0;;;22458:14;22426:19;22479:5;22426:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22413:76:0;;-1:-1:-1;;22374:127:0::1;21314:1194;;;;;;6522:1;-1:-1:-1::0;6534:6:0;:14;;-1:-1:-1;;6534:14:0;;;21242:1266::o;25802:804::-;25890:7;25910:18;25943:3;25939:205;;;-1:-1:-1;25976:9:0;:16;;;25939:205;;;26014:4;26010:134;;;-1:-1:-1;26048:9:0;:17;;;;;;26010:134;;;-1:-1:-1;26111:9:0;:21;;;;;;26010:134;26158:10;26172:1;26158:15;26154:39;;26184:6;26177:13;;;;;26154:39;26215:11;;;;;-1:-1:-1;;;;;26215:11:0;26239:4;26207:37;:110;;;;;26262:13;26279:1;26262:18;:54;;;;26297:13;26314:2;26297:19;26262:54;26203:138;;;-1:-1:-1;26334:4:0;26203:138;26351:17;5344:5;26371:19;26380:10;26371:6;:19;:::i;:::-;:38;;;;:::i;:::-;26351:58;-1:-1:-1;26424:13:0;;26420:141;;26470:4;26454:7;:22;;;;;;;;;;:35;;26480:9;;26454:7;:35;;26480:9;;26454:35;:::i;:::-;;;;-1:-1:-1;;26509:40:0;;644:25:1;;;26532:4:0;;-1:-1:-1;;;;;26509:40:0;;;;;632:2:1;617:18;26509:40:0;;;;;;;26420:141;26580:18;26589:9;26580:6;:18;:::i;22516:563::-;22599:16;;;;;;;22598:17;22590:65;;;;-1:-1:-1;;;22590:65:0;;34611:2:1;22590:65:0;;;34593:21:1;34650:2;34630:18;;;34623:30;34689:34;34669:18;;;34662:62;-1:-1:-1;;;34740:18:1;;;34733:33;34783:19;;22590:65:0;34409:399:1;22590:65:0;22671:20;22682:4;22688:2;22671:10;:20::i;:::-;22670:21;:37;;;;-1:-1:-1;22701:6:0;;-1:-1:-1;;;;;22695:12:0;;;22701:6;;22695:12;22670:37;22666:406;;;-1:-1:-1;;;;;22724:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;22724:30:0;;;22750:4;22724:30;;;;;;22769:19;:25;;;;;:32;;;;;;;;;;22816:16;:23;;-1:-1:-1;;22816:23:0;22724:30;22816:23;;;;;22866:11;;;;22854:114;;22912:11;:40;;-1:-1:-1;;;;;;22912:40:0;22946:4;22912:40;;;;;22854:114;22982:19;:26;;-1:-1:-1;;22982:26:0;;;;;23028:32;;-1:-1:-1;2598:41:1;;23028:32:0;;2586:2:1;2571:18;23028:32:0;2458:187:1;14:248;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;680:118::-;766:5;759:13;752:21;745:5;742:32;732:60;;788:1;785;778:12;803:376;865:6;873;926:2;914:9;905:7;901:23;897:32;894:52;;;942:1;939;932:12;894:52;981:9;968:23;1000:28;1022:5;1000:28;:::i;:::-;1047:5;-1:-1:-1;1104:2:1;1089:18;;1076:32;1117:30;1076:32;1117:30;:::i;:::-;1166:7;1156:17;;;803:376;;;;;:::o;1554:250::-;1639:1;1649:113;1663:6;1660:1;1657:13;1649:113;;;1739:11;;;1733:18;1720:11;;;1713:39;1685:2;1678:10;1649:113;;;-1:-1:-1;;1796:1:1;1778:16;;1771:27;1554:250::o;1809:396::-;1958:2;1947:9;1940:21;1921:4;1990:6;1984:13;2033:6;2028:2;2017:9;2013:18;2006:34;2049:79;2121:6;2116:2;2105:9;2101:18;2096:2;2088:6;2084:15;2049:79;:::i;:::-;2189:2;2168:15;-1:-1:-1;;2164:29:1;2149:45;;;;2196:2;2145:54;;1809:396;-1:-1:-1;;1809:396:1:o;2650:154::-;-1:-1:-1;;;;;2729:5:1;2725:54;2718:5;2715:65;2705:93;;2794:1;2791;2784:12;2809:315;2877:6;2885;2938:2;2926:9;2917:7;2913:23;2909:32;2906:52;;;2954:1;2951;2944:12;2906:52;2993:9;2980:23;3012:31;3037:5;3012:31;:::i;:::-;3062:5;3114:2;3099:18;;;;3086:32;;-1:-1:-1;;;2809:315:1:o;3129:247::-;3188:6;3241:2;3229:9;3220:7;3216:23;3212:32;3209:52;;;3257:1;3254;3247:12;3209:52;3296:9;3283:23;3315:31;3340:5;3315:31;:::i;3381:456::-;3458:6;3466;3474;3527:2;3515:9;3506:7;3502:23;3498:32;3495:52;;;3543:1;3540;3533:12;3495:52;3582:9;3569:23;3601:31;3626:5;3601:31;:::i;:::-;3651:5;-1:-1:-1;3708:2:1;3693:18;;3680:32;3721:33;3680:32;3721:33;:::i;:::-;3381:456;;3773:7;;-1:-1:-1;;;3827:2:1;3812:18;;;;3799:32;;3381:456::o;3842:127::-;3903:10;3898:3;3894:20;3891:1;3884:31;3934:4;3931:1;3924:15;3958:4;3955:1;3948:15;3974:275;4045:2;4039:9;4110:2;4091:13;;-1:-1:-1;;4087:27:1;4075:40;;4145:18;4130:34;;4166:22;;;4127:62;4124:88;;;4192:18;;:::i;:::-;4228:2;4221:22;3974:275;;-1:-1:-1;3974:275:1:o;4254:183::-;4314:4;4347:18;4339:6;4336:30;4333:56;;;4369:18;;:::i;:::-;-1:-1:-1;4414:1:1;4410:14;4426:4;4406:25;;4254:183::o;4442:662::-;4496:5;4549:3;4542:4;4534:6;4530:17;4526:27;4516:55;;4567:1;4564;4557:12;4516:55;4603:6;4590:20;4629:4;4653:60;4669:43;4709:2;4669:43;:::i;:::-;4653:60;:::i;:::-;4747:15;;;4833:1;4829:10;;;;4817:23;;4813:32;;;4778:12;;;;4857:15;;;4854:35;;;4885:1;4882;4875:12;4854:35;4921:2;4913:6;4909:15;4933:142;4949:6;4944:3;4941:15;4933:142;;;5015:17;;5003:30;;5053:12;;;;4966;;4933:142;;;-1:-1:-1;5093:5:1;4442:662;-1:-1:-1;;;;;;4442:662:1:o;5109:1215::-;5227:6;5235;5288:2;5276:9;5267:7;5263:23;5259:32;5256:52;;;5304:1;5301;5294:12;5256:52;5344:9;5331:23;5373:18;5414:2;5406:6;5403:14;5400:34;;;5430:1;5427;5420:12;5400:34;5468:6;5457:9;5453:22;5443:32;;5513:7;5506:4;5502:2;5498:13;5494:27;5484:55;;5535:1;5532;5525:12;5484:55;5571:2;5558:16;5593:4;5617:60;5633:43;5673:2;5633:43;:::i;5617:60::-;5711:15;;;5793:1;5789:10;;;;5781:19;;5777:28;;;5742:12;;;;5817:19;;;5814:39;;;5849:1;5846;5839:12;5814:39;5873:11;;;;5893:217;5909:6;5904:3;5901:15;5893:217;;;5989:3;5976:17;6006:31;6031:5;6006:31;:::i;:::-;6050:18;;5926:12;;;;6088;;;;5893:217;;;6129:5;-1:-1:-1;;6172:18:1;;6159:32;;-1:-1:-1;;6203:16:1;;;6200:36;;;6232:1;6229;6222:12;6200:36;;6255:63;6310:7;6299:8;6288:9;6284:24;6255:63;:::i;:::-;6245:73;;;5109:1215;;;;;:::o;6518:159::-;6585:20;;6645:6;6634:18;;6624:29;;6614:57;;6667:1;6664;6657:12;6614:57;6518:159;;;:::o;6682:328::-;6756:6;6764;6772;6825:2;6813:9;6804:7;6800:23;6796:32;6793:52;;;6841:1;6838;6831:12;6793:52;6864:28;6882:9;6864:28;:::i;:::-;6854:38;;6911:37;6944:2;6933:9;6929:18;6911:37;:::i;:::-;6901:47;;6967:37;7000:2;6989:9;6985:18;6967:37;:::i;:::-;6957:47;;6682:328;;;;;:::o;7015:180::-;7074:6;7127:2;7115:9;7106:7;7102:23;7098:32;7095:52;;;7143:1;7140;7133:12;7095:52;-1:-1:-1;7166:23:1;;7015:180;-1:-1:-1;7015:180:1:o;7200:382::-;7265:6;7273;7326:2;7314:9;7305:7;7301:23;7297:32;7294:52;;;7342:1;7339;7332:12;7294:52;7381:9;7368:23;7400:31;7425:5;7400:31;:::i;7587:256::-;7653:6;7661;7714:2;7702:9;7693:7;7689:23;7685:32;7682:52;;;7730:1;7727;7720:12;7682:52;7753:28;7771:9;7753:28;:::i;:::-;7743:38;;7800:37;7833:2;7822:9;7818:18;7800:37;:::i;:::-;7790:47;;7587:256;;;;;:::o;7848:404::-;7932:6;7940;7993:2;7981:9;7972:7;7968:23;7964:32;7961:52;;;8009:1;8006;7999:12;7961:52;8048:9;8035:23;8067:31;8092:5;8067:31;:::i;:::-;8117:5;-1:-1:-1;8174:2:1;8159:18;;8146:32;8187:33;8146:32;8187:33;:::i;9014:385::-;9100:6;9108;9116;9124;9177:3;9165:9;9156:7;9152:23;9148:33;9145:53;;;9194:1;9191;9184:12;9145:53;-1:-1:-1;;9217:23:1;;;9287:2;9272:18;;9259:32;;-1:-1:-1;9338:2:1;9323:18;;9310:32;;9389:2;9374:18;9361:32;;-1:-1:-1;9014:385:1;-1:-1:-1;9014:385:1:o;10107:127::-;10168:10;10163:3;10159:20;10156:1;10149:31;10199:4;10196:1;10189:15;10223:4;10220:1;10213:15;10239:422;10328:1;10371:5;10328:1;10385:270;10406:7;10396:8;10393:21;10385:270;;;10465:4;10461:1;10457:6;10453:17;10447:4;10444:27;10441:53;;;10474:18;;:::i;:::-;10524:7;10514:8;10510:22;10507:55;;;10544:16;;;;10507:55;10623:22;;;;10583:15;;;;10385:270;;;10389:3;10239:422;;;;;:::o;10666:806::-;10715:5;10745:8;10735:80;;-1:-1:-1;10786:1:1;10800:5;;10735:80;10834:4;10824:76;;-1:-1:-1;10871:1:1;10885:5;;10824:76;10916:4;10934:1;10929:59;;;;11002:1;10997:130;;;;10909:218;;10929:59;10959:1;10950:10;;10973:5;;;10997:130;11034:3;11024:8;11021:17;11018:43;;;11041:18;;:::i;:::-;-1:-1:-1;;11097:1:1;11083:16;;11112:5;;10909:218;;11211:2;11201:8;11198:16;11192:3;11186:4;11183:13;11179:36;11173:2;11163:8;11160:16;11155:2;11149:4;11146:12;11142:35;11139:77;11136:159;;;-1:-1:-1;11248:19:1;;;11280:5;;11136:159;11327:34;11352:8;11346:4;11327:34;:::i;:::-;11397:6;11393:1;11389:6;11385:19;11376:7;11373:32;11370:58;;;11408:18;;:::i;:::-;11446:20;;10666:806;-1:-1:-1;;;10666:806:1:o;11477:131::-;11537:5;11566:36;11593:8;11587:4;11566:36;:::i;11613:168::-;11686:9;;;11717;;11734:15;;;11728:22;;11714:37;11704:71;;11755:18;;:::i;12413:380::-;12492:1;12488:12;;;;12535;;;12556:61;;12610:4;12602:6;12598:17;12588:27;;12556:61;12663:2;12655:6;12652:14;12632:18;12629:38;12626:161;;12709:10;12704:3;12700:20;12697:1;12690:31;12744:4;12741:1;12734:15;12772:4;12769:1;12762:15;12626:161;;12413:380;;;:::o;12798:128::-;12865:9;;;12886:11;;;12883:37;;;12900:18;;:::i;13281:140::-;13339:5;13368:47;13409:4;13399:8;13395:19;13389:4;13368:47;:::i;13426:127::-;13487:10;13482:3;13478:20;13475:1;13468:31;13518:4;13515:1;13508:15;13542:4;13539:1;13532:15;13905:197;13943:3;13971:6;14012:2;14005:5;14001:14;14039:2;14030:7;14027:15;14024:41;;14045:18;;:::i;:::-;14094:1;14081:15;;13905:197;-1:-1:-1;;;13905:197:1:o;14107:125::-;14172:9;;;14193:10;;;14190:36;;;14206:18;;:::i;14935:217::-;14975:1;15001;14991:132;;15045:10;15040:3;15036:20;15033:1;15026:31;15080:4;15077:1;15070:15;15108:4;15105:1;15098:15;14991:132;-1:-1:-1;15137:9:1;;14935:217::o;16619:510::-;16673:5;16726:3;16719:4;16711:6;16707:17;16703:27;16693:55;;16744:1;16741;16734:12;16693:55;16773:6;16767:13;16799:18;16795:2;16792:26;16789:52;;;16821:18;;:::i;:::-;16865:55;16908:2;16889:13;;-1:-1:-1;;16885:27:1;16914:4;16881:38;16865:55;:::i;:::-;16945:2;16936:7;16929:19;16991:3;16984:4;16979:2;16971:6;16967:15;16963:26;16960:35;16957:55;;;17008:1;17005;16998:12;16957:55;17021:77;17095:2;17088:4;17079:7;17075:18;17068:4;17060:6;17056:17;17021:77;:::i;17134:774::-;17249:6;17257;17265;17273;17326:3;17314:9;17305:7;17301:23;17297:33;17294:53;;;17343:1;17340;17333:12;17294:53;17376:9;17370:16;17405:18;17446:2;17438:6;17435:14;17432:34;;;17462:1;17459;17452:12;17432:34;17485:61;17538:7;17529:6;17518:9;17514:22;17485:61;:::i;:::-;17475:71;;17592:2;17581:9;17577:18;17571:25;17555:41;;17621:2;17611:8;17608:16;17605:36;;;17637:1;17634;17627:12;17605:36;;17660:63;17715:7;17704:8;17693:9;17689:24;17660:63;:::i;:::-;17650:73;;;17763:2;17752:9;17748:18;17742:25;17732:35;;17810:2;17799:9;17795:18;17789:25;17854:4;17847:5;17843:16;17836:5;17833:27;17823:55;;17874:1;17871;17864:12;17823:55;17134:774;;;;-1:-1:-1;17134:774:1;;-1:-1:-1;;17134:774:1:o;18368:545::-;18470:2;18465:3;18462:11;18459:448;;;18506:1;18531:5;18527:2;18520:17;18576:4;18572:2;18562:19;18646:2;18634:10;18630:19;18627:1;18623:27;18617:4;18613:38;18682:4;18670:10;18667:20;18664:47;;;-1:-1:-1;18705:4:1;18664:47;18760:2;18755:3;18751:12;18748:1;18744:20;18738:4;18734:31;18724:41;;18815:82;18833:2;18826:5;18823:13;18815:82;;;18878:17;;;18859:1;18848:13;18815:82;;19089:1352;19215:3;19209:10;19242:18;19234:6;19231:30;19228:56;;;19264:18;;:::i;:::-;19293:97;19383:6;19343:38;19375:4;19369:11;19343:38;:::i;:::-;19337:4;19293:97;:::i;:::-;19445:4;;19509:2;19498:14;;19526:1;19521:663;;;;20228:1;20245:6;20242:89;;;-1:-1:-1;20297:19:1;;;20291:26;20242:89;-1:-1:-1;;19046:1:1;19042:11;;;19038:24;19034:29;19024:40;19070:1;19066:11;;;19021:57;20344:81;;19491:944;;19521:663;18315:1;18308:14;;;18352:4;18339:18;;-1:-1:-1;;19557:20:1;;;19675:236;19689:7;19686:1;19683:14;19675:236;;;19778:19;;;19772:26;19757:42;;19870:27;;;;19838:1;19826:14;;;;19705:19;;19675:236;;;19679:3;19939:6;19930:7;19927:19;19924:201;;;20000:19;;;19994:26;-1:-1:-1;;20083:1:1;20079:14;;;20095:3;20075:24;20071:37;20067:42;20052:58;20037:74;;19924:201;-1:-1:-1;;;;;20171:1:1;20155:14;;;20151:22;20138:36;;-1:-1:-1;19089:1352:1:o;20446:251::-;20516:6;20569:2;20557:9;20548:7;20544:23;20540:32;20537:52;;;20585:1;20582;20575:12;20537:52;20617:9;20611:16;20636:31;20661:5;20636:31;:::i;21669:306::-;21757:6;21765;21773;21826:2;21814:9;21805:7;21801:23;21797:32;21794:52;;;21842:1;21839;21832:12;21794:52;21871:9;21865:16;21855:26;;21921:2;21910:9;21906:18;21900:25;21890:35;;21965:2;21954:9;21950:18;21944:25;21934:35;;21669:306;;;;;:::o;24531:245::-;24610:6;24618;24671:2;24659:9;24650:7;24646:23;24642:32;24639:52;;;24687:1;24684;24677:12;24639:52;-1:-1:-1;;24710:16:1;;24766:2;24751:18;;;24745:25;24710:16;;24745:25;;-1:-1:-1;24531:245:1:o;25137:184::-;25207:6;25260:2;25248:9;25239:7;25235:23;25231:32;25228:52;;;25276:1;25273;25266:12;25228:52;-1:-1:-1;25299:16:1;;25137:184;-1:-1:-1;25137:184:1:o;25628:245::-;25695:6;25748:2;25736:9;25727:7;25723:23;25719:32;25716:52;;;25764:1;25761;25754:12;25716:52;25796:9;25790:16;25815:28;25837:5;25815:28;:::i;25878:168::-;25945:6;25971:10;;;25983;;;25967:27;;26006:11;;;26003:37;;;26020:18;;:::i;:::-;26003:37;25878:168;;;;:::o;30724:484::-;30777:3;30815:5;30809:12;30842:6;30837:3;30830:19;30868:4;30897:2;30892:3;30888:12;30881:19;;30934:2;30927:5;30923:14;30955:1;30965:218;30979:6;30976:1;30973:13;30965:218;;;31044:13;;-1:-1:-1;;;;;31040:62:1;31028:75;;31123:12;;;;31158:15;;;;31001:1;30994:9;30965:218;;;-1:-1:-1;31199:3:1;;30724:484;-1:-1:-1;;;;;30724:484:1:o;31213:332::-;31420:6;31409:9;31402:25;31463:2;31458;31447:9;31443:18;31436:30;31383:4;31483:56;31535:2;31524:9;31520:18;31512:6;31483:56;:::i;31550:881::-;31645:6;31676:2;31719;31707:9;31698:7;31694:23;31690:32;31687:52;;;31735:1;31732;31725:12;31687:52;31768:9;31762:16;31801:18;31793:6;31790:30;31787:50;;;31833:1;31830;31823:12;31787:50;31856:22;;31909:4;31901:13;;31897:27;-1:-1:-1;31887:55:1;;31938:1;31935;31928:12;31887:55;31967:2;31961:9;31990:60;32006:43;32046:2;32006:43;:::i;31990:60::-;32084:15;;;32166:1;32162:10;;;;32154:19;;32150:28;;;32115:12;;;;32190:19;;;32187:39;;;32222:1;32219;32212:12;32187:39;32246:11;;;;32266:135;32282:6;32277:3;32274:15;32266:135;;;32348:10;;32336:23;;32299:12;;;;32379;;;;32266:135;;33589:605;33888:6;33877:9;33870:25;33931:6;33926:2;33915:9;33911:18;33904:34;33974:3;33969:2;33958:9;33954:18;33947:31;33851:4;33995:57;34047:3;34036:9;34032:19;34024:6;33995:57;:::i;:::-;-1:-1:-1;;;;;34088:55:1;;;;34083:2;34068:18;;34061:83;-1:-1:-1;34175:3:1;34160:19;34153:35;33987:65;33589:605;-1:-1:-1;;;33589:605:1:o

Swarm Source

ipfs://ea5c209f07a9ef72d40de6af9da2af1850ee0717d9a9f98a2432e9169965b1ff

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.