ETH Price: $3,407.75 (-1.83%)
Gas: 15 Gwei

Contract

0xD9ED35075F47078160170A74459A5AF6BdBbB2C2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve196669112024-04-16 8:39:5998 days ago1713256799IN
0xD9ED3507...6BdBbB2C2
0 ETH0.000447999.60834014
Approve196043752024-04-07 14:20:59107 days ago1712499659IN
0xD9ED3507...6BdBbB2C2
0 ETH0.000968820.77819611
Approve195621472024-04-01 16:24:11113 days ago1711988651IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0018534339.80224499
Approve194735182024-03-20 4:24:47125 days ago1710908687IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0013947330.13827768
Approve193139722024-02-26 19:58:59147 days ago1708977539IN
0xD9ED3507...6BdBbB2C2
0 ETH0.00247253.08596887
Approve193117322024-02-26 12:26:11148 days ago1708950371IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0015394533.059598
Approve193039342024-02-25 10:14:59149 days ago1708856099IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0010760523.10816696
Approve192833942024-02-22 13:17:59152 days ago1708607879IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0020908844.90147023
Approve192719972024-02-20 22:50:59153 days ago1708469459IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0029785563.8818863
Transfer192682252024-02-20 10:07:59154 days ago1708423679IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0037471132.46641505
Approve192671182024-02-20 6:25:11154 days ago1708410311IN
0xD9ED3507...6BdBbB2C2
0 ETH0.000568921.55765009
Approve192671082024-02-20 6:23:11154 days ago1708410191IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0011221324.24152023
Transfer192670962024-02-20 6:20:47154 days ago1708410047IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0031305824.50533667
Approve192670872024-02-20 6:18:59154 days ago1708409939IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0005893822.3338318
Approve192670462024-02-20 6:10:47154 days ago1708409447IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0012678227.38868186
Approve192670042024-02-20 6:02:23154 days ago1708408943IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0012352326.69154332
Transfer192669892024-02-20 5:59:23154 days ago1708408763IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0021773123.27408747
Transfer192669662024-02-20 5:54:47154 days ago1708408487IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0018326719.59263206
Approve192669252024-02-20 5:46:35154 days ago1708407995IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0005181219.64225498
Approve192668162024-02-20 5:24:47154 days ago1708406687IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0005418420.54167652
Approve192666612024-02-20 4:53:23154 days ago1708404803IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0005432620.59524561
Approve192619812024-02-19 13:09:35155 days ago1708348175IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0023106349.62063215
Transfer192619632024-02-19 13:05:47155 days ago1708347947IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0047983743.37432765
Approve192600642024-02-19 6:40:47155 days ago1708324847IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0011926825.61272951
Approve192589002024-02-19 2:43:35155 days ago1708310615IN
0xD9ED3507...6BdBbB2C2
0 ETH0.0009242419.84796388
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
196043762024-04-07 14:21:11107 days ago1712499671
0xD9ED3507...6BdBbB2C2
0.0037001 ETH
196043762024-04-07 14:21:11107 days ago1712499671
0xD9ED3507...6BdBbB2C2
0.0037001 ETH
195621472024-04-01 16:24:11113 days ago1711988651
0xD9ED3507...6BdBbB2C2
0.00404571 ETH
195621472024-04-01 16:24:11113 days ago1711988651
0xD9ED3507...6BdBbB2C2
0.00404571 ETH
194735202024-03-20 4:25:11125 days ago1710908711
0xD9ED3507...6BdBbB2C2
0.00452707 ETH
194735202024-03-20 4:25:11125 days ago1710908711
0xD9ED3507...6BdBbB2C2
0.00452707 ETH
193906582024-03-08 13:10:11137 days ago1709903411
0xD9ED3507...6BdBbB2C2
0.00487116 ETH
193906582024-03-08 13:10:11137 days ago1709903411
0xD9ED3507...6BdBbB2C2
0.00487116 ETH
193039362024-02-25 10:15:23149 days ago1708856123
0xD9ED3507...6BdBbB2C2
0.01038031 ETH
193039362024-02-25 10:15:23149 days ago1708856123
0xD9ED3507...6BdBbB2C2
0.01038031 ETH
192719982024-02-20 22:51:11153 days ago1708469471
0xD9ED3507...6BdBbB2C2
0.01082359 ETH
192719982024-02-20 22:51:11153 days ago1708469471
0xD9ED3507...6BdBbB2C2
0.01082359 ETH
192671222024-02-20 6:25:59154 days ago1708410359
0xD9ED3507...6BdBbB2C2
0.01214499 ETH
192671222024-02-20 6:25:59154 days ago1708410359
0xD9ED3507...6BdBbB2C2
0.01214499 ETH
192671112024-02-20 6:23:47154 days ago1708410227
0xD9ED3507...6BdBbB2C2
0.00915649 ETH
192671112024-02-20 6:23:47154 days ago1708410227
0xD9ED3507...6BdBbB2C2
0.00915649 ETH
192670052024-02-20 6:02:35154 days ago1708408955
0xD9ED3507...6BdBbB2C2
0.00977533 ETH
192670052024-02-20 6:02:35154 days ago1708408955
0xD9ED3507...6BdBbB2C2
0.00977533 ETH
192668942024-02-20 5:40:23154 days ago1708407623
0xD9ED3507...6BdBbB2C2
0.00888797 ETH
192668942024-02-20 5:40:23154 days ago1708407623
0xD9ED3507...6BdBbB2C2
0.00888797 ETH
192619832024-02-19 13:09:59155 days ago1708348199
0xD9ED3507...6BdBbB2C2
0.00771831 ETH
192619832024-02-19 13:09:59155 days ago1708348199
0xD9ED3507...6BdBbB2C2
0.00771831 ETH
192596902024-02-19 5:24:23155 days ago1708320263
0xD9ED3507...6BdBbB2C2
0.00932976 ETH
192596902024-02-19 5:24:23155 days ago1708320263
0xD9ED3507...6BdBbB2C2
0.00932976 ETH
192589352024-02-19 2:50:59155 days ago1708311059
0xD9ED3507...6BdBbB2C2
0.01244753 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TitanTracker

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-29
*/

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

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

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

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

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

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

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

contract TitanTracker is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 10_000_000;
    string constant private _name = "TitanTracker";
    string constant private _symbol = "$TITAN";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

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

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

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0xb88ec9487d0816561bc99F1912AD79f9a58cAF7d);
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 25) / 10000;
    uint256 private _maxWalletSize = (_tTotal * 5) / 1000;

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

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

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

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

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

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

    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","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":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060028190556009805460ff1916600117905560e06040526109c4608081905260a05260c052600a805465ffffffffffff19166309c409c4178155600d8054600161ff0160a01b03191673b88ec9487d0816561bc99f1912ad79f9a58caf7d179055601181905561271090620000799060129062000327565b6200008890629896806200033f565b620000959060196200033f565b620000a1919062000359565b6012556103e86012600a620000b7919062000327565b620000c690629896806200033f565b620000d39060056200033f565b620000df919062000359565b6013556014805461ffff19169055601680546001600160a01b031916331790556200010d6012600a62000327565b6200011c90629896806200033f565b601680546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001706012600a62000327565b6200017f90629896806200033f565b60405190815260200160405180910390a3601680546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055955490941683526004909152902080549092161790556200037c565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002695781600019048211156200024d576200024d62000212565b808516156200025b57918102915b93841c93908002906200022d565b509250929050565b600082620002825750600162000321565b81620002915750600062000321565b8160018114620002aa5760028114620002b557620002d5565b600191505062000321565b60ff841115620002c957620002c962000212565b50506001821b62000321565b5060208310610133831016604e8410600b8410161715620002fa575081810a62000321565b62000306838362000228565b80600019048211156200031d576200031d62000212565b0290505b92915050565b60006200033860ff84168362000271565b9392505050565b808202811582820484141762000321576200032162000212565b6000826200037757634e487b7160e01b600052601260045260246000fd5b500490565b61405d806200038c6000396000f3fe6080604052600436106103b15760003560e01c806350a8e016116101e7578063a9059cbb1161010d578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610b1b578063fdb78c0e14610b3b578063fe575a8714610b5c578063feadde9c14610b7c57600080fd5b8063eafb5a3c14610aa6578063eb50e70e14610ac6578063ee5d9c2d14610ae6578063eec2744e14610afb57600080fd5b8063b7df8b36116100dc578063b7df8b3614610a06578063bfc2fc3514610a20578063c6a276c214610a40578063dd62ed3e14610a6057600080fd5b8063a9059cbb146109c6578063ab558e4d146109e6578063b1b08f7114610667578063b3d514fb1461066757600080fd5b8063715018a611610185578063893d20e811610154578063893d20e81461094f5780638a63bd9b1461096d5780638a8c523c1461098257806395d89b411461099757600080fd5b8063715018a6146108e557806375f0a874146108fa57806378648edf1461091a57806380c581d11461092f57600080fd5b80635c24b074116101c15780635c24b074146108575780635cce86cd146108775780636ebd0078146108b057806370a08231146108c557600080fd5b806350a8e01614610802578063590ffdce146108215780635a6f09181461084157600080fd5b80632610eaca116102d757806336fddb041161026a5780634bbb93eb116102395780634bbb93eb146107695780634e718e48146107895780634fb2e45d146107a95780634fbee193146107c957600080fd5b806336fddb04146106ef5780633f3cf56c1461070f578063452ed4f11461072f5780634ada218b1461074f57600080fd5b80632e8fa821116102a65780632e8fa8211461067d578063313ce5671461069357806332cde664146106af57806333251a0b146106cf57600080fd5b80632610eaca1461061c578063285777511461063c5780632b112e49146106525780632b28fc7a1461066757600080fd5b806307dd79e01161034f57806313b4a7f41161031e57806313b4a7f4146105a757806318160ddd146105c757806323b872dd146105dc57806326003957146105fc57600080fd5b806307dd79e01461050f578063095ea7b3146105395780630dcbcf1c146105595780630fa604e41461059257600080fd5b806305bbedb61161038b57806305bbedb614610436578063069d955f1461045657806306fdde03146104ac5780630758d924146104ea57600080fd5b806303fd2a45146103bd5780630445b667146103f0578063044df7261461041457600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103fc57600080fd5b50610406600e5481565b6040519081526020016103e7565b34801561042057600080fd5b5061043461042f36600461384e565b610b9c565b005b34801561044257600080fd5b5061043461045136600461397b565b610c40565b34801561046257600080fd5b50600a546104879061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103e7565b3480156104b857600080fd5b5060408051808201909152600c81526b2a34ba30b72a3930b1b5b2b960a11b60208201525b6040516103e791906139c2565b3480156104f657600080fd5b50600b546103d39061010090046001600160a01b031681565b34801561051b57600080fd5b50600b546105299060ff1681565b60405190151581526020016103e7565b34801561054557600080fd5b50610529610554366004613a10565b610ce7565b34801561056557600080fd5b50610529610574366004613a3c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561059e57600080fd5b50610406610cfe565b3480156105b357600080fd5b506104346105c2366004613a59565b610d1e565b3480156105d357600080fd5b50610406610ebe565b3480156105e857600080fd5b506105296105f7366004613a87565b610ed9565b34801561060857600080fd5b50610434610617366004613ac8565b610f51565b34801561062857600080fd5b50610434610637366004613aea565b61106c565b34801561064857600080fd5b5061040660115481565b34801561065e57600080fd5b506104066111e9565b34801561067357600080fd5b506104066109c481565b34801561068957600080fd5b50610406600f5481565b34801561069f57600080fd5b50604051601281526020016103e7565b3480156106bb57600080fd5b506104346106ca366004613bbc565b61122d565b3480156106db57600080fd5b506104346106ea366004613a3c565b611357565b3480156106fb57600080fd5b5061043461070a366004613bff565b6113eb565b34801561071b57600080fd5b5061043461072a366004613ac8565b611440565b34801561073b57600080fd5b50600c546103d3906001600160a01b031681565b34801561075b57600080fd5b506014546105299060ff1681565b34801561077557600080fd5b50610406610784366004613c1d565b611574565b34801561079557600080fd5b506104346107a4366004613c1d565b6115a6565b3480156107b557600080fd5b506104346107c4366004613a3c565b61161f565b3480156107d557600080fd5b506105296107e4366004613a3c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561080e57600080fd5b5060145461052990610100900460ff1681565b34801561082d57600080fd5b5061043461083c366004613bff565b611748565b34801561084d57600080fd5b5061040660155481565b34801561086357600080fd5b50610434610872366004613a3c565b61179d565b34801561088357600080fd5b50610529610892366004613a3c565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108bc57600080fd5b50610406611941565b3480156108d157600080fd5b506104066108e0366004613a3c565b61195c565b3480156108f157600080fd5b50610434611977565b34801561090657600080fd5b50600d546103d3906001600160a01b031681565b34801561092657600080fd5b50610434611a70565b34801561093b57600080fd5b5061043461094a366004613bff565b611aa9565b34801561095b57600080fd5b506016546001600160a01b03166103d3565b34801561097957600080fd5b50610529611c67565b34801561098e57600080fd5b50610434611cb9565b3480156109a357600080fd5b50604080518082019091526006815265122a24aa20a760d11b60208201526104dd565b3480156109d257600080fd5b506105296109e1366004613a10565b611eef565b3480156109f257600080fd5b50610434610a01366004613a3c565b611f06565b348015610a1257600080fd5b506010546105299060ff1681565b348015610a2c57600080fd5b50610434610a3b36600461384e565b612082565b348015610a4c57600080fd5b50610434610a5b366004613a3c565b61210f565b348015610a6c57600080fd5b50610406610a7b366004613a59565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ab257600080fd5b50610434610ac1366004613a3c565b612172565b348015610ad257600080fd5b50610434610ae1366004613a3c565b612548565b348015610af257600080fd5b506104346125ea565b348015610b0757600080fd5b50610434610b16366004613bff565b6126a5565b348015610b2757600080fd5b50610434610b36366004613c36565b612710565b348015610b4757600080fd5b50600d5461052990600160a81b900460ff1681565b348015610b6857600080fd5b50610529610b77366004613a3c565b61291c565b348015610b8857600080fd5b50610434610b97366004613bff565b612991565b6016546001600160a01b03163314610bcf5760405162461bcd60e51b8152600401610bc690613c68565b60405180910390fd5b60145460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c2457600080fd5b505af1158015610c38573d6000803e3d6000fd5b505050505050565b6016546001600160a01b03163314610c6a5760405162461bcd60e51b8152600401610bc690613c68565b606482511115610cb05760405162461bcd60e51b81526020600482015260116024820152702a37b79036b0b73c9030ba1037b731b29760791b6044820152606401610bc6565b6014546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610c0a9085908590600401613cd7565b6000610cf43384846129e6565b5060015b92915050565b6000610d0c6012600a613df5565b601354610d199190613e04565b905090565b6016546001600160a01b03163314610d485760405162461bcd60e51b8152600401610bc690613c68565b60095460ff16610d5757600080fd5b6001600160a01b0382163014801590610d7957506001600160a01b0381163014155b8015610d935750600c546001600160a01b03838116911614155b8015610dad5750600c546001600160a01b03828116911614155b610de75760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610bc6565b806001600160a01b0316826001600160a01b031603610e49576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610e45908290611748565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610eb3908390611748565b610e45816001611748565b6000610ecc6012600a613df5565b610d199062989680613e26565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610f3e576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610f38908490613e3d565b90915550505b610f49848484612adf565b949350505050565b6016546001600160a01b03163314610f7b5760405162461bcd60e51b8152600401610bc690613c68565b6064610f896012600a613df5565b610f969062989680613e26565b610fa09190613e04565b8183610fae6012600a613df5565b610fbb9062989680613e26565b610fc59190613e26565b610fcf9190613e04565b10156110365760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610bc6565b80826110446012600a613df5565b6110519062989680613e26565b61105b9190613e26565b6110659190613e04565b6013555050565b6016546001600160a01b031633146110965760405162461bcd60e51b8152600401610bc690613c68565b80518251146110df5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610bc6565b60005b82518161ffff1610156111e4576110fb6012600a613df5565b828261ffff168151811061111157611111613e50565b60200260200101516111239190613e26565b61112c3361195c565b101561116f5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610bc6565b6111d133848361ffff168151811061118957611189613e50565b60200260200101516012600a61119f9190613df5565b858561ffff16815181106111b5576111b5613e50565b60200260200101516111c79190613e26565b6000806001612fe2565b50806111dc81613e66565b9150506110e2565b505050565b60006111f5600061195c565b61120061dead61195c565b61120a9190613e87565b6112166012600a613df5565b6112239062989680613e26565b610d199190613e3d565b6016546001600160a01b031633146112575760405162461bcd60e51b8152600401610bc690613c68565b600b5460ff161561129e5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610bc6565b6109c48361ffff16111580156112ba57506109c48261ffff1611155b80156112cc57506109c48161ffff1611155b6113185760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bc6565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6016546001600160a01b031633146113815760405162461bcd60e51b8152600401610bc690613c68565b6014546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b1580156113d057600080fd5b505af11580156113e4573d6000803e3d6000fd5b5050505050565b6016546001600160a01b031633146114155760405162461bcd60e51b8152600401610bc690613c68565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6016546001600160a01b0316331461146a5760405162461bcd60e51b8152600401610bc690613c68565b6103e86114796012600a613df5565b6114869062989680613e26565b611491906005613e26565b61149b9190613e04565b81836114a96012600a613df5565b6114b69062989680613e26565b6114c09190613e26565b6114ca9190613e04565b101561153e5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bc6565b808261154c6012600a613df5565b6115599062989680613e26565b6115639190613e26565b61156d9190613e04565b6012555050565b600c54600090612710908390611592906001600160a01b031661195c565b61159c9190613e26565b610cf89190613e04565b6016546001600160a01b031633146115d05760405162461bcd60e51b8152600401610bc690613c68565b609681111561161a5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610bc6565b601155565b6016546001600160a01b031633146116495760405162461bcd60e51b8152600401610bc690613c68565b6001600160a01b03811661166f5760405162461bcd60e51b8152600401610bc690613e9a565b61deac196001600160a01b0382160161169a5760405162461bcd60e51b8152600401610bc690613e9a565b6016546116b1906001600160a01b03166000611748565b6116bc816001611748565b6016546000906116d4906001600160a01b031661195c565b11156116f6576016546116f4906001600160a01b0316826111c78261195c565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146117725760405162461bcd60e51b8152600401610bc690613c68565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146117c75760405162461bcd60e51b8152600401610bc690613c68565b60145460ff16156117d757600080fd5b306001600160a01b038216036118205760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610bc6565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156118a6575060408051601f3d908101601f191682019092526118a391810190613ef7565b60015b6118af57600080fd5b600b8054610100600160a81b0319166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601654925461191f93831692919004166000196129e6565b600b546111e490309061010090046001600160a01b03166000196129e6565b50565b600061194f6012600a613df5565b601254610d199190613e04565b6001600160a01b031660009081526020819052604090205490565b6016546001600160a01b031633146119a15760405162461bcd60e51b8152600401610bc690613c68565b60145460ff16611a0b5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610bc6565b601654611a22906001600160a01b03166000611748565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b03163314611a9a5760405162461bcd60e51b8152600401610bc690613c68565b600b805460ff19166001179055565b6016546001600160a01b03163314611ad35760405162461bcd60e51b8152600401610bc690613c68565b80611b46576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610c2457600080fd5b60025415611b9f576203f48060025442611b609190613e3d565b11611b9f5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610bc6565b6001600160a01b03821660009081526001602052604090205460ff1615611c085760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610bc6565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c0a565b6016546000906001600160a01b03163314611c945760405162461bcd60e51b8152600401610bc690613c68565b600b54611cb390309061010090046001600160a01b03166000196129e6565b50600190565b6016546001600160a01b03163314611ce35760405162461bcd60e51b8152600401610bc690613c68565b60145460ff1615611d365760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bc6565b601454610100900460ff16611d8d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bc6565b6014546201000090046001600160a01b0316611dbd576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611e2f57600080fd5b505af1925050508015611e40575060015b50601454600c546001600160a01b03620100009092048216916325a71cae91611e69911661195c565b6040518263ffffffff1660e01b8152600401611e8791815260200190565b60408051808303816000875af1925050508015611ec1575060408051601f3d908101601f19168201909252611ebe91810190613f26565b60015b15611ed057600e91909155600f555b6014805460ff1990811660011790915560098054909116905542601555565b6000611efc338484612adf565b5060019392505050565b6016546001600160a01b03163314611f305760405162461bcd60e51b8152600401610bc690613c68565b601454610100900460ff1615611f9857306001600160a01b03821603611f985760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610bc6565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120139190613f4a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561205e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e49190613f63565b6016546001600160a01b031633146120ac5760405162461bcd60e51b8152600401610bc690613c68565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146121395760405162461bcd60e51b8152600401610bc690613c68565b6014546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016113b6565b6016546001600160a01b0316331461219c5760405162461bcd60e51b8152600401610bc690613c68565b601454610100900460ff16156121f45760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610bc6565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225d9190613f80565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ce9190613f80565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612319573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233d9190613f80565b600c546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166124d357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cc9190613f80565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243d9190613f80565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561248a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ae9190613f80565b600c80546001600160a01b0319166001600160a01b03929092169190911790556124ef565b600c80546001600160a01b0319166001600160a01b0383161790555b600b8054610100600160a81b0319166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff1916909117905591546111e49230929104166000196129e6565b6016546001600160a01b031633146125725760405162461bcd60e51b8152600401610bc690613c68565b6001600160a01b0381166125c85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610bc6565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b031633146126145760405162461bcd60e51b8152600401610bc690613c68565b601454610100900460ff161561266c5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bc6565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561193e573d6000803e3d6000fd5b6016546001600160a01b031633146126cf5760405162461bcd60e51b8152600401610bc690613c68565b6014546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c0a565b6016546001600160a01b0316331461273a5760405162461bcd60e51b8152600401610bc690613c68565b82846127486012600a613df5565b6127559062989680613e26565b61275f9190613e26565b6127699190613e04565b600e55808261277a6012600a613df5565b6127879062989680613e26565b6127919190613e26565b61279b9190613e04565b600f819055600e5411156127fb5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610bc6565b600c5461271090612814906001600160a01b031661195c565b61281f906096613e26565b6128299190613e04565b600f5411156128865760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610bc6565b620f42406128966012600a613df5565b6128a39062989680613e26565b6128ad9190613e04565b600f5410156128ce5760405162461bcd60e51b8152600401610bc690613f9d565b620f42406128de6012600a613df5565b6128eb9062989680613e26565b6128f59190613e04565b600e5410156129165760405162461bcd60e51b8152600401610bc690613f9d565b50505050565b60145460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561296d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190613f63565b6016546001600160a01b031633146129bb5760405162461bcd60e51b8152600401610bc690613c68565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612a325760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bc6565b6001600160a01b038216612a7e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bc6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612b455760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc6565b6001600160a01b038316612ba75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc6565b60008211612c095760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bc6565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612c375760019250612c65565b6001600160a01b03861660009081526001602052604090205460ff1615612c615760019150612c65565b5060015b612c6f8787613295565b15612ee65760145460ff16612d705780612ccb5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bc6565b6001600160a01b03871660009081526005602052604090205460ff16158015612d0d57506001600160a01b03861660009081526005602052604090205460ff16155b15612d705760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610bc6565b8280612d795750815b15612e28576001600160a01b03871660009081526007602052604090205460ff16158015612dc057506001600160a01b03861660009081526007602052604090205460ff16155b15612e2857601254851115612e285760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610bc6565b600b546001600160a01b038781166101009092041614801590612e49575081155b15612ee6576001600160a01b03861660009081526007602052604090205460ff16612ee65760135485612e7b8861195c565b612e859190613e87565b1115612ee65760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610bc6565b8115612fc957600d54600160a01b900460ff16612fc957600d54600160a81b900460ff168015612f2f57506001600160a01b03861660009081526008602052604090205460ff16155b8015612f5457506001600160a01b03871660009081526008602052604090205460ff16155b15612fc9576000612f643061195c565b9050600e548110612fc757600f5460105460ff1615612fb157601154600c546127109190612f9a906001600160a01b031661195c565b612fa49190613e26565b612fae9190613e04565b90505b808210612fbc578091505b612fc5826133ac565b505b505b612fd7878787868686612fe2565b979650505050505050565b6000612fee8787613295565b156130885760145460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613071575060408051601f3d908101601f1916820190925261306e91810190613f63565b60015b61307a57600080fd5b90508061308657600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff16806130ca57506001600160a01b03871660009081526006602052604090205460ff165b156130d3575060005b6001600160a01b038816600090815260208190526040812080548892906130fb908490613e3d565b90915550600090508161310e578661311a565b61311a898888886135f0565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546131509190613e87565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161319c91815260200190565b60405180910390a3601454610100900460ff16613286576131bd89896136fc565b601454610100900460ff161580156131da57506131da8989613295565b80156131ff57506001600160a01b03891660009081526005602052604090205460ff16155b801561322457506001600160a01b03881660009081526005602052604090205460ff16155b801561322e575083155b156132865760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610bc6565b50600198975050505050505050565b6016546000906001600160a01b038481169116148015906132c457506016546001600160a01b03838116911614155b80156132db57506016546001600160a01b03163214155b801561330057506001600160a01b03821660009081526004602052604090205460ff16155b801561332557506001600160a01b03831660009081526004602052604090205460ff16155b801561333c57506001600160a01b03821661dead14155b801561335057506001600160a01b03821615155b801561336557506001600160a01b0383163014155b801561338557506014546001600160a01b03848116620100009092041614155b80156133a557506014546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461342257306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061345757613457613e50565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ee9190613f80565b8160018151811061350157613501613e50565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac9479061354e908590600090869030904290600401613feb565b600060405180830381600087803b15801561356857600080fd5b505af1925050508015613579575060015b61358357506135e0565b600d546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d80600081146135d5576040519150601f19603f3d011682016040523d82523d6000602084013e6135da565b606091505b50505050505b50600d805460ff60a01b19169055565b60008083156136065750600a5461ffff16613630565b821561361f5750600a5462010000900461ffff16613630565b50600a54640100000000900461ffff165b6014546201000090046001600160a01b031630148015613651575046606114155b1561365b57506111945b8060000361366c5784915050610f49565b600061271061367b8388613e26565b6136859190613e04565b905080156136f25730600090815260208190526040812080548392906136ac908490613e87565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612fd78187613e3d565b601454610100900460ff16156137605760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610bc6565b61376a8282613295565b1580156137845750600c546001600160a01b038281169116145b15610e45576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff0019166101001790819055620100009004166137fc576014805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612103565b801515811461193e57600080fd5b6000806040838503121561386157600080fd5b823561386c81613840565b9150602083013561387c81613840565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156138c6576138c6613887565b604052919050565b600067ffffffffffffffff8211156138e8576138e8613887565b5060051b60200190565b6001600160a01b038116811461193e57600080fd5b600082601f83011261391857600080fd5b8135602061392d613928836138ce565b61389d565b82815260059290921b8401810191818101908684111561394c57600080fd5b8286015b84811015613970578035613963816138f2565b8352918301918301613950565b509695505050505050565b6000806040838503121561398e57600080fd5b823567ffffffffffffffff8111156139a557600080fd5b6139b185828601613907565b925050602083013561387c81613840565b600060208083528351808285015260005b818110156139ef578581018301518582016040015282016139d3565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613a2357600080fd5b8235613a2e816138f2565b946020939093013593505050565b600060208284031215613a4e57600080fd5b81356133a5816138f2565b60008060408385031215613a6c57600080fd5b8235613a77816138f2565b9150602083013561387c816138f2565b600080600060608486031215613a9c57600080fd5b8335613aa7816138f2565b92506020840135613ab7816138f2565b929592945050506040919091013590565b60008060408385031215613adb57600080fd5b50508035926020909101359150565b60008060408385031215613afd57600080fd5b823567ffffffffffffffff80821115613b1557600080fd5b613b2186838701613907565b9350602091508185013581811115613b3857600080fd5b85019050601f81018613613b4b57600080fd5b8035613b59613928826138ce565b81815260059190911b82018301908381019088831115613b7857600080fd5b928401925b82841015613b9657833582529284019290840190613b7d565b80955050505050509250929050565b803561ffff81168114613bb757600080fd5b919050565b600080600060608486031215613bd157600080fd5b613bda84613ba5565b9250613be860208501613ba5565b9150613bf660408501613ba5565b90509250925092565b60008060408385031215613c1257600080fd5b823561386c816138f2565b600060208284031215613c2f57600080fd5b5035919050565b60008060008060808587031215613c4c57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b600081518084526020808501945080840160005b83811015613ccc5781516001600160a01b031687529582019590820190600101613ca7565b509495945050505050565b604081526000613cea6040830185613c93565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613d4c578160001904821115613d3257613d32613cfb565b80851615613d3f57918102915b93841c9390800290613d16565b509250929050565b600082613d6357506001610cf8565b81613d7057506000610cf8565b8160018114613d865760028114613d9057613dac565b6001915050610cf8565b60ff841115613da157613da1613cfb565b50506001821b610cf8565b5060208310610133831016604e8410600b8410161715613dcf575081810a610cf8565b613dd98383613d11565b8060001904821115613ded57613ded613cfb565b029392505050565b60006133a560ff841683613d54565b600082613e2157634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610cf857610cf8613cfb565b81810381811115610cf857610cf8613cfb565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613e7d57613e7d613cfb565b6001019392505050565b80820180821115610cf857610cf8613cfb565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60008060408385031215613f0a57600080fd5b8251613f15816138f2565b602084015190925061387c816138f2565b60008060408385031215613f3957600080fd5b505080516020909101519092909150565b600060208284031215613f5c57600080fd5b5051919050565b600060208284031215613f7557600080fd5b81516133a581613840565b600060208284031215613f9257600080fd5b81516133a5816138f2565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b85815284602082015260a06040820152600061400a60a0830186613c93565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212202e611fe03e578c97b6632047bfb076a190a6ce7056d74de0d66b144228ac9cdb64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103b15760003560e01c806350a8e016116101e7578063a9059cbb1161010d578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610b1b578063fdb78c0e14610b3b578063fe575a8714610b5c578063feadde9c14610b7c57600080fd5b8063eafb5a3c14610aa6578063eb50e70e14610ac6578063ee5d9c2d14610ae6578063eec2744e14610afb57600080fd5b8063b7df8b36116100dc578063b7df8b3614610a06578063bfc2fc3514610a20578063c6a276c214610a40578063dd62ed3e14610a6057600080fd5b8063a9059cbb146109c6578063ab558e4d146109e6578063b1b08f7114610667578063b3d514fb1461066757600080fd5b8063715018a611610185578063893d20e811610154578063893d20e81461094f5780638a63bd9b1461096d5780638a8c523c1461098257806395d89b411461099757600080fd5b8063715018a6146108e557806375f0a874146108fa57806378648edf1461091a57806380c581d11461092f57600080fd5b80635c24b074116101c15780635c24b074146108575780635cce86cd146108775780636ebd0078146108b057806370a08231146108c557600080fd5b806350a8e01614610802578063590ffdce146108215780635a6f09181461084157600080fd5b80632610eaca116102d757806336fddb041161026a5780634bbb93eb116102395780634bbb93eb146107695780634e718e48146107895780634fb2e45d146107a95780634fbee193146107c957600080fd5b806336fddb04146106ef5780633f3cf56c1461070f578063452ed4f11461072f5780634ada218b1461074f57600080fd5b80632e8fa821116102a65780632e8fa8211461067d578063313ce5671461069357806332cde664146106af57806333251a0b146106cf57600080fd5b80632610eaca1461061c578063285777511461063c5780632b112e49146106525780632b28fc7a1461066757600080fd5b806307dd79e01161034f57806313b4a7f41161031e57806313b4a7f4146105a757806318160ddd146105c757806323b872dd146105dc57806326003957146105fc57600080fd5b806307dd79e01461050f578063095ea7b3146105395780630dcbcf1c146105595780630fa604e41461059257600080fd5b806305bbedb61161038b57806305bbedb614610436578063069d955f1461045657806306fdde03146104ac5780630758d924146104ea57600080fd5b806303fd2a45146103bd5780630445b667146103f0578063044df7261461041457600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103fc57600080fd5b50610406600e5481565b6040519081526020016103e7565b34801561042057600080fd5b5061043461042f36600461384e565b610b9c565b005b34801561044257600080fd5b5061043461045136600461397b565b610c40565b34801561046257600080fd5b50600a546104879061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103e7565b3480156104b857600080fd5b5060408051808201909152600c81526b2a34ba30b72a3930b1b5b2b960a11b60208201525b6040516103e791906139c2565b3480156104f657600080fd5b50600b546103d39061010090046001600160a01b031681565b34801561051b57600080fd5b50600b546105299060ff1681565b60405190151581526020016103e7565b34801561054557600080fd5b50610529610554366004613a10565b610ce7565b34801561056557600080fd5b50610529610574366004613a3c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561059e57600080fd5b50610406610cfe565b3480156105b357600080fd5b506104346105c2366004613a59565b610d1e565b3480156105d357600080fd5b50610406610ebe565b3480156105e857600080fd5b506105296105f7366004613a87565b610ed9565b34801561060857600080fd5b50610434610617366004613ac8565b610f51565b34801561062857600080fd5b50610434610637366004613aea565b61106c565b34801561064857600080fd5b5061040660115481565b34801561065e57600080fd5b506104066111e9565b34801561067357600080fd5b506104066109c481565b34801561068957600080fd5b50610406600f5481565b34801561069f57600080fd5b50604051601281526020016103e7565b3480156106bb57600080fd5b506104346106ca366004613bbc565b61122d565b3480156106db57600080fd5b506104346106ea366004613a3c565b611357565b3480156106fb57600080fd5b5061043461070a366004613bff565b6113eb565b34801561071b57600080fd5b5061043461072a366004613ac8565b611440565b34801561073b57600080fd5b50600c546103d3906001600160a01b031681565b34801561075b57600080fd5b506014546105299060ff1681565b34801561077557600080fd5b50610406610784366004613c1d565b611574565b34801561079557600080fd5b506104346107a4366004613c1d565b6115a6565b3480156107b557600080fd5b506104346107c4366004613a3c565b61161f565b3480156107d557600080fd5b506105296107e4366004613a3c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561080e57600080fd5b5060145461052990610100900460ff1681565b34801561082d57600080fd5b5061043461083c366004613bff565b611748565b34801561084d57600080fd5b5061040660155481565b34801561086357600080fd5b50610434610872366004613a3c565b61179d565b34801561088357600080fd5b50610529610892366004613a3c565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108bc57600080fd5b50610406611941565b3480156108d157600080fd5b506104066108e0366004613a3c565b61195c565b3480156108f157600080fd5b50610434611977565b34801561090657600080fd5b50600d546103d3906001600160a01b031681565b34801561092657600080fd5b50610434611a70565b34801561093b57600080fd5b5061043461094a366004613bff565b611aa9565b34801561095b57600080fd5b506016546001600160a01b03166103d3565b34801561097957600080fd5b50610529611c67565b34801561098e57600080fd5b50610434611cb9565b3480156109a357600080fd5b50604080518082019091526006815265122a24aa20a760d11b60208201526104dd565b3480156109d257600080fd5b506105296109e1366004613a10565b611eef565b3480156109f257600080fd5b50610434610a01366004613a3c565b611f06565b348015610a1257600080fd5b506010546105299060ff1681565b348015610a2c57600080fd5b50610434610a3b36600461384e565b612082565b348015610a4c57600080fd5b50610434610a5b366004613a3c565b61210f565b348015610a6c57600080fd5b50610406610a7b366004613a59565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ab257600080fd5b50610434610ac1366004613a3c565b612172565b348015610ad257600080fd5b50610434610ae1366004613a3c565b612548565b348015610af257600080fd5b506104346125ea565b348015610b0757600080fd5b50610434610b16366004613bff565b6126a5565b348015610b2757600080fd5b50610434610b36366004613c36565b612710565b348015610b4757600080fd5b50600d5461052990600160a81b900460ff1681565b348015610b6857600080fd5b50610529610b77366004613a3c565b61291c565b348015610b8857600080fd5b50610434610b97366004613bff565b612991565b6016546001600160a01b03163314610bcf5760405162461bcd60e51b8152600401610bc690613c68565b60405180910390fd5b60145460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c2457600080fd5b505af1158015610c38573d6000803e3d6000fd5b505050505050565b6016546001600160a01b03163314610c6a5760405162461bcd60e51b8152600401610bc690613c68565b606482511115610cb05760405162461bcd60e51b81526020600482015260116024820152702a37b79036b0b73c9030ba1037b731b29760791b6044820152606401610bc6565b6014546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610c0a9085908590600401613cd7565b6000610cf43384846129e6565b5060015b92915050565b6000610d0c6012600a613df5565b601354610d199190613e04565b905090565b6016546001600160a01b03163314610d485760405162461bcd60e51b8152600401610bc690613c68565b60095460ff16610d5757600080fd5b6001600160a01b0382163014801590610d7957506001600160a01b0381163014155b8015610d935750600c546001600160a01b03838116911614155b8015610dad5750600c546001600160a01b03828116911614155b610de75760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610bc6565b806001600160a01b0316826001600160a01b031603610e49576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610e45908290611748565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610eb3908390611748565b610e45816001611748565b6000610ecc6012600a613df5565b610d199062989680613e26565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610f3e576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610f38908490613e3d565b90915550505b610f49848484612adf565b949350505050565b6016546001600160a01b03163314610f7b5760405162461bcd60e51b8152600401610bc690613c68565b6064610f896012600a613df5565b610f969062989680613e26565b610fa09190613e04565b8183610fae6012600a613df5565b610fbb9062989680613e26565b610fc59190613e26565b610fcf9190613e04565b10156110365760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610bc6565b80826110446012600a613df5565b6110519062989680613e26565b61105b9190613e26565b6110659190613e04565b6013555050565b6016546001600160a01b031633146110965760405162461bcd60e51b8152600401610bc690613c68565b80518251146110df5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610bc6565b60005b82518161ffff1610156111e4576110fb6012600a613df5565b828261ffff168151811061111157611111613e50565b60200260200101516111239190613e26565b61112c3361195c565b101561116f5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610bc6565b6111d133848361ffff168151811061118957611189613e50565b60200260200101516012600a61119f9190613df5565b858561ffff16815181106111b5576111b5613e50565b60200260200101516111c79190613e26565b6000806001612fe2565b50806111dc81613e66565b9150506110e2565b505050565b60006111f5600061195c565b61120061dead61195c565b61120a9190613e87565b6112166012600a613df5565b6112239062989680613e26565b610d199190613e3d565b6016546001600160a01b031633146112575760405162461bcd60e51b8152600401610bc690613c68565b600b5460ff161561129e5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610bc6565b6109c48361ffff16111580156112ba57506109c48261ffff1611155b80156112cc57506109c48161ffff1611155b6113185760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bc6565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6016546001600160a01b031633146113815760405162461bcd60e51b8152600401610bc690613c68565b6014546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b1580156113d057600080fd5b505af11580156113e4573d6000803e3d6000fd5b5050505050565b6016546001600160a01b031633146114155760405162461bcd60e51b8152600401610bc690613c68565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6016546001600160a01b0316331461146a5760405162461bcd60e51b8152600401610bc690613c68565b6103e86114796012600a613df5565b6114869062989680613e26565b611491906005613e26565b61149b9190613e04565b81836114a96012600a613df5565b6114b69062989680613e26565b6114c09190613e26565b6114ca9190613e04565b101561153e5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bc6565b808261154c6012600a613df5565b6115599062989680613e26565b6115639190613e26565b61156d9190613e04565b6012555050565b600c54600090612710908390611592906001600160a01b031661195c565b61159c9190613e26565b610cf89190613e04565b6016546001600160a01b031633146115d05760405162461bcd60e51b8152600401610bc690613c68565b609681111561161a5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610bc6565b601155565b6016546001600160a01b031633146116495760405162461bcd60e51b8152600401610bc690613c68565b6001600160a01b03811661166f5760405162461bcd60e51b8152600401610bc690613e9a565b61deac196001600160a01b0382160161169a5760405162461bcd60e51b8152600401610bc690613e9a565b6016546116b1906001600160a01b03166000611748565b6116bc816001611748565b6016546000906116d4906001600160a01b031661195c565b11156116f6576016546116f4906001600160a01b0316826111c78261195c565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146117725760405162461bcd60e51b8152600401610bc690613c68565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146117c75760405162461bcd60e51b8152600401610bc690613c68565b60145460ff16156117d757600080fd5b306001600160a01b038216036118205760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610bc6565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156118a6575060408051601f3d908101601f191682019092526118a391810190613ef7565b60015b6118af57600080fd5b600b8054610100600160a81b0319166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601654925461191f93831692919004166000196129e6565b600b546111e490309061010090046001600160a01b03166000196129e6565b50565b600061194f6012600a613df5565b601254610d199190613e04565b6001600160a01b031660009081526020819052604090205490565b6016546001600160a01b031633146119a15760405162461bcd60e51b8152600401610bc690613c68565b60145460ff16611a0b5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610bc6565b601654611a22906001600160a01b03166000611748565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b03163314611a9a5760405162461bcd60e51b8152600401610bc690613c68565b600b805460ff19166001179055565b6016546001600160a01b03163314611ad35760405162461bcd60e51b8152600401610bc690613c68565b80611b46576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610c2457600080fd5b60025415611b9f576203f48060025442611b609190613e3d565b11611b9f5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610bc6565b6001600160a01b03821660009081526001602052604090205460ff1615611c085760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610bc6565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c0a565b6016546000906001600160a01b03163314611c945760405162461bcd60e51b8152600401610bc690613c68565b600b54611cb390309061010090046001600160a01b03166000196129e6565b50600190565b6016546001600160a01b03163314611ce35760405162461bcd60e51b8152600401610bc690613c68565b60145460ff1615611d365760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bc6565b601454610100900460ff16611d8d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bc6565b6014546201000090046001600160a01b0316611dbd576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611e2f57600080fd5b505af1925050508015611e40575060015b50601454600c546001600160a01b03620100009092048216916325a71cae91611e69911661195c565b6040518263ffffffff1660e01b8152600401611e8791815260200190565b60408051808303816000875af1925050508015611ec1575060408051601f3d908101601f19168201909252611ebe91810190613f26565b60015b15611ed057600e91909155600f555b6014805460ff1990811660011790915560098054909116905542601555565b6000611efc338484612adf565b5060019392505050565b6016546001600160a01b03163314611f305760405162461bcd60e51b8152600401610bc690613c68565b601454610100900460ff1615611f9857306001600160a01b03821603611f985760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610bc6565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120139190613f4a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561205e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e49190613f63565b6016546001600160a01b031633146120ac5760405162461bcd60e51b8152600401610bc690613c68565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146121395760405162461bcd60e51b8152600401610bc690613c68565b6014546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016113b6565b6016546001600160a01b0316331461219c5760405162461bcd60e51b8152600401610bc690613c68565b601454610100900460ff16156121f45760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610bc6565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225d9190613f80565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ce9190613f80565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612319573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233d9190613f80565b600c546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166124d357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cc9190613f80565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243d9190613f80565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561248a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ae9190613f80565b600c80546001600160a01b0319166001600160a01b03929092169190911790556124ef565b600c80546001600160a01b0319166001600160a01b0383161790555b600b8054610100600160a81b0319166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff1916909117905591546111e49230929104166000196129e6565b6016546001600160a01b031633146125725760405162461bcd60e51b8152600401610bc690613c68565b6001600160a01b0381166125c85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610bc6565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b031633146126145760405162461bcd60e51b8152600401610bc690613c68565b601454610100900460ff161561266c5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bc6565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561193e573d6000803e3d6000fd5b6016546001600160a01b031633146126cf5760405162461bcd60e51b8152600401610bc690613c68565b6014546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c0a565b6016546001600160a01b0316331461273a5760405162461bcd60e51b8152600401610bc690613c68565b82846127486012600a613df5565b6127559062989680613e26565b61275f9190613e26565b6127699190613e04565b600e55808261277a6012600a613df5565b6127879062989680613e26565b6127919190613e26565b61279b9190613e04565b600f819055600e5411156127fb5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610bc6565b600c5461271090612814906001600160a01b031661195c565b61281f906096613e26565b6128299190613e04565b600f5411156128865760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610bc6565b620f42406128966012600a613df5565b6128a39062989680613e26565b6128ad9190613e04565b600f5410156128ce5760405162461bcd60e51b8152600401610bc690613f9d565b620f42406128de6012600a613df5565b6128eb9062989680613e26565b6128f59190613e04565b600e5410156129165760405162461bcd60e51b8152600401610bc690613f9d565b50505050565b60145460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561296d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190613f63565b6016546001600160a01b031633146129bb5760405162461bcd60e51b8152600401610bc690613c68565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612a325760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bc6565b6001600160a01b038216612a7e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bc6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612b455760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc6565b6001600160a01b038316612ba75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc6565b60008211612c095760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bc6565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612c375760019250612c65565b6001600160a01b03861660009081526001602052604090205460ff1615612c615760019150612c65565b5060015b612c6f8787613295565b15612ee65760145460ff16612d705780612ccb5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bc6565b6001600160a01b03871660009081526005602052604090205460ff16158015612d0d57506001600160a01b03861660009081526005602052604090205460ff16155b15612d705760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610bc6565b8280612d795750815b15612e28576001600160a01b03871660009081526007602052604090205460ff16158015612dc057506001600160a01b03861660009081526007602052604090205460ff16155b15612e2857601254851115612e285760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610bc6565b600b546001600160a01b038781166101009092041614801590612e49575081155b15612ee6576001600160a01b03861660009081526007602052604090205460ff16612ee65760135485612e7b8861195c565b612e859190613e87565b1115612ee65760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610bc6565b8115612fc957600d54600160a01b900460ff16612fc957600d54600160a81b900460ff168015612f2f57506001600160a01b03861660009081526008602052604090205460ff16155b8015612f5457506001600160a01b03871660009081526008602052604090205460ff16155b15612fc9576000612f643061195c565b9050600e548110612fc757600f5460105460ff1615612fb157601154600c546127109190612f9a906001600160a01b031661195c565b612fa49190613e26565b612fae9190613e04565b90505b808210612fbc578091505b612fc5826133ac565b505b505b612fd7878787868686612fe2565b979650505050505050565b6000612fee8787613295565b156130885760145460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613071575060408051601f3d908101601f1916820190925261306e91810190613f63565b60015b61307a57600080fd5b90508061308657600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff16806130ca57506001600160a01b03871660009081526006602052604090205460ff165b156130d3575060005b6001600160a01b038816600090815260208190526040812080548892906130fb908490613e3d565b90915550600090508161310e578661311a565b61311a898888886135f0565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546131509190613e87565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161319c91815260200190565b60405180910390a3601454610100900460ff16613286576131bd89896136fc565b601454610100900460ff161580156131da57506131da8989613295565b80156131ff57506001600160a01b03891660009081526005602052604090205460ff16155b801561322457506001600160a01b03881660009081526005602052604090205460ff16155b801561322e575083155b156132865760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610bc6565b50600198975050505050505050565b6016546000906001600160a01b038481169116148015906132c457506016546001600160a01b03838116911614155b80156132db57506016546001600160a01b03163214155b801561330057506001600160a01b03821660009081526004602052604090205460ff16155b801561332557506001600160a01b03831660009081526004602052604090205460ff16155b801561333c57506001600160a01b03821661dead14155b801561335057506001600160a01b03821615155b801561336557506001600160a01b0383163014155b801561338557506014546001600160a01b03848116620100009092041614155b80156133a557506014546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461342257306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061345757613457613e50565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ee9190613f80565b8160018151811061350157613501613e50565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac9479061354e908590600090869030904290600401613feb565b600060405180830381600087803b15801561356857600080fd5b505af1925050508015613579575060015b61358357506135e0565b600d546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d80600081146135d5576040519150601f19603f3d011682016040523d82523d6000602084013e6135da565b606091505b50505050505b50600d805460ff60a01b19169055565b60008083156136065750600a5461ffff16613630565b821561361f5750600a5462010000900461ffff16613630565b50600a54640100000000900461ffff165b6014546201000090046001600160a01b031630148015613651575046606114155b1561365b57506111945b8060000361366c5784915050610f49565b600061271061367b8388613e26565b6136859190613e04565b905080156136f25730600090815260208190526040812080548392906136ac908490613e87565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612fd78187613e3d565b601454610100900460ff16156137605760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610bc6565b61376a8282613295565b1580156137845750600c546001600160a01b038281169116145b15610e45576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff0019166101001790819055620100009004166137fc576014805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612103565b801515811461193e57600080fd5b6000806040838503121561386157600080fd5b823561386c81613840565b9150602083013561387c81613840565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156138c6576138c6613887565b604052919050565b600067ffffffffffffffff8211156138e8576138e8613887565b5060051b60200190565b6001600160a01b038116811461193e57600080fd5b600082601f83011261391857600080fd5b8135602061392d613928836138ce565b61389d565b82815260059290921b8401810191818101908684111561394c57600080fd5b8286015b84811015613970578035613963816138f2565b8352918301918301613950565b509695505050505050565b6000806040838503121561398e57600080fd5b823567ffffffffffffffff8111156139a557600080fd5b6139b185828601613907565b925050602083013561387c81613840565b600060208083528351808285015260005b818110156139ef578581018301518582016040015282016139d3565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613a2357600080fd5b8235613a2e816138f2565b946020939093013593505050565b600060208284031215613a4e57600080fd5b81356133a5816138f2565b60008060408385031215613a6c57600080fd5b8235613a77816138f2565b9150602083013561387c816138f2565b600080600060608486031215613a9c57600080fd5b8335613aa7816138f2565b92506020840135613ab7816138f2565b929592945050506040919091013590565b60008060408385031215613adb57600080fd5b50508035926020909101359150565b60008060408385031215613afd57600080fd5b823567ffffffffffffffff80821115613b1557600080fd5b613b2186838701613907565b9350602091508185013581811115613b3857600080fd5b85019050601f81018613613b4b57600080fd5b8035613b59613928826138ce565b81815260059190911b82018301908381019088831115613b7857600080fd5b928401925b82841015613b9657833582529284019290840190613b7d565b80955050505050509250929050565b803561ffff81168114613bb757600080fd5b919050565b600080600060608486031215613bd157600080fd5b613bda84613ba5565b9250613be860208501613ba5565b9150613bf660408501613ba5565b90509250925092565b60008060408385031215613c1257600080fd5b823561386c816138f2565b600060208284031215613c2f57600080fd5b5035919050565b60008060008060808587031215613c4c57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b600081518084526020808501945080840160005b83811015613ccc5781516001600160a01b031687529582019590820190600101613ca7565b509495945050505050565b604081526000613cea6040830185613c93565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613d4c578160001904821115613d3257613d32613cfb565b80851615613d3f57918102915b93841c9390800290613d16565b509250929050565b600082613d6357506001610cf8565b81613d7057506000610cf8565b8160018114613d865760028114613d9057613dac565b6001915050610cf8565b60ff841115613da157613da1613cfb565b50506001821b610cf8565b5060208310610133831016604e8410600b8410161715613dcf575081810a610cf8565b613dd98383613d11565b8060001904821115613ded57613ded613cfb565b029392505050565b60006133a560ff841683613d54565b600082613e2157634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610cf857610cf8613cfb565b81810381811115610cf857610cf8613cfb565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613e7d57613e7d613cfb565b6001019392505050565b80820180821115610cf857610cf8613cfb565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60008060408385031215613f0a57600080fd5b8251613f15816138f2565b602084015190925061387c816138f2565b60008060408385031215613f3957600080fd5b505080516020909101519092909150565b600060208284031215613f5c57600080fd5b5051919050565b600060208284031215613f7557600080fd5b81516133a581613840565b600060208284031215613f9257600080fd5b81516133a5816138f2565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b85815284602082015260a06040820152600061400a60a0830186613c93565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212202e611fe03e578c97b6632047bfb076a190a6ce7056d74de0d66b144228ac9cdb64736f6c63430008130033

Deployed Bytecode Sourcemap

4392:22331:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5800:73;;;;;;;;;;;;5831:42;5800:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5800:73:0;;;;;;;;6049:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;6049:28:0;222:177:1;15089:153:0;;;;;;;;;;-1:-1:-1;15089:153:0;;;;;:::i;:::-;;:::i;:::-;;14211:341;;;;;;;;;;-1:-1:-1;14211:341:0;;;;;:::i;:::-;;:::i;5385:109::-;;;;;;;;;;-1:-1:-1;5385:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;3074:6:1;3107:15;;;3089:34;;3159:15;;;3154:2;3139:18;;3132:43;3211:15;;3191:18;;;3184:43;;;;3052:2;3037:18;5385:109:0;2868:365:1;9453:80:0;;;;;;;;;;-1:-1:-1;9525:5:0;;;;;;;;;;;;-1:-1:-1;;;9525:5:0;;;;9453:80;;;;;;;:::i;5739:26::-;;;;;;;;;;-1:-1:-1;5739:26:0;;;;;;;-1:-1:-1;;;;;5739:26:0;;;5706;;;;;;;;;;-1:-1:-1;5706:26:0;;;;;;;;;;;4181:14:1;;4174:22;4156:41;;4144:2;4129:18;5706:26:0;4016:187:1;10061:161:0;;;;;;;;;;-1:-1:-1;10061:161:0;;;;;:::i;:::-;;:::i;13435:140::-;;;;;;;;;;-1:-1:-1;13435:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13533:34:0;13509:4;13533:34;;;:25;:34;;;;;;;;;13435:140;16769:114;;;;;;;;;;;;;:::i;18291:809::-;;;;;;;;;;-1:-1:-1;18291:809:0;;;;;:::i;:::-;;:::i;9188:83::-;;;;;;;;;;;;;:::i;10731:306::-;;;;;;;;;;-1:-1:-1;10731:306:0;;;;;:::i;:::-;;:::i;16381:264::-;;;;;;;;;;-1:-1:-1;16381:264:0;;;;;:::i;:::-;;:::i;24435:447::-;;;;;;;;;;-1:-1:-1;24435:447:0;;;;;:::i;:::-;;:::i;6157:33::-;;;;;;;;;;;;;;;;13739:141;;;;;;;;;;;;;:::i;5503:42::-;;;;;;;;;;;;5541:4;5503:42;;6084:25;;;;;;;;;;;;;;;;9277:80;;;;;;;;;;-1:-1:-1;9277:80:0;;5196:2;7172:36:1;;7160:2;7145:18;9277:80:0;7030:184:1;15440:453:0;;;;;;;;;;-1:-1:-1;15440:453:0;;;;;:::i;:::-;;:::i;14971:110::-;;;;;;;;;;-1:-1:-1;14971:110:0;;;;;:::i;:::-;;:::i;13010:140::-;;;;;;;;;;-1:-1:-1;13010:140:0;;;;;:::i;:::-;;:::i;16100:273::-;;;;;;;;;;-1:-1:-1;16100:273:0;;;;;:::i;:::-;;:::i;5772:21::-;;;;;;;;;;-1:-1:-1;5772:21:0;;;;-1:-1:-1;;;;;5772:21:0;;;6325:34;;;;;;;;;;-1:-1:-1;6325:34:0;;;;;;;;16891:189;;;;;;;;;;-1:-1:-1;16891:189:0;;;;;:::i;:::-;;:::i;17795:217::-;;;;;;;;;;-1:-1:-1;17795:217:0;;;;;:::i;:::-;;:::i;7820:654::-;;;;;;;;;;-1:-1:-1;7820:654:0;;;;;:::i;:::-;;:::i;13158:127::-;;;;;;;;;;-1:-1:-1;13158:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13249:28:0;13225:4;13249:28;;;:19;:28;;;;;;;;;13158:127;6366:36;;;;;;;;;;-1:-1:-1;6366:36:0;;;;;;;;;;;13293:134;;;;;;;;;;-1:-1:-1;13293:134:0;;;;;:::i;:::-;;:::i;6439:26::-;;;;;;;;;;;;;;;;12305:557;;;;;;;;;;-1:-1:-1;12305:557:0;;;;;:::i;:::-;;:::i;12870:132::-;;;;;;;;;;-1:-1:-1;12870:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;12964:30:0;12940:4;12964:30;;;:21;:30;;;;;;;;;12870:132;16653:108;;;;;;;;;;;;;:::i;9763:117::-;;;;;;;;;;-1:-1:-1;9763:117:0;;;;;:::i;:::-;;:::i;8482:310::-;;;;;;;;;;;;;:::i;5880:92::-;;;;;;;;;;-1:-1:-1;5880:92:0;;;;-1:-1:-1;;;;;5880:92:0;;;15250:182;;;;;;;;;;;;;:::i;11733:564::-;;;;;;;;;;-1:-1:-1;11733:564:0;;;;;:::i;:::-;;:::i;9539:79::-;;;;;;;;;;-1:-1:-1;9609:6:0;;-1:-1:-1;;;;;9609:6:0;9539:79;;10548:175;;;;;;;;;;;;;:::i;23196:737::-;;;;;;;;;;;;;:::i;9363:84::-;;;;;;;;;;-1:-1:-1;9437:7:0;;;;;;;;;;;;-1:-1:-1;;;9437:7:0;;;;9363:84;;9888:165;;;;;;;;;;-1:-1:-1;9888:165:0;;;;;:::i;:::-;;:::i;24131:296::-;;;;;;;;;;-1:-1:-1;24131:296:0;;;;;:::i;:::-;;:::i;6116:34::-;;;;;;;;;;-1:-1:-1;6116:34:0;;;;;;;;18020:263;;;;;;;;;;-1:-1:-1;18020:263:0;;;;;:::i;:::-;;:::i;14697:202::-;;;;;;;;;;-1:-1:-1;14697:202:0;;;;;:::i;:::-;;:::i;9624:133::-;;;;;;;;;;-1:-1:-1;9624:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9726:19:0;;;9708:7;9726:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9624:133;11045:680;;;;;;;;;;-1:-1:-1;11045:680:0;;;;;:::i;:::-;;:::i;15901:191::-;;;;;;;;;;-1:-1:-1;15901:191:0;;;;;:::i;:::-;;:::i;23941:182::-;;;;;;;;;;;;;:::i;13952:251::-;;;;;;;;;;-1:-1:-1;13952:251:0;;;;;:::i;:::-;;:::i;17088:699::-;;;;;;;;;;-1:-1:-1;17088:699:0;;;;;:::i;:::-;;:::i;6003:39::-;;;;;;;;;;-1:-1:-1;6003:39:0;;;;-1:-1:-1;;;6003:39:0;;;;;;14560:129;;;;;;;;;;-1:-1:-1;14560:129:0;;;;;:::i;:::-;;:::i;13583:148::-;;;;;;;;;;-1:-1:-1;13583:148:0;;;;;:::i;:::-;;:::i;15089:153::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;;;;;;;;;15184:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;15184:50:0;;9695:14:1;;9688:22;15184:50:0::1;::::0;::::1;9670:41:1::0;9754:14;;9747:22;9727:18;;;9720:50;15184:11:0;;;::::1;-1:-1:-1::0;;;;;15184:11:0::1;::::0;:26:::1;::::0;9643:18:1;;15184:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15089:153:::0;;:::o;14211:341::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;14450:3:::1;14431:8;:15;:22;;14423:52;;;::::0;-1:-1:-1;;;14423:52:0;;9983:2:1;14423:52:0::1;::::0;::::1;9965:21:1::0;10022:2;10002:18;;;9995:30;-1:-1:-1;;;10041:18:1;;;10034:47;10098:18;;14423:52:0::1;9781:341:1::0;14423:52:0::1;14486:11;::::0;:58:::1;::::0;-1:-1:-1;;;14486:58:0;;:11;;;::::1;-1:-1:-1::0;;;;;14486:11:0::1;::::0;:39:::1;::::0;:58:::1;::::0;14526:8;;14536:7;;14486:58:::1;;;:::i;10061:161::-:0;10138:4;10155:37;10164:10;10176:7;10185:6;10155:8;:37::i;:::-;-1:-1:-1;10210:4:0;10061:161;;;;;:::o;16769:114::-;16816:7;16861:13;5196:2;16861;:13;:::i;:::-;16843:14;;:32;;;;:::i;:::-;16836:39;;16769:114;:::o;18291:809::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;18395:23:::1;::::0;::::1;;18387:32;;;::::0;::::1;;-1:-1:-1::0;;;;;18438:23:0;::::1;18456:4;18438:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;18483:24:0;::::1;18502:4;18483:24;;18438:69;:107;;;;-1:-1:-1::0;18529:6:0::1;::::0;-1:-1:-1;;;;;18529:16:0;;::::1;:6:::0;::::1;:16;;18438:107;:146;;;;-1:-1:-1::0;18567:6:0::1;::::0;-1:-1:-1;;;;;18567:17:0;;::::1;:6:::0;::::1;:17;;18438:146;18430:170;;;::::0;-1:-1:-1;;;18430:170:0;;12879:2:1;18430:170:0::1;::::0;::::1;12861:21:1::0;12918:2;12898:18;;;12891:30;-1:-1:-1;;;12937:18:1;;;12930:41;12988:18;;18430:170:0::1;12677:335:1::0;18430:170:0::1;18625:7;-1:-1:-1::0;;;;;18615:17:0::1;:6;-1:-1:-1::0;;;;;18615:17:0::1;::::0;18611:482:::1;;-1:-1:-1::0;;;;;18649:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;18678:4:::1;-1:-1:-1::0;;18649:33:0;;::::1;::::0;::::1;::::0;;;18697:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;18744:34:::1;::::0;18649:26;;18744:19:::1;:34::i;:::-;18291:809:::0;;:::o;18611:482::-:1;-1:-1:-1::0;;;;;18811:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;18839:4:::1;-1:-1:-1::0;;18811:32:0;;::::1;::::0;::::1;::::0;;;18858:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;18906:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;18952:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;18999:33:::1;::::0;18811:25;;18999:19:::1;:33::i;:::-;19047:34;19067:7;19076:4;19047:19;:34::i;9188:83::-:0;9243:7;5257:13;5196:2;5257;:13;:::i;:::-;5240:30;;5042:10;5240:30;:::i;10731:306::-;-1:-1:-1;;;;;10852:19:0;;10831:4;10852:19;;;:11;:19;;;;;;;;10872:10;10852:31;;;;;;;;-1:-1:-1;;10852:52:0;10848:126;;-1:-1:-1;;;;;10921:19:0;;;;;;:11;:19;;;;;;;;10941:10;10921:31;;;;;;;:41;;10956:6;;10921:19;:41;;10956:6;;10921:41;:::i;:::-;;;;-1:-1:-1;;10848:126:0;10993:36;11003:6;11011:9;11022:6;10993:9;:36::i;:::-;10986:43;10731:306;-1:-1:-1;;;;10731:306:0:o;16381:264::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;16523:3:::1;5257:13;5196:2;5257;:13;:::i;:::-;5240:30;::::0;5042:10:::1;5240:30;:::i;:::-;16513:13;;;;:::i;:::-;16501:7:::0;16490;5257:13:::1;5196:2;5257;:13;:::i;:::-;5240:30;::::0;5042:10:::1;5240:30;:::i;:::-;16480:17;;;;:::i;:::-;16479:29;;;;:::i;:::-;:48;;16471:109;;;::::0;-1:-1:-1;;;16471:109:0;;13525:2:1;16471:109:0::1;::::0;::::1;13507:21:1::0;13564:2;13544:18;;;13537:30;13603:34;13583:18;;;13576:62;-1:-1:-1;;;13654:18:1;;;13647:46;13710:19;;16471:109:0::1;13323:412:1::0;16471:109:0::1;16630:7:::0;16619;5257:13:::1;5196:2;5257;:13;:::i;:::-;5240:30;::::0;5042:10:::1;5240:30;:::i;:::-;16609:17;;;;:::i;:::-;16608:29;;;;:::i;:::-;16591:14;:46:::0;-1:-1:-1;;16381:264:0:o;24435:447::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;24570:7:::1;:14;24551:8;:15;:33;24543:67;;;::::0;-1:-1:-1;;;24543:67:0;;13942:2:1;24543:67:0::1;::::0;::::1;13924:21:1::0;13981:2;13961:18;;;13954:30;-1:-1:-1;;;14000:18:1;;;13993:51;14061:18;;24543:67:0::1;13740:345:1::0;24543:67:0::1;24626:8;24621:254;24644:8;:15;24640:1;:19;;;24621:254;;;24725:13;5196:2;24725;:13;:::i;:::-;24714:7;24722:1;24714:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24689:21;24699:10;24689:9;:21::i;:::-;:49;;24681:80;;;::::0;-1:-1:-1;;;24681:80:0;;14424:2:1;24681:80:0::1;::::0;::::1;14406:21:1::0;14463:2;14443:18;;;14436:30;-1:-1:-1;;;14482:18:1;;;14475:48;14540:18;;24681:80:0::1;14222:342:1::0;24681:80:0::1;24776:87;24793:10;24805:8;24814:1;24805:11;;;;;;;;;;:::i;:::-;;;;;;;5196:2;24829;:13;;;;:::i;:::-;24818:7;24826:1;24818:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24844:5;24851::::0;24858:4:::1;24776:16;:87::i;:::-;-1:-1:-1::0;24661:3:0;::::1;::::0;::::1;:::i;:::-;;;;24621:254;;;;24435:447:::0;;:::o;13739:141::-;13792:7;13849:21;13867:1;13849:9;:21::i;:::-;13831:15;5831:42;13831:9;:15::i;:::-;:39;;;;:::i;:::-;5257:13;5196:2;5257;:13;:::i;:::-;5240:30;;5042:10;5240:30;:::i;:::-;13820:51;;;;:::i;15440:453::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;15548:14:::1;::::0;::::1;;15547:15;15539:45;;;::::0;-1:-1:-1;;;15539:45:0;;15103:2:1;15539:45:0::1;::::0;::::1;15085:21:1::0;15142:2;15122:18;;;15115:30;-1:-1:-1;;;15161:18:1;;;15154:47;15218:18;;15539:45:0::1;14901:341:1::0;15539:45:0::1;5541:4;15603:6;:21;;;;:65;;;;;5591:4;15645:7;:23;;;;15603:65;:117;;;;;5645:4;15689:11;:31;;;;15603:117;15595:170;;;::::0;-1:-1:-1;;;15595:170:0;;15449:2:1;15595:170:0::1;::::0;::::1;15431:21:1::0;15488:2;15468:18;;;15461:30;15527:25;15507:18;;;15500:53;15570:18;;15595:170:0::1;15247:347:1::0;15595:170:0::1;15776:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15812:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15850:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15440:453::o;14971:110::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;15040:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;15040:33:0;;-1:-1:-1;;;;;178:32:1;;;15040:33:0::1;::::0;::::1;160:51:1::0;15040:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;15040:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14971:110:::0;:::o;13010:140::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13102:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13102:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13010:140::o;16100:273::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;16245:4:::1;5257:13;5196:2;5257;:13;:::i;:::-;5240:30;::::0;5042:10:::1;5240:30;:::i;:::-;16231:11;::::0;16241:1:::1;16231:11;:::i;:::-;:18;;;;:::i;:::-;16219:7:::0;16208;5257:13:::1;5196:2;5257;:13;:::i;:::-;5240:30;::::0;5042:10:::1;5240:30;:::i;:::-;16198:17;;;;:::i;:::-;16197:29;;;;:::i;:::-;:53;;16189:121;;;::::0;-1:-1:-1;;;16189:121:0;;15801:2:1;16189:121:0::1;::::0;::::1;15783:21:1::0;15840:2;15820:18;;;15813:30;15879:34;15859:18;;;15852:62;15950:25;15930:18;;;15923:53;15993:19;;16189:121:0::1;15599:419:1::0;16189:121:0::1;16358:7:::0;16347;5257:13:::1;5196:2;5257;:13;:::i;:::-;5240:30;::::0;5042:10:::1;5240:30;:::i;:::-;16337:17;;;;:::i;:::-;16336:29;;;;:::i;:::-;16321:12;:44:::0;-1:-1:-1;;16100:273:0:o;16891:189::-;17020:6;;16982:7;;5692:5;;17030:21;;17010:17;;-1:-1:-1;;;;;17020:6:0;17010:9;:17::i;:::-;:41;;;;:::i;:::-;17009:62;;;;:::i;17795:217::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;17925:3:::1;17899:22;:29;;17891:64;;;::::0;-1:-1:-1;;;17891:64:0;;16225:2:1;17891:64:0::1;::::0;::::1;16207:21:1::0;16264:2;16244:18;;;16237:30;-1:-1:-1;;;16283:18:1;;;16276:52;16345:18;;17891:64:0::1;16023:346:1::0;17891:64:0::1;17966:13;:38:::0;17795:217::o;7820:654::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7899:22:0;::::1;7891:96;;;;-1:-1:-1::0;;;7891:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;8006:16:0;::::1;::::0;7998:90:::1;;;;-1:-1:-1::0;;;7998:90:0::1;;;;;;;:::i;:::-;8119:6;::::0;8099:34:::1;::::0;-1:-1:-1;;;;;8119:6:0::1;;8099:19;:34::i;:::-;8144:35;8164:8;8174:4;8144:19;:35::i;:::-;8214:6;::::0;8224:1:::1;::::0;8204:17:::1;::::0;-1:-1:-1;;;;;8214:6:0::1;8204:9;:17::i;:::-;:21;8200:127;;;8259:6;::::0;8242:73:::1;::::0;-1:-1:-1;;;;;8259:6:0::1;8267:8:::0;8277:17:::1;8259:6:::0;8277:9:::1;:17::i;8242:73::-;;8200:127;8366:6;::::0;;-1:-1:-1;;;;;8383:17:0;;::::1;-1:-1:-1::0;;;;;;8383:17:0;::::1;::::0;::::1;::::0;;;8416:40:::1;::::0;8366:6;::::1;::::0;8383:17;8366:6;;8416:40:::1;::::0;8347:16:::1;::::0;8416:40:::1;7880:594;7820:654:::0;:::o;13293:134::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13381:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13381:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13293:134::o;12305:557::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;12380:14:::1;::::0;::::1;;12379:15;12371:24;;;::::0;::::1;;12430:4;-1:-1:-1::0;;;;;12414:21:0;::::1;::::0;12406:48:::1;;;::::0;-1:-1:-1;;;12406:48:0;;17006:2:1;12406:48:0::1;::::0;::::1;16988:21:1::0;17045:2;17025:18;;;17018:30;-1:-1:-1;;;17064:18:1;;;17057:44;17118:18;;12406:48:0::1;16804:338:1::0;12406:48:0::1;12465:11;:31:::0;;-1:-1:-1;;;;;;12465:31:0::1;::::0;-1:-1:-1;;;;;12465:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12511:23:::1;::::0;;-1:-1:-1;;;12511:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12511:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12511:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12511:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12507:348;;12844:8;::::0;::::1;12507:348;12598:9;:29:::0;;-1:-1:-1;;;;;;12598:29:0::1;;-1:-1:-1::0;;;;;12598:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12629:6:::1;:22:::0;;-1:-1:-1;;;;;;12629:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12653:15:0;;;-1:-1:-1;12653:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12653:22:0::1;::::0;;::::1;::::0;;12700:6:::1;::::0;12716:9;;12691:55:::1;::::0;12700:6;::::1;::::0;12716:9;;::::1;;-1:-1:-1::0;;12691:8:0::1;:55::i;:::-;12793:9;::::0;12761:62:::1;::::0;12778:4:::1;::::0;12793:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12793:9:0::1;-1:-1:-1::0;;12761:8:0::1;:62::i;12507:348::-;12305:557:::0;:::o;16653:108::-;16696:7;16739:13;5196:2;16739;:13;:::i;:::-;16723:12;;:30;;;;:::i;9763:117::-;-1:-1:-1;;;;;9856:16:0;9829:7;9856:16;;;;;;;;;;;;9763:117::o;8482:310::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;8549:14:::1;::::0;::::1;;8541:74;;;::::0;-1:-1:-1;;;8541:74:0;;17739:2:1;8541:74:0::1;::::0;::::1;17721:21:1::0;17778:2;17758:18;;;17751:30;17817:34;17797:18;;;17790:62;-1:-1:-1;;;17868:18:1;;;17861:45;17923:19;;8541:74:0::1;17537:411:1::0;8541:74:0::1;8646:6;::::0;8626:34:::1;::::0;-1:-1:-1;;;;;8646:6:0::1;;8626:19;:34::i;:::-;8690:6;::::0;;-1:-1:-1;;;;;;8707:19:0;::::1;::::0;;;8742:42:::1;::::0;-1:-1:-1;;;;;8690:6:0;;::::1;::::0;8671:16:::1;::::0;8690:6;;8742:42:::1;::::0;8671:16;;8742:42:::1;8530:262;8482:310::o:0;15250:182::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;15403:14:::1;:21:::0;;-1:-1:-1;;15403:21:0::1;15420:4;15403:21;::::0;;15250:182::o;11733:564::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;11815:7:::1;11810:480;;-1:-1:-1::0;;;;;11839:13:0;;::::1;11855:5;11839:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;11839:21:0::1;::::0;;11875:11:::1;::::0;:34;;-1:-1:-1;;;11875:34:0;;::::1;::::0;::::1;18121:51:1::0;;;;18188:18;;;18181:50;;;;11875:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18094:18:1;;11875:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;11810:480;11946:17;::::0;:22;11942:135:::1;;12035:6;12015:17;;11997:15;:35;;;;:::i;:::-;:44;11989:72;;;::::0;-1:-1:-1;;;11989:72:0;;18444:2:1;11989:72:0::1;::::0;::::1;18426:21:1::0;18483:2;18463:18;;;18456:30;-1:-1:-1;;;18502:18:1;;;18495:45;18557:18;;11989:72:0::1;18242:339:1::0;11989:72:0::1;-1:-1:-1::0;;;;;12100:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12099:14;12091:54;;;::::0;-1:-1:-1;;;12091:54:0;;18788:2:1;12091:54:0::1;::::0;::::1;18770:21:1::0;18827:2;18807:18;;;18800:30;18866:29;18846:18;;;18839:57;18913:18;;12091:54:0::1;18586:351:1::0;12091:54:0::1;-1:-1:-1::0;;;;;12160:13:0;;::::1;;::::0;;;12176:4:::1;12160:13;::::0;;;;;;;;:20;;-1:-1:-1;;12160:20:0::1;::::0;::::1;::::0;;12215:15:::1;12195:17;:35:::0;12245:11:::1;::::0;:33;;-1:-1:-1;;;12245:33:0;;::::1;::::0;::::1;18121:51:1::0;;;;18188:18;;;18181:50;12245:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18094:18:1;;12245:33:0::1;17953:284:1::0;10548:175:0;7674:6;;10614:4;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;10663:9:::1;::::0;10631:62:::1;::::0;10648:4:::1;::::0;10663:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10663:9:0::1;-1:-1:-1::0;;10631:8:0::1;:62::i;:::-;-1:-1:-1::0;10711:4:0::1;10548:175:::0;:::o;23196:737::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;23258:14:::1;::::0;::::1;;23257:15;23249:52;;;::::0;-1:-1:-1;;;23249:52:0;;19144:2:1;23249:52:0::1;::::0;::::1;19126:21:1::0;19183:2;19163:18;;;19156:30;19222:26;19202:18;;;19195:54;19266:18;;23249:52:0::1;18942:348:1::0;23249:52:0::1;23320:16;::::0;::::1;::::0;::::1;;;23312:53;;;::::0;-1:-1:-1;;;23312:53:0;;19497:2:1;23312:53:0::1;::::0;::::1;19479:21:1::0;19536:2;19516:18;;;19509:30;19575:26;19555:18;;;19548:54;19619:18;;23312:53:0::1;19295:348:1::0;23312:53:0::1;23388:11;::::0;;;::::1;-1:-1:-1::0;;;;;23388:11:0::1;23376:106;;23430:11;:40:::0;;-1:-1:-1;;;;;;23430:40:0::1;23464:4;23430:40:::0;::::1;;::::0;;23376:106:::1;23496:11;::::0;23518:6:::1;::::0;23496:87:::1;::::0;-1:-1:-1;;;23496:87:0;;-1:-1:-1;;;;;23518:6:0;;::::1;23496:87;::::0;::::1;19871:51:1::0;19970:10;23533:12:0::1;19958:23:1::0;19938:18;;;19931:51;20030:18;23555:15:0::1;20018:31:1::0;19998:18;;;19991:59;5196:2:0::1;20066:18:1::0;;;20059:45;23496:11:0;;;::::1;;::::0;:21:::1;::::0;19843:19:1;;23496:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23492:103:::0;23609:11:::1;::::0;23640:6:::1;::::0;-1:-1:-1;;;;;23609:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;23630:17:::1;::::0;23640:6:::1;23630:9;:17::i;:::-;23609:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;23609:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;23609:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;23609:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;23605:207:::0;::::1;;23720:13;:29:::0;;;;23764:10:::1;:27:::0;23605:207:::1;23822:14;:21:::0;;-1:-1:-1;;23822:21:0;;::::1;23839:4;23822:21;::::0;;;23854:23:::1;:31:::0;;;;::::1;::::0;;23910:15:::1;23896:11;:29:::0;23196:737::o;9888:165::-;9966:4;9983:40;9993:10;10005:9;10016:6;9983:9;:40::i;:::-;-1:-1:-1;10041:4:0;;9888:165;-1:-1:-1;;;9888:165:0:o;24131:296::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;24209:16:::1;::::0;::::1;::::0;::::1;;;24205:111;;;24267:4;-1:-1:-1::0;;;;;24250:22:0;::::1;::::0;24242:62:::1;;;::::0;-1:-1:-1;;;24242:62:0;;20567:2:1;24242:62:0::1;::::0;::::1;20549:21:1::0;20606:2;20586:18;;;20579:30;20645:29;20625:18;;;20618:57;20692:18;;24242:62:0::1;20365:351:1::0;24242:62:0::1;24380:6;::::0;24388:30:::1;::::0;-1:-1:-1;;;24388:30:0;;24412:4:::1;24388:30;::::0;::::1;160:51:1::0;24348:5:0;;-1:-1:-1;;;;;24365:14:0;;::::1;::::0;::::1;::::0;24380:6;;;::::1;::::0;24365:14;;24388:15:::1;::::0;133:18:1;;24388:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24365:54;::::0;-1:-1:-1;;;;;;24365:54:0::1;::::0;;;;;;-1:-1:-1;;;;;21102:32:1;;;24365:54:0::1;::::0;::::1;21084:51:1::0;21151:18;;;21144:34;21057:18;;24365:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18020:263::-:0;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;18129:19:::1;:33:::0;;-1:-1:-1;;;;18129:33:0::1;-1:-1:-1::0;;;18129:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;18173:22:::1;:47:::0;;-1:-1:-1;;18173:47:0::1;::::0;::::1;;;::::0;;18236:39:::1;::::0;4156:41:1;;;18236:39:0::1;::::0;4144:2:1;4129:18;18236:39:0::1;;;;;;;;18020:263:::0;;:::o;14697:202::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;14853:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;14853:38:0;;-1:-1:-1;;;;;178:32:1;;;14853:38:0::1;::::0;::::1;160:51:1::0;14853:11:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;133:18:1;;14853:38:0::1;14:203:1::0;11045:680:0;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;11125:16:::1;::::0;::::1;::::0;::::1;;;11124:17;11116:60;;;::::0;-1:-1:-1;;;11116:60:0;;21641:2:1;11116:60:0::1;::::0;::::1;21623:21:1::0;21680:2;21660:18;;;21653:30;21719:32;21699:18;;;21692:60;21769:18;;11116:60:0::1;21439:354:1::0;11116:60:0::1;11187:20;11220:9;11187:43;;11241:16;11271:10;-1:-1:-1::0;;;;;11271:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11260:40:0::1;;11309:4;11316:10;-1:-1:-1::0;;;;;11316:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11260:74;::::0;-1:-1:-1;;;;;;11260:74:0::1;::::0;;;;;;-1:-1:-1;;;;;22284:15:1;;;11260:74:0::1;::::0;::::1;22266:34:1::0;22336:15;;22316:18;;;22309:43;22201:18;;11260:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11353:6;::::0;-1:-1:-1;;;;;11353:6:0;;::::1;11363:5;11345:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;11345:23:0::1;::::0;;11241:93;;-1:-1:-1;11383:22:0;::::1;11379:200;;11442:10;-1:-1:-1::0;;;;;11442:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11431:43:0::1;;11483:4;11490:10;-1:-1:-1::0;;;;;11490:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11431:77;::::0;-1:-1:-1;;;;;;11431:77:0::1;::::0;;;;;;-1:-1:-1;;;;;22284:15:1;;;11431:77:0::1;::::0;::::1;22266:34:1::0;22336:15;;22316:18;;;22309:43;22201:18;;11431:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11422:6;:86:::0;;-1:-1:-1;;;;;;11422:86:0::1;-1:-1:-1::0;;;;;11422:86:0;;;::::1;::::0;;;::::1;::::0;;11379:200:::1;;;11550:6;:17:::0;;-1:-1:-1;;;;;;11550:17:0::1;-1:-1:-1::0;;;;;11550:17:0;::::1;;::::0;;11379:200:::1;11589:9;:22:::0;;-1:-1:-1;;;;;;11589:22:0::1;;-1:-1:-1::0;;;;;11589:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11630:6:::1;::::0;;::::1;-1:-1:-1::0;11622:15:0;;;-1:-1:-1;11622:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;11622:22:0::1;::::0;;::::1;::::0;;11687:9;;11655:62:::1;::::0;11672:4:::1;::::0;11687:9;::::1;;-1:-1:-1::0;;11655:8:0::1;:62::i;15901:191::-:0;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15986:23:0;::::1;15978:59;;;::::0;-1:-1:-1;;;15978:59:0;;22565:2:1;15978:59:0::1;::::0;::::1;22547:21:1::0;22604:2;22584:18;;;22577:30;22643:25;22623:18;;;22616:53;22686:18;;15978:59:0::1;22363:347:1::0;15978:59:0::1;16048:15;:36:::0;;-1:-1:-1;;;;;;16048:36:0::1;-1:-1:-1::0;;;;;16048:36:0;;;::::1;::::0;;;::::1;::::0;;15901:191::o;23941:182::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;24008:16:::1;::::0;::::1;::::0;::::1;;;24007:17;23999:58;;;::::0;-1:-1:-1;;;23999:58:0;;22917:2:1;23999:58:0::1;::::0;::::1;22899:21:1::0;22956:2;22936:18;;;22929:30;22995;22975:18;;;22968:58;23043:18;;23999:58:0::1;22715:352:1::0;23999:58:0::1;24076:6;::::0;24068:47:::1;::::0;-1:-1:-1;;;;;24076:6:0;;::::1;::::0;24093:21:::1;24068:47:::0;::::1;;;::::0;24076:6:::1;24068:47:::0;24076:6;24068:47;24093:21;24076:6;24068:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;13952:251:::0;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;14146:11:::1;::::0;:49:::1;::::0;-1:-1:-1;;;14146:49:0;;-1:-1:-1;;;;;18139:32:1;;;14146:49:0::1;::::0;::::1;18121:51:1::0;18215:14;;18208:22;18188:18;;;18181:50;14146:11:0;;;::::1;::::0;;::::1;::::0;:31:::1;::::0;18094:18:1;;14146:49:0::1;17953:284:1::0;17088:699:0;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;17288:16;17268;5257:13:::1;5196:2;5257;:13;:::i;:::-;5240:30;::::0;5042:10:::1;5240:30;:::i;:::-;17258:26;;;;:::i;:::-;17257:47;;;;:::i;:::-;17241:13;:63:::0;17356:13;17339;5257::::1;5196:2;5257;:13;:::i;:::-;5240:30;::::0;5042:10:::1;5240:30;:::i;:::-;17329:23;;;;:::i;:::-;17328:41;;;;:::i;:::-;17315:10;:54:::0;;;17388:13:::1;::::0;:27:::1;;17380:73;;;::::0;-1:-1:-1;;;17380:73:0;;23274:2:1;17380:73:0::1;::::0;::::1;23256:21:1::0;23313:2;23293:18;;;23286:30;23352:34;23332:18;;;23325:62;-1:-1:-1;;;23403:18:1;;;23396:31;23444:19;;17380:73:0::1;23072:397:1::0;17380:73:0::1;17497:6;::::0;5692:5:::1;::::0;17487:17:::1;::::0;-1:-1:-1;;;;;17497:6:0::1;17487:9;:17::i;:::-;:23;::::0;17507:3:::1;17487:23;:::i;:::-;17486:44;;;;:::i;:::-;17472:10;;:58;;17464:106;;;::::0;-1:-1:-1;;;17464:106:0;;23676:2:1;17464:106:0::1;::::0;::::1;23658:21:1::0;23715:2;23695:18;;;23688:30;23754:34;23734:18;;;23727:62;-1:-1:-1;;;23805:18:1;;;23798:33;23848:19;;17464:106:0::1;23474:399:1::0;17464:106:0::1;17613:9;5257:13;5196:2;5257;:13;:::i;:::-;5240:30;::::0;5042:10:::1;5240:30;:::i;:::-;17603:19;;;;:::i;:::-;17589:10;;:33;;17581:92;;;;-1:-1:-1::0;;;17581:92:0::1;;;;;;;:::i;:::-;17719:9;5257:13;5196:2;5257;:13;:::i;:::-;5240:30;::::0;5042:10:::1;5240:30;:::i;:::-;17709:19;;;;:::i;:::-;17692:13;;:36;;17684:95;;;;-1:-1:-1::0;;;17684:95:0::1;;;;;;;:::i;:::-;17088:699:::0;;;;:::o;14560:129::-;14647:11;;:34;;-1:-1:-1;;;14647:34:0;;-1:-1:-1;;;;;178:32:1;;;14647:34:0;;;160:51:1;14623:4:0;;14647:11;;;;;:25;;133:18:1;;14647:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13583:148::-;7674:6;;-1:-1:-1;;;;;7674:6:0;7684:10;7674:20;7666:50;;;;-1:-1:-1;;;7666:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13679:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13679:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13583:148::o;10230:310::-;-1:-1:-1;;;;;10325:20:0;;10317:52;;;;-1:-1:-1;;;10317:52:0;;24495:2:1;10317:52:0;;;24477:21:1;24534:2;24514:18;;;24507:30;-1:-1:-1;;;24553:18:1;;;24546:49;24612:18;;10317:52:0;24293:343:1;10317:52:0;-1:-1:-1;;;;;10388:21:0;;10380:53;;;;-1:-1:-1;;;10380:53:0;;24495:2:1;10380:53:0;;;24477:21:1;24534:2;24514:18;;;24507:30;-1:-1:-1;;;24553:18:1;;;24546:49;24612:18;;10380:53:0;24293:343:1;10380:53:0;-1:-1:-1;;;;;10446:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10499:33;;368:25:1;;;10499:33:0;;341:18:1;10499:33:0;;;;;;;10230:310;;;:::o;19562:2286::-;19641:4;-1:-1:-1;;;;;19666:18:0;;19658:68;;;;-1:-1:-1;;;19658:68:0;;24843:2:1;19658:68:0;;;24825:21:1;24882:2;24862:18;;;24855:30;24921:34;24901:18;;;24894:62;-1:-1:-1;;;24972:18:1;;;24965:35;25017:19;;19658:68:0;24641:401:1;19658:68:0;-1:-1:-1;;;;;19745:16:0;;19737:64;;;;-1:-1:-1;;;19737:64:0;;25249:2:1;19737:64:0;;;25231:21:1;25288:2;25268:18;;;25261:30;25327:34;25307:18;;;25300:62;-1:-1:-1;;;25378:18:1;;;25371:33;25421:19;;19737:64:0;25047:399:1;19737:64:0;19829:1;19820:6;:10;19812:64;;;;-1:-1:-1;;;19812:64:0;;25653:2:1;19812:64:0;;;25635:21:1;25692:2;25672:18;;;25665:30;25731:34;25711:18;;;25704:62;-1:-1:-1;;;25782:18:1;;;25775:39;25831:19;;19812:64:0;25451:405:1;19812:64:0;-1:-1:-1;;;;;19975:13:0;;19887:8;19975:13;;;:7;:13;;;;;;19887:8;;;;19975:13;;19971:162;;;20011:4;20005:10;;19971:162;;;-1:-1:-1;;;;;20037:11:0;;;;;;:7;:11;;;;;;;;20033:100;;;20072:4;20065:11;;20033:100;;;-1:-1:-1;20117:4:0;20033:100;20147:20;20158:4;20164:2;20147:10;:20::i;:::-;20143:874;;;20188:14;;;;20184:319;;20228:5;20223:265;;20258:34;;-1:-1:-1;;;20258:34:0;;26063:2:1;20258:34:0;;;26045:21:1;26102:2;26082:18;;;26075:30;26141:26;26121:18;;;26114:54;26185:18;;20258:34:0;25861:348:1;20223:265:0;-1:-1:-1;;;;;20323:31:0;;;;;;:25;:31;;;;;;;;20322:32;:66;;;;-1:-1:-1;;;;;;20359:29:0;;;;;;:25;:29;;;;;;;;20358:30;20322:66;20318:170;;;20413:55;;-1:-1:-1;;;20413:55:0;;26416:2:1;20413:55:0;;;26398:21:1;26455:2;26435:18;;;26428:30;26494:34;26474:18;;;26467:62;-1:-1:-1;;;26545:18:1;;;26538:43;26598:19;;20413:55:0;26214:409:1;20318:170:0;20521:3;:11;;;;20528:4;20521:11;20517:232;;;-1:-1:-1;;;;;20557:27:0;;;;;;:21;:27;;;;;;;;20556:28;:58;;;;-1:-1:-1;;;;;;20589:25:0;;;;;;:21;:25;;;;;;;;20588:26;20556:58;20552:182;;;20657:12;;20647:6;:22;;20639:75;;;;-1:-1:-1;;;20639:75:0;;26830:2:1;20639:75:0;;;26812:21:1;26869:2;26849:18;;;26842:30;26908:34;26888:18;;;26881:62;-1:-1:-1;;;26959:18:1;;;26952:38;27007:19;;20639:75:0;26628:404:1;20639:75:0;20781:9;;-1:-1:-1;;;;;20767:24:0;;;20781:9;;;;;20767:24;;;;:33;;;20796:4;20795:5;20767:33;20763:243;;;-1:-1:-1;;;;;20826:25:0;;;;;;:21;:25;;;;;;;;20821:170;;20910:14;;20900:6;20884:13;20894:2;20884:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;20876:95;;;;-1:-1:-1;;;20876:95:0;;27239:2:1;20876:95:0;;;27221:21:1;27278:2;27258:18;;;27251:30;27317:34;27297:18;;;27290:62;-1:-1:-1;;;27368:18:1;;;27361:40;27418:19;;20876:95:0;27037:406:1;20876:95:0;21033:4;21029:742;;;21059:6;;-1:-1:-1;;;21059:6:0;;;;21054:706;;21090:19;;-1:-1:-1;;;21090:19:0;;;;:64;;;;-1:-1:-1;;;;;;21134:20:0;;;;;;:16;:20;;;;;;;;21133:21;21090:64;:111;;;;-1:-1:-1;;;;;;21179:22:0;;;;;;:16;:22;;;;;;;;21178:23;21090:111;21086:659;;;21244:28;21275:24;21293:4;21275:9;:24::i;:::-;21244:55;;21350:13;;21326:20;:37;21322:404;;21410:10;;21451:22;;;;21447:97;;;21508:13;;21498:6;;5692:5;;21508:13;21488:17;;-1:-1:-1;;;;;21498:6:0;21488:9;:17::i;:::-;:33;;;;:::i;:::-;21487:54;;;;:::i;:::-;21477:64;;21447:97;21598:7;21574:20;:31;21570:72;;21632:7;21609:30;;21570:72;21668:34;21681:20;21668:12;:34::i;:::-;21365:361;21322:404;21221:524;21086:659;21788:52;21805:4;21811:2;21815:6;21823:3;21828:4;21834:5;21788:16;:52::i;:::-;21781:59;19562:2286;-1:-1:-1;;;;;;;19562:2286:0:o;24890:1055::-;25009:4;25030:20;25041:4;25047:2;25030:10;:20::i;:::-;25026:228;;;25085:11;;:39;;-1:-1:-1;;;25085:39:0;;-1:-1:-1;;;;;27706:15:1;;;25085:39:0;;;27688:34:1;27758:15;;;27738:18;;;27731:43;27790:18;;;27783:34;;;25054:12:0;;25085:11;;;;;:21;;27623:18:1;;25085:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25085:39:0;;;;;;;;-1:-1:-1;;25085:39:0;;;;;;;;;;;;:::i;:::-;;;25081:122;;25192:8;;;25081:122;25175:5;-1:-1:-1;25221:7:0;25217:26;;25232:8;;;25217:26;25052:202;25026:228;-1:-1:-1;;;;;25298:25:0;;25264:12;25298:25;;;:19;:25;;;;;;25279:4;;25298:25;;;:52;;-1:-1:-1;;;;;;25327:23:0;;;;;;:19;:23;;;;;;;;25298:52;25294:99;;;-1:-1:-1;25376:5:0;25294:99;-1:-1:-1;;;;;25403:13:0;;:7;:13;;;;;;;;;;:23;;25420:6;;25403:7;:23;;25420:6;;25403:23;:::i;:::-;;;;-1:-1:-1;25437:22:0;;-1:-1:-1;25463:7:0;25462:55;;25511:6;25462:55;;;25474:34;25484:4;25490:6;25498:3;25503:4;25474:9;:34::i;:::-;25437:80;;25543:14;25528:7;:11;25536:2;-1:-1:-1;;;;;25528:11:0;-1:-1:-1;;;;;25528:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;25588:2;-1:-1:-1;;;;;25573:34:0;25582:4;-1:-1:-1;;;;;25573:34:0;;25592:14;25573:34;;;;368:25:1;;356:2;341:18;;222:177;25573:34:0;;;;;;;;25623:16;;;;;;;25618:298;;25656:28;25675:4;25681:2;25656:18;:28::i;:::-;25704:16;;;;;;;25703:17;:41;;;;;25724:20;25735:4;25741:2;25724:10;:20::i;:::-;25703:77;;;;-1:-1:-1;;;;;;25749:31:0;;;;;;:25;:31;;;;;;;;25748:32;25703:77;:111;;;;-1:-1:-1;;;;;;25785:29:0;;;;;;:25;:29;;;;;;;;25784:30;25703:111;:121;;;;;25819:5;25818:6;25703:121;25699:206;;;25845:44;;-1:-1:-1;;;25845:44:0;;28030:2:1;25845:44:0;;;28012:21:1;28069:2;28049:18;;;28042:30;28108:34;28088:18;;;28081:62;-1:-1:-1;;;28159:18:1;;;28152:32;28201:19;;25845:44:0;27828:398:1;25699:206:0;-1:-1:-1;25933:4:0;;24890:1055;-1:-1:-1;;;;;;;;24890:1055:0:o;19108:446::-;19209:6;;19177:4;;-1:-1:-1;;;;;19201:14:0;;;19209:6;;19201:14;;;;:43;;-1:-1:-1;19238:6:0;;-1:-1:-1;;;;;19232:12:0;;;19238:6;;19232:12;;19201:43;:79;;;;-1:-1:-1;19274:6:0;;-1:-1:-1;;;;;19274:6:0;19261:9;:19;;19201:79;:118;;;;-1:-1:-1;;;;;;19298:21:0;;;;;;:17;:21;;;;;;;;19297:22;19201:118;:159;;;;-1:-1:-1;;;;;;19337:23:0;;;;;;:17;:23;;;;;;;;19336:24;19201:159;:186;;;;-1:-1:-1;;;;;;19377:10:0;;5831:42;19377:10;;19201:186;:219;;;;-1:-1:-1;;;;;;19404:16:0;;;;19201:219;:257;;;;-1:-1:-1;;;;;;19437:21:0;;19453:4;19437:21;;19201:257;:302;;;;-1:-1:-1;19491:11:0;;-1:-1:-1;;;;;19475:28:0;;;19491:11;;;;;19475:28;;19201:302;:345;;;;-1:-1:-1;19534:11:0;;-1:-1:-1;;;;;19520:26:0;;;19534:11;;;;;19520:26;;19201:345;19194:352;19108:446;-1:-1:-1;;;19108:446:0:o;21856:761::-;6630:6;:13;;-1:-1:-1;;;;6630:13:0;-1:-1:-1;;;6630:13:0;;;21963:4:::1;6630:13:::0;21943:26;;;:11:::1;:26;::::0;;;;;;;21978:9:::1;::::0;6630:13;21978:9;::::1;-1:-1:-1::0;;;;;21978:9:0::1;21943:46:::0;;;;;;;;-1:-1:-1;;21943:67:0::1;21939:166;;22047:4;22027:26;::::0;;;:11:::1;:26;::::0;;;;;;;22062:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;22062:9:0::1;22027:46:::0;;;;;;;-1:-1:-1;;22027:66:0;;21939:166:::1;22149:16;::::0;;22163:1:::1;22149:16:::0;;;;;::::1;::::0;;22125:21:::1;::::0;22149:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22149:16:0::1;22125:40;;22194:4;22176;22181:1;22176:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;22176:23:0::1;;;-1:-1:-1::0;;;;;22176:23:0::1;;;::::0;::::1;22220:9;;;;;;;;;-1:-1:-1::0;;;;;22220:9:0::1;-1:-1:-1::0;;;;;22220:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22210:4;22215:1;22210:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22210:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;22253:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;22253:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;22328:20;;22363:1:::1;::::0;22379:4;;22406::::1;::::0;22426:15:::1;::::0;22253:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;22249:246;;22477:7;;;22249:246;22543:15;::::0;:66:::1;::::0;22507:12:::1;::::0;-1:-1:-1;;;;;22543:15:0::1;::::0;22599:5:::1;::::0;22571:21:::1;::::0;22507:12;22543:66;22507:12;22543:66;22571:21;22543:15;22599:5;22543:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6654:1:0::1;-1:-1:-1::0;6666:6:0;:14;;-1:-1:-1;;;;6666:14:0;;;21856:761::o;25953:767::-;26041:7;26061:18;26094:3;26090:205;;;-1:-1:-1;26127:9:0;:16;;;26090:205;;;26165:4;26161:134;;;-1:-1:-1;26199:9:0;:17;;;;;;26161:134;;;-1:-1:-1;26262:9:0;:21;;;;;;26161:134;26317:11;;;;;-1:-1:-1;;;;;26317:11:0;26341:4;26309:37;:73;;;;;26363:13;26380:2;26363:19;;26309:73;26305:101;;;-1:-1:-1;26399:4:0;26305:101;26420:10;26434:1;26420:15;26416:39;;26446:6;26439:13;;;;;26416:39;26465:17;5692:5;26485:19;26494:10;26485:6;:19;:::i;:::-;:38;;;;:::i;:::-;26465:58;-1:-1:-1;26538:13:0;;26534:141;;26584:4;26568:7;:22;;;;;;;;;;:35;;26594:9;;26568:7;:35;;26594:9;;26568:35;:::i;:::-;;;;-1:-1:-1;;26623:40:0;;368:25:1;;;26646:4:0;;-1:-1:-1;;;;;26623:40:0;;;;;356:2:1;341:18;26623:40:0;;;;;;;26534:141;26694:18;26703:9;26694:6;:18;:::i;22625:563::-;22708:16;;;;;;;22707:17;22699:65;;;;-1:-1:-1;;;22699:65:0;;29230:2:1;22699:65:0;;;29212:21:1;29269:2;29249:18;;;29242:30;29308:34;29288:18;;;29281:62;-1:-1:-1;;;29359:18:1;;;29352:33;29402:19;;22699:65:0;29028:399:1;22699:65:0;22780:20;22791:4;22797:2;22780:10;:20::i;:::-;22779:21;:37;;;;-1:-1:-1;22810:6:0;;-1:-1:-1;;;;;22804:12:0;;;22810:6;;22804:12;22779:37;22775:406;;;-1:-1:-1;;;;;22833:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;22833:30:0;;;22859:4;22833:30;;;;;;22878:19;:25;;;;;:32;;;;;;;;;;22925:16;:23;;-1:-1:-1;;22925:23:0;22833:30;22925:23;;;;;22975:11;;;;22963:114;;23021:11;:40;;-1:-1:-1;;;;;;23021:40:0;23055:4;23021:40;;;;;22963:114;23091:19;:26;;-1:-1:-1;;;;23091:26:0;-1:-1:-1;;;23091:26:0;;;23137:32;;-1:-1:-1;4156:41:1;;23137:32:0;;4144:2:1;4129:18;23137:32:0;4016:187:1;404:118;490:5;483:13;476:21;469:5;466:32;456:60;;512:1;509;502:12;527:376;589:6;597;650:2;638:9;629:7;625:23;621:32;618:52;;;666:1;663;656:12;618:52;705:9;692:23;724:28;746:5;724:28;:::i;:::-;771:5;-1:-1:-1;828:2:1;813:18;;800:32;841:30;800:32;841:30;:::i;:::-;890:7;880:17;;;527:376;;;;;:::o;908:127::-;969:10;964:3;960:20;957:1;950:31;1000:4;997:1;990:15;1024:4;1021:1;1014:15;1040:275;1111:2;1105:9;1176:2;1157:13;;-1:-1:-1;;1153:27:1;1141:40;;1211:18;1196:34;;1232:22;;;1193:62;1190:88;;;1258:18;;:::i;:::-;1294:2;1287:22;1040:275;;-1:-1:-1;1040:275:1:o;1320:183::-;1380:4;1413:18;1405:6;1402:30;1399:56;;;1435:18;;:::i;:::-;-1:-1:-1;1480:1:1;1476:14;1492:4;1472:25;;1320:183::o;1508:131::-;-1:-1:-1;;;;;1583:31:1;;1573:42;;1563:70;;1629:1;1626;1619:12;1644:737;1698:5;1751:3;1744:4;1736:6;1732:17;1728:27;1718:55;;1769:1;1766;1759:12;1718:55;1805:6;1792:20;1831:4;1855:60;1871:43;1911:2;1871:43;:::i;:::-;1855:60;:::i;:::-;1949:15;;;2035:1;2031:10;;;;2019:23;;2015:32;;;1980:12;;;;2059:15;;;2056:35;;;2087:1;2084;2077:12;2056:35;2123:2;2115:6;2111:15;2135:217;2151:6;2146:3;2143:15;2135:217;;;2231:3;2218:17;2248:31;2273:5;2248:31;:::i;:::-;2292:18;;2330:12;;;;2168;;2135:217;;;-1:-1:-1;2370:5:1;1644:737;-1:-1:-1;;;;;;1644:737:1:o;2386:477::-;2476:6;2484;2537:2;2525:9;2516:7;2512:23;2508:32;2505:52;;;2553:1;2550;2543:12;2505:52;2593:9;2580:23;2626:18;2618:6;2615:30;2612:50;;;2658:1;2655;2648:12;2612:50;2681:61;2734:7;2725:6;2714:9;2710:22;2681:61;:::i;:::-;2671:71;;;2792:2;2781:9;2777:18;2764:32;2805:28;2827:5;2805:28;:::i;3238:548::-;3350:4;3379:2;3408;3397:9;3390:21;3440:6;3434:13;3483:6;3478:2;3467:9;3463:18;3456:34;3508:1;3518:140;3532:6;3529:1;3526:13;3518:140;;;3627:14;;;3623:23;;3617:30;3593:17;;;3612:2;3589:26;3582:66;3547:10;;3518:140;;;3522:3;3707:1;3702:2;3693:6;3682:9;3678:22;3674:31;3667:42;3777:2;3770;3766:7;3761:2;3753:6;3749:15;3745:29;3734:9;3730:45;3726:54;3718:62;;;;3238:548;;;;:::o;4208:315::-;4276:6;4284;4337:2;4325:9;4316:7;4312:23;4308:32;4305:52;;;4353:1;4350;4343:12;4305:52;4392:9;4379:23;4411:31;4436:5;4411:31;:::i;:::-;4461:5;4513:2;4498:18;;;;4485:32;;-1:-1:-1;;;4208:315:1:o;4528:247::-;4587:6;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4695:9;4682:23;4714:31;4739:5;4714:31;:::i;4780:388::-;4848:6;4856;4909:2;4897:9;4888:7;4884:23;4880:32;4877:52;;;4925:1;4922;4915:12;4877:52;4964:9;4951:23;4983:31;5008:5;4983:31;:::i;:::-;5033:5;-1:-1:-1;5090:2:1;5075:18;;5062:32;5103:33;5062:32;5103:33;:::i;5173:456::-;5250:6;5258;5266;5319:2;5307:9;5298:7;5294:23;5290:32;5287:52;;;5335:1;5332;5325:12;5287:52;5374:9;5361:23;5393:31;5418:5;5393:31;:::i;:::-;5443:5;-1:-1:-1;5500:2:1;5485:18;;5472:32;5513:33;5472:32;5513:33;:::i;:::-;5173:456;;5565:7;;-1:-1:-1;;;5619:2:1;5604:18;;;;5591:32;;5173:456::o;5634:248::-;5702:6;5710;5763:2;5751:9;5742:7;5738:23;5734:32;5731:52;;;5779:1;5776;5769:12;5731:52;-1:-1:-1;;5802:23:1;;;5872:2;5857:18;;;5844:32;;-1:-1:-1;5634:248:1:o;5887:1138::-;6005:6;6013;6066:2;6054:9;6045:7;6041:23;6037:32;6034:52;;;6082:1;6079;6072:12;6034:52;6122:9;6109:23;6151:18;6192:2;6184:6;6181:14;6178:34;;;6208:1;6205;6198:12;6178:34;6231:61;6284:7;6275:6;6264:9;6260:22;6231:61;:::i;:::-;6221:71;;6311:2;6301:12;;6366:2;6355:9;6351:18;6338:32;6395:2;6385:8;6382:16;6379:36;;;6411:1;6408;6401:12;6379:36;6434:24;;;-1:-1:-1;6489:4:1;6481:13;;6477:27;-1:-1:-1;6467:55:1;;6518:1;6515;6508:12;6467:55;6554:2;6541:16;6577:60;6593:43;6633:2;6593:43;:::i;6577:60::-;6671:15;;;6753:1;6749:10;;;;6741:19;;6737:28;;;6702:12;;;;6777:19;;;6774:39;;;6809:1;6806;6799:12;6774:39;6833:11;;;;6853:142;6869:6;6864:3;6861:15;6853:142;;;6935:17;;6923:30;;6886:12;;;;6973;;;;6853:142;;;7014:5;7004:15;;;;;;;5887:1138;;;;;:::o;7219:159::-;7286:20;;7346:6;7335:18;;7325:29;;7315:57;;7368:1;7365;7358:12;7315:57;7219:159;;;:::o;7383:328::-;7457:6;7465;7473;7526:2;7514:9;7505:7;7501:23;7497:32;7494:52;;;7542:1;7539;7532:12;7494:52;7565:28;7583:9;7565:28;:::i;:::-;7555:38;;7612:37;7645:2;7634:9;7630:18;7612:37;:::i;:::-;7602:47;;7668:37;7701:2;7690:9;7686:18;7668:37;:::i;:::-;7658:47;;7383:328;;;;;:::o;7716:382::-;7781:6;7789;7842:2;7830:9;7821:7;7817:23;7813:32;7810:52;;;7858:1;7855;7848:12;7810:52;7897:9;7884:23;7916:31;7941:5;7916:31;:::i;8103:180::-;8162:6;8215:2;8203:9;8194:7;8190:23;8186:32;8183:52;;;8231:1;8228;8221:12;8183:52;-1:-1:-1;8254:23:1;;8103:180;-1:-1:-1;8103:180:1:o;8772:385::-;8858:6;8866;8874;8882;8935:3;8923:9;8914:7;8910:23;8906:33;8903:53;;;8952:1;8949;8942:12;8903:53;-1:-1:-1;;8975:23:1;;;9045:2;9030:18;;9017:32;;-1:-1:-1;9096:2:1;9081:18;;9068:32;;9147:2;9132:18;9119:32;;-1:-1:-1;8772:385:1;-1:-1:-1;8772:385:1:o;9162:341::-;9364:2;9346:21;;;9403:2;9383:18;;;9376:30;-1:-1:-1;;;9437:2:1;9422:18;;9415:47;9494:2;9479:18;;9162:341::o;10127:461::-;10180:3;10218:5;10212:12;10245:6;10240:3;10233:19;10271:4;10300:2;10295:3;10291:12;10284:19;;10337:2;10330:5;10326:14;10358:1;10368:195;10382:6;10379:1;10376:13;10368:195;;;10447:13;;-1:-1:-1;;;;;10443:39:1;10431:52;;10503:12;;;;10538:15;;;;10479:1;10397:9;10368:195;;;-1:-1:-1;10579:3:1;;10127:461;-1:-1:-1;;;;;10127:461:1:o;10593:342::-;10794:2;10783:9;10776:21;10757:4;10814:56;10866:2;10855:9;10851:18;10843:6;10814:56;:::i;:::-;10806:64;;10920:6;10913:14;10906:22;10901:2;10890:9;10886:18;10879:50;10593:342;;;;;:::o;10940:127::-;11001:10;10996:3;10992:20;10989:1;10982:31;11032:4;11029:1;11022:15;11056:4;11053:1;11046:15;11072:422;11161:1;11204:5;11161:1;11218:270;11239:7;11229:8;11226:21;11218:270;;;11298:4;11294:1;11290:6;11286:17;11280:4;11277:27;11274:53;;;11307:18;;:::i;:::-;11357:7;11347:8;11343:22;11340:55;;;11377:16;;;;11340:55;11456:22;;;;11416:15;;;;11218:270;;;11222:3;11072:422;;;;;:::o;11499:806::-;11548:5;11578:8;11568:80;;-1:-1:-1;11619:1:1;11633:5;;11568:80;11667:4;11657:76;;-1:-1:-1;11704:1:1;11718:5;;11657:76;11749:4;11767:1;11762:59;;;;11835:1;11830:130;;;;11742:218;;11762:59;11792:1;11783:10;;11806:5;;;11830:130;11867:3;11857:8;11854:17;11851:43;;;11874:18;;:::i;:::-;-1:-1:-1;;11930:1:1;11916:16;;11945:5;;11742:218;;12044:2;12034:8;12031:16;12025:3;12019:4;12016:13;12012:36;12006:2;11996:8;11993:16;11988:2;11982:4;11979:12;11975:35;11972:77;11969:159;;;-1:-1:-1;12081:19:1;;;12113:5;;11969:159;12160:34;12185:8;12179:4;12160:34;:::i;:::-;12230:6;12226:1;12222:6;12218:19;12209:7;12206:32;12203:58;;;12241:18;;:::i;:::-;12279:20;;11499:806;-1:-1:-1;;;11499:806:1:o;12310:140::-;12368:5;12397:47;12438:4;12428:8;12424:19;12418:4;12397:47;:::i;12455:217::-;12495:1;12521;12511:132;;12565:10;12560:3;12556:20;12553:1;12546:31;12600:4;12597:1;12590:15;12628:4;12625:1;12618:15;12511:132;-1:-1:-1;12657:9:1;;12455:217::o;13017:168::-;13090:9;;;13121;;13138:15;;;13132:22;;13118:37;13108:71;;13159:18;;:::i;13190:128::-;13257:9;;;13278:11;;;13275:37;;;13292:18;;:::i;14090:127::-;14151:10;14146:3;14142:20;14139:1;14132:31;14182:4;14179:1;14172:15;14206:4;14203:1;14196:15;14569:197;14607:3;14635:6;14676:2;14669:5;14665:14;14703:2;14694:7;14691:15;14688:41;;14709:18;;:::i;:::-;14758:1;14745:15;;14569:197;-1:-1:-1;;;14569:197:1:o;14771:125::-;14836:9;;;14857:10;;;14854:36;;;14870:18;;:::i;16374:425::-;16576:2;16558:21;;;16615:2;16595:18;;;16588:30;16654:34;16649:2;16634:18;;16627:62;16725:31;16720:2;16705:18;;16698:59;16789:3;16774:19;;16374:425::o;17147:385::-;17226:6;17234;17287:2;17275:9;17266:7;17262:23;17258:32;17255:52;;;17303:1;17300;17293:12;17255:52;17335:9;17329:16;17354:31;17379:5;17354:31;:::i;:::-;17454:2;17439:18;;17433:25;17404:5;;-1:-1:-1;17467:33:1;17433:25;17467:33;:::i;20115:245::-;20194:6;20202;20255:2;20243:9;20234:7;20230:23;20226:32;20223:52;;;20271:1;20268;20261:12;20223:52;-1:-1:-1;;20294:16:1;;20350:2;20335:18;;;20329:25;20294:16;;20329:25;;-1:-1:-1;20115:245:1:o;20721:184::-;20791:6;20844:2;20832:9;20823:7;20819:23;20815:32;20812:52;;;20860:1;20857;20850:12;20812:52;-1:-1:-1;20883:16:1;;20721:184;-1:-1:-1;20721:184:1:o;21189:245::-;21256:6;21309:2;21297:9;21288:7;21284:23;21280:32;21277:52;;;21325:1;21322;21315:12;21277:52;21357:9;21351:16;21376:28;21398:5;21376:28;:::i;21798:251::-;21868:6;21921:2;21909:9;21900:7;21896:23;21892:32;21889:52;;;21937:1;21934;21927:12;21889:52;21969:9;21963:16;21988:31;22013:5;21988:31;:::i;23878:410::-;24080:2;24062:21;;;24119:2;24099:18;;;24092:30;24158:34;24153:2;24138:18;;24131:62;-1:-1:-1;;;24224:2:1;24209:18;;24202:44;24278:3;24263:19;;23878:410::o;28231:582::-;28530:6;28519:9;28512:25;28573:6;28568:2;28557:9;28553:18;28546:34;28616:3;28611:2;28600:9;28596:18;28589:31;28493:4;28637:57;28689:3;28678:9;28674:19;28666:6;28637:57;:::i;:::-;-1:-1:-1;;;;;28730:32:1;;;;28725:2;28710:18;;28703:60;-1:-1:-1;28794:3:1;28779:19;28772:35;28629:65;28231:582;-1:-1:-1;;;28231:582:1:o

Swarm Source

ipfs://2e611fe03e578c97b6632047bfb076a190a6ce7056d74de0d66b144228ac9cdb

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.