ETH Price: $2,392.37 (-3.45%)

Contract

0xC1F0DA2bd5F7E381c77F12b91Bc6aF81d8da22Ed
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer198508442024-05-12 2:03:59144 days ago1715479439IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.001813463.27037421
Approve175068672023-06-18 13:09:59472 days ago1687093799IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0006572714.10164729
Transfer173237792023-05-23 18:43:23498 days ago1684867403IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0083410154.33706638
Transfer173236802023-05-23 18:23:35498 days ago1684866215IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0244984281.97180218
Approve171977012023-05-05 23:28:23516 days ago1683329303IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.00685316147.0321709
Transfer171418772023-04-28 3:12:23524 days ago1682651543IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0118023435.91846396
Approve171414562023-04-28 1:46:59524 days ago1682646419IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0013939930.09355939
Approve171379772023-04-27 14:01:59524 days ago1682604119IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0020609744.21750573
Approve171371752023-04-27 11:19:59524 days ago1682594399IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.001664535.66538778
Transfer171371632023-04-27 11:17:23524 days ago1682594243IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0128951832.62068735
Approve171102772023-04-23 16:43:59528 days ago1682268239IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0020748744.5156026
Approve171084352023-04-23 10:31:35528 days ago1682245895IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0021098545.26605057
Approve170994262023-04-22 4:12:23530 days ago1682136743IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0016815736.07765274
Approve170961822023-04-21 17:16:47530 days ago1682097407IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0016205934.9763625
Approve170919242023-04-21 2:52:11531 days ago1682045531IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0018022338.66618152
Approve170894752023-04-20 18:31:11531 days ago1682015471IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0030777966.03302347
Approve170858082023-04-20 5:58:35531 days ago1681970315IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0031798568.22249749
Approve170838582023-04-19 23:21:11532 days ago1681946471IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0044917796.36937049
Approve170830002023-04-19 20:25:47532 days ago1681935947IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0036756278.8591313
Approve170776342023-04-19 2:14:59533 days ago1681870499IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0020918344.87961139
Approve170702332023-04-18 1:08:11534 days ago1681780091IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.001639435.17281173
Transfer170702112023-04-18 1:03:47534 days ago1681779827IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.008695935.23861941
Approve170637182023-04-17 3:01:11535 days ago1681700471IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0015380332.95560285
Approve170617822023-04-16 20:24:23535 days ago1681676663IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0014719431.5800904
Approve170598912023-04-16 13:58:47535 days ago1681653527IN
0xC1F0DA2b...1d8da22Ed
0 ETH0.0011040923.68798141
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
173311732023-05-24 19:37:59497 days ago1684957079
0xC1F0DA2b...1d8da22Ed
0.00644044 ETH
173311732023-05-24 19:37:59497 days ago1684957079
0xC1F0DA2b...1d8da22Ed
0.00214624 ETH
173311732023-05-24 19:37:59497 days ago1684957079
0xC1F0DA2b...1d8da22Ed
0.00000171 ETH
173311732023-05-24 19:37:59497 days ago1684957079
0xC1F0DA2b...1d8da22Ed
0.00107312 ETH
173311732023-05-24 19:37:59497 days ago1684957079
0xC1F0DA2b...1d8da22Ed
0.0096581 ETH
173311622023-05-24 19:35:47497 days ago1684956947
0xC1F0DA2b...1d8da22Ed
0.00575032 ETH
173311622023-05-24 19:35:47497 days ago1684956947
0xC1F0DA2b...1d8da22Ed
0.00191661 ETH
173311622023-05-24 19:35:47497 days ago1684956947
0xC1F0DA2b...1d8da22Ed
0.00000048 ETH
173311622023-05-24 19:35:47497 days ago1684956947
0xC1F0DA2b...1d8da22Ed
0.0009583 ETH
173311622023-05-24 19:35:47497 days ago1684956947
0xC1F0DA2b...1d8da22Ed
0.00862476 ETH
171480232023-04-28 23:54:35523 days ago1682726075
0xC1F0DA2b...1d8da22Ed
0.01007892 ETH
171480232023-04-28 23:54:35523 days ago1682726075
0xC1F0DA2b...1d8da22Ed
0.0033581 ETH
171480232023-04-28 23:54:35523 days ago1682726075
0xC1F0DA2b...1d8da22Ed
0.00000462 ETH
171480232023-04-28 23:54:35523 days ago1682726075
0xC1F0DA2b...1d8da22Ed
0.00167905 ETH
171480232023-04-28 23:54:35523 days ago1682726075
0xC1F0DA2b...1d8da22Ed
0.01511145 ETH
171480122023-04-28 23:52:23523 days ago1682725943
0xC1F0DA2b...1d8da22Ed
0.01286032 ETH
171480122023-04-28 23:52:23523 days ago1682725943
0xC1F0DA2b...1d8da22Ed
0.00428441 ETH
171480122023-04-28 23:52:23523 days ago1682725943
0xC1F0DA2b...1d8da22Ed
0.00000706 ETH
171480122023-04-28 23:52:23523 days ago1682725943
0xC1F0DA2b...1d8da22Ed
0.0021422 ETH
171480122023-04-28 23:52:23523 days ago1682725943
0xC1F0DA2b...1d8da22Ed
0.01927987 ETH
171416952023-04-28 2:35:23524 days ago1682649323
0xC1F0DA2b...1d8da22Ed
0.01561439 ETH
171416952023-04-28 2:35:23524 days ago1682649323
0xC1F0DA2b...1d8da22Ed
0.00520168 ETH
171416952023-04-28 2:35:23524 days ago1682649323
0xC1F0DA2b...1d8da22Ed
0.00000933 ETH
171416952023-04-28 2:35:23524 days ago1682649323
0xC1F0DA2b...1d8da22Ed
0.00260084 ETH
171416952023-04-28 2:35:23524 days ago1682649323
0xC1F0DA2b...1d8da22Ed
0.02340758 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SlimBabyDoge

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-10
*/

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

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

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

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

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

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

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

interface Cashier {
    function setRewardsProperties(uint256 _minPeriod, uint256 _minReflection) external;
    function tally(address user, uint256 amount) external;
    function load() external payable;
    function cashout(uint256 gas) external;
    function giveMeWelfarePlease(address hobo) external;
    function getTotalDistributed() external view returns(uint256);
    function getUserInfo(address user) external view returns(string memory, string memory, string memory, string memory);
    function getUserRealizedRewards(address user) external view returns (uint256);
    function getPendingRewards(address user) external view returns (uint256);
    function initialize() external;
    function getCurrentReward() external view returns (address);
}

contract SlimBabyDoge is IERC20 {
    mapping (address => uint256) _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromDividends;
    mapping (address => bool) private _liquidityHolders;

    uint256 constant private startingSupply = 222_000_000_000_000;
    string constant private _name = "SlimBabyDoge";
    string constant private _symbol = "SBD";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * (10 ** _decimals);

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

    struct Ratios {
        uint16 rewards;
        uint16 liquidity;
        uint16 marketing;
        uint16 total;
    }

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

    Ratios public _ratios = Ratios({
        rewards: 100,
        liquidity: 100,
        marketing: 300,
        total: 500
    });

    uint256 constant masterTaxDivisor = 10000;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant private ZERO = 0x0000000000000000000000000000000000000000;
    address payable public marketingWallet = payable(0xC8c54752BD48CbBcACcedEd68f69D7913Ae3e91D);

    Cashier cashier;
    uint256 cashierGas = 300000;

    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;

    bool public processReflect = false;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Protections protections;

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

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountBNB, uint256 amount);

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

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


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

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

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _isExcludedFromDividends[_owner] = true;
        _isExcludedFromDividends[lpPair] = true;
        _isExcludedFromDividends[address(this)] = true;
        _isExcludedFromDividends[DEAD] = true;
        _isExcludedFromDividends[ZERO] = true;

        // Exclude common lockers from dividends and fees.
        _isExcludedFromDividends[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromDividends[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromDividends[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

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

    address private _owner;

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

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

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

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

    receive() external payable {}
    function totalSupply() external 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 balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    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: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

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

    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);
        lpPairs[lpPair] = false;
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _isExcludedFromDividends[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

    function setInitializers(address aInitializer, address cInitializer) external onlyOwner {
        require(!tradingEnabled);
        require(cInitializer != address(this) && aInitializer != address(this) && cInitializer != aInitializer);
        cashier = Cashier(cInitializer);
        protections = Protections(aInitializer);
    }

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

    function isExcludedFromDividends(address account) external view returns(bool) {
        return _isExcludedFromDividends[account];
    }

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

    function setDividendExcluded(address account, bool enabled) public onlyOwner {
        require(account != address(this) 
                && account != lpPair
                && account != DEAD);
        _isExcludedFromDividends[account] = enabled;
        if (enabled) {
            try cashier.tally(account, 0) {} catch {}
        } else {
            try cashier.tally(account, _tOwned[account]) {} catch {}
        }
    }

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

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

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

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

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

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

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

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

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

    function setRewardsProperties(uint256 _minPeriod, uint256 _minReflection, uint256 minReflectionMultiplier) external onlyOwner {
        _minReflection = _minReflection * 10**minReflectionMultiplier;
        cashier.setRewardsProperties(_minPeriod, _minReflection);
    }

    function setReflectorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000);
        cashierGas = gas;
    }

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

    function _basicTransfer(address from, address to, uint256 amount) internal returns (bool) {
        _tOwned[from] -= amount;
        _tOwned[to] += amount;
        emit Transfer(from, to, amount);
        return true;
    }

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

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

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.total == 0) {
            return;
        }
        
        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / (ratios.total)) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

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

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

        amtBalance -= liquidityBalance;
        ratios.total -= ratios.liquidity;
        bool success;
        uint256 rewardsBalance = (amtBalance * ratios.rewards) / ratios.total;
        uint256 marketingBalance = amtBalance - (rewardsBalance);

        if (ratios.rewards > 0) {
            try cashier.load{value: rewardsBalance}() {} catch {}
        }
        (success,) = marketingWallet.call{value: address(this).balance, gas: 55000}("");
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if (address(protections) == address(0)) {
                protections = Protections(address(this));
            }
            if (address(cashier) ==  address(0)) {
                cashier = Cashier(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

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

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try protections.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }

        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = amount;
        if (takeFee) {
            amountReceived = takeTaxes(from, amount, buy, sell, other);
        }
        _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.");
            }
        }
        processRewards(from, to);
        
        return true;
    }

    function processRewards(address from, address to) internal {
        if (!_isExcludedFromDividends[from]) {
            try cashier.tally(from, _tOwned[from]) {} catch {}
        }
        if (!_isExcludedFromDividends[to]) {
            try cashier.tally(to, _tOwned[to]) {} catch {}
        }
        if (processReflect) {
            try cashier.cashout(cashierGas) {} catch {}
        }
    }

    function manualProcess(uint256 manualGas) external {
        try cashier.cashout(manualGas) {} catch {}
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell, bool other) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        if (currentFee == 0) {
            return amount;
        }

        if (address(protections) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }

    function 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 manualDeposit(uint256 amount, uint256 multiplier) external onlyOwner {
        uint256 loadAmount = address(this).balance;
        try cashier.load{value: amount * 10**multiplier}() {} catch {}
    }

    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 claimPendingRewards() external {
        cashier.giveMeWelfarePlease(msg.sender);
    }

    function getTotalReflected() external view returns (uint256) {
        return cashier.getTotalDistributed();
    }

    function getUserInfo(address user) external view returns (string memory, string memory, string memory, string memory) {
        return cashier.getUserInfo(user);
    }

    function getUserRealizedGains(address user) external view returns (uint256) {
        return cashier.getUserRealizedRewards(user);
    }

    function getUserUnpaidEarnings(address user) external view returns (uint256) {
        return cashier.getPendingRewards(user);
    }

    function getCurrentReward() external view returns (address) {
        return cashier.getCurrentReward();
    }
}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"rewards","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimPendingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentReward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalReflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserRealizedGains","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromDividends","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":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"manualDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[],"name":"processReflect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"processReflectEnabled","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":"setDividendExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"aInitializer","type":"address"},{"internalType":"address","name":"cInitializer","type":"address"}],"name":"setInitializers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setReflectorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minReflection","type":"uint256"},{"internalType":"uint256","name":"minReflectionMultiplier","type":"uint256"}],"name":"setRewardsProperties","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":"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":"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"}]

600060028190556101f4608081905260a081905260c0919091526008805465ffffffffffff19166301f401f4179055610160604052606460e08190526101005261012c6101205261014052600980546701f4012c006400646001600160401b0319909116178155600c80546001600160a01b031990811673c8c54752bd48cbbcacceded68f69d7913ae3e91d17909155620493e0600e55600f805461ff0019169055600a60138190556014805462ffffff19169055601580549092163317909155620000cc919062000923565b620000de9065c9e86723e0006200093b565b601580546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001326009600a62000923565b620001449065c9e86723e0006200093b565b60405190815260200160405180910390a36015546040516001600160a01b03909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a346603803620001c457600a80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002f9565b46606103620001f957600a80546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d1179055620002f9565b4660011480620002095750466004145b80620002155750466003145b80620002215750466005145b156200025357600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002f9565b4661a86a036200028957600a80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d4179055620002f9565b4660fa03620002be57600a80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c29179055620002f9565b4661a4b103620002f457600a80546001600160a01b031916731b02da8cb0d097eb8d57a175b88c7d8b47997506179055620002f9565b600080fd5b600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000373919062000955565b6001600160a01b031663c9c65396600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fb919062000955565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000448573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046e919062000955565b600b80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055601554600a54620004c2929182169116600019620006e2565b600a54620004de9030906001600160a01b0316600019620006e2565b601580546001600160a01b0390811660009081526005602081815260408084208054600160ff1991821681179092553080875283872080548316841790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba8054831684179055975487168652600684528286208054821683179055600b5490961685528185208054871682179055958452832080548516861790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548516861790557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f880548516861790557f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548516861790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea080548516861790557fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf98054851686179055527f7e99e1e5c40ec22aa71ab68cea1ae3bb6f232576acb26d0b4e86f2583f2d4e3c80548316841790557f3b88920f3cdb6a2d8f52fb772e91e6e89cd00cd610f4b9dfb804ff1eafb41e59805483168417905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527f5ded1e7b8c25e3df69e401c18bf55e92f7343717ed383d2e5c8e4004d4de223f8054909116909117905562000980565b6001600160a01b0383166200074a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620007ad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000741565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008655781600019048211156200084957620008496200080e565b808516156200085757918102915b93841c939080029062000829565b509250929050565b6000826200087e575060016200091d565b816200088d575060006200091d565b8160018114620008a65760028114620008b157620008d1565b60019150506200091d565b60ff841115620008c557620008c56200080e565b50506001821b6200091d565b5060208310610133831016604e8410600b8410161715620008f6575081810a6200091d565b62000902838362000824565b80600019048211156200091957620009196200080e565b0290505b92915050565b60006200093460ff8416836200086d565b9392505050565b80820281158282048414176200091d576200091d6200080e565b6000602082840312156200096857600080fd5b81516001600160a01b03811681146200093457600080fd5b61444580620009906000396000f3fe60806040526004361061037a5760003560e01c806370a08231116101d1578063b421626c11610102578063eb50e70e116100a0578063f7c245ea1161006f578063f7c245ea14610b1d578063fb78680d14610b32578063fdb78c0e14610b52578063feadde9c14610b7157600080fd5b8063eb50e70e14610aae578063ee5d9c2d14610ace578063efe7dc9014610ae3578063f18567bf14610afd57600080fd5b8063cf847706116100dc578063cf847706146109bd578063d0b1449d14610a28578063dd62ed3e14610a48578063eafb5a3c14610a8e57600080fd5b8063b421626c1461094a578063b7df8b361461096a578063c705c5691461098457600080fd5b80638aec85421161016f578063a53f8ba111610149578063a53f8ba1146108ca578063a9059cbb146108ea578063ab558e4d1461090a578063ab5cb5a61461092a57600080fd5b80638aec85421461087457806392bd7b2c1461088957806395d89b411461089e57600080fd5b806380c581d1116101ab57806380c581d11461080c578063893d20e81461082c5780638a63bd9b1461084a5780638a8c523c1461085f57600080fd5b806370a08231146107a1578063715018a6146107d757806375f0a874146107ec57600080fd5b8063313ce567116102ab5780634fbee193116102495780636372c68f116102235780636372c68f146107115780636386c1c7146107315780636505079a146107615780636b639a251461078157600080fd5b80634fbee1931461069857806350a8e016146106d1578063590ffdce146106f157600080fd5b80634ada218b116102855780634ada218b146106195780634bbb93eb146106385780634e718e48146106585780634fb2e45d1461067857600080fd5b8063313ce567146105bd57806333251a0b146105d9578063452ed4f1146105f957600080fd5b80630dcbcf1c1161031857806323b872dd116102f257806323b872dd146105515780632610eaca1461057157806328577751146105915780632e8fa821146105a757600080fd5b80630dcbcf1c146104e357806318160ddd1461051c578063218950bc1461053157600080fd5b8063069d955f11610354578063069d955f146103ff57806306fdde03146104555780630758d92414610493578063095ea7b3146104b357600080fd5b806303fd2a45146103865780630445b667146103b9578063044df726146103dd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103cf60105481565b6040519081526020016103b0565b3480156103e957600080fd5b506103fd6103f8366004613bab565b610b91565b005b34801561040b57600080fd5b506008546104309061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561046157600080fd5b5060408051808201909152600c81526b536c696d42616279446f676560a01b60208201525b6040516103b09190613c34565b34801561049f57600080fd5b50600a5461039c906001600160a01b031681565b3480156104bf57600080fd5b506104d36104ce366004613c5c565b610c50565b60405190151581526020016103b0565b3480156104ef57600080fd5b506104d36104fe366004613c88565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561052857600080fd5b506103cf610c67565b34801561053d57600080fd5b506103fd61054c366004613ca5565b610c8a565b34801561055d57600080fd5b506104d361056c366004613cd3565b610d6f565b34801561057d57600080fd5b506103fd61058c366004613dea565b610de7565b34801561059d57600080fd5b506103cf60135481565b3480156105b357600080fd5b506103cf60115481565b3480156105c957600080fd5b50604051600981526020016103b0565b3480156105e557600080fd5b506103fd6105f4366004613c88565b610f9c565b34801561060557600080fd5b50600b5461039c906001600160a01b031681565b34801561062557600080fd5b506014546104d390610100900460ff1681565b34801561064457600080fd5b506103cf610653366004613eac565b61104e565b34801561066457600080fd5b506103fd610673366004613eac565b611082565b34801561068457600080fd5b506103fd610693366004613c88565b611120565b3480156106a457600080fd5b506104d36106b3366004613c88565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106dd57600080fd5b506014546104d39062010000900460ff1681565b3480156106fd57600080fd5b506103fd61070c366004613ec5565b61135a565b34801561071d57600080fd5b506103cf61072c366004613c88565b6113cd565b34801561073d57600080fd5b5061075161074c366004613c88565b61143d565b6040516103b09493929190613ee3565b34801561076d57600080fd5b506103fd61077c366004613f30565b6114c5565b34801561078d57600080fd5b506103fd61079c366004613ec5565b61157c565b3480156107ad57600080fd5b506103cf6107bc366004613c88565b6001600160a01b031660009081526020819052604090205490565b3480156107e357600080fd5b506103fd611712565b3480156107f857600080fd5b50600c5461039c906001600160a01b031681565b34801561081857600080fd5b506103fd610827366004613ec5565b6117bf565b34801561083857600080fd5b506015546001600160a01b031661039c565b34801561085657600080fd5b506104d36119c2565b34801561086b57600080fd5b506103fd611a2d565b34801561088057600080fd5b5061039c611ce2565b34801561089557600080fd5b506103fd611d50565b3480156108aa57600080fd5b5060408051808201909152600381526214d09160ea1b6020820152610486565b3480156108d657600080fd5b506103fd6108e5366004613f7b565b611daf565b3480156108f657600080fd5b506104d3610905366004613c5c565b611e66565b34801561091657600080fd5b506103fd610925366004613c88565b611e7a565b34801561093657600080fd5b506103cf610945366004613c88565b612015565b34801561095657600080fd5b506103fd610965366004613f9d565b612048565b34801561097657600080fd5b506012546104d39060ff1681565b34801561099057600080fd5b506104d361099f366004613c88565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156109c957600080fd5b506009546109fa9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103b0565b348015610a3457600080fd5b506103fd610a43366004613eac565b612110565b348015610a5457600080fd5b506103cf610a63366004613ca5565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a9a57600080fd5b506103fd610aa9366004613c88565b61216c565b348015610aba57600080fd5b506103fd610ac9366004613c88565b612570565b348015610ada57600080fd5b506103fd612630565b348015610aef57600080fd5b506014546104d39060ff1681565b348015610b0957600080fd5b506103fd610b18366004613eac565b61270d565b348015610b2957600080fd5b506103cf61276c565b348015610b3e57600080fd5b506103fd610b4d366004613fc9565b6127da565b348015610b5e57600080fd5b50600f546104d390610100900460ff1681565b348015610b7d57600080fd5b506103fd610b8c366004613ec5565b612a9e565b6015546001600160a01b03163314610bde5760405162461bcd60e51b815260206004820152601160248201526000805160206143f083398151915260448201526064015b60405180910390fd5b60145460405163efbdbabd60e01b81528315156004820152821515602482015263010000009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c3457600080fd5b505af1158015610c48573d6000803e3d6000fd5b505050505050565b6000610c5d338484612b11565b5060015b92915050565b6000610c756009600a6140f5565b610c859065c9e86723e000614104565b905090565b6015546001600160a01b03163314610cd25760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b601454610100900460ff1615610ce757600080fd5b6001600160a01b0381163014801590610d0957506001600160a01b0382163014155b8015610d275750816001600160a01b0316816001600160a01b031614155b610d3057600080fd5b600d80546001600160a01b0319166001600160a01b03928316179055601480546301000000600160b81b03191663010000009390921692909202179055565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610dd4576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610dce90849061411b565b90915550505b610ddf848484612c35565b949350505050565b6015546001600160a01b03163314610e2f5760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b8051825114610e805760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bd5565b60005b82518161ffff161015610f9757610e9c6009600a6140f5565b828261ffff1681518110610eb257610eb261412e565b6020026020010151610ec49190614104565b336000908152602081905260409020541015610f225760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610bd5565b610f8433848361ffff1681518110610f3c57610f3c61412e565b60200260200101516009600a610f5291906140f5565b858561ffff1681518110610f6857610f6861412e565b6020026020010151610f7a9190614104565b6000806001612f7b565b5080610f8f81614144565b915050610e83565b505050565b6015546001600160a01b03163314610fe45760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6014546040516333251a0b60e01b81526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401600060405180830381600087803b15801561103357600080fd5b505af1158015611047573d6000803e3d6000fd5b5050505050565b600b546001600160a01b031660009081526020819052604081205461271090611078908490614104565b610c619190614165565b6015546001600160a01b031633146110ca5760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b609681111561111b5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610bd5565b601355565b6015546001600160a01b031633146111685760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6001600160a01b0381166111e45760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bd5565b61deac196001600160a01b038216016112655760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bd5565b601580546001600160a01b039081166000908152600560208181526040808420805460ff19908116909155865486168552600680845282862080548316905588871686529383528185208054821660019081179091559383528185208054909116909317909255935490921681529182905290205415611308576015546001600160a01b031660008181526020819052604090205461130691908390610f7a565b505b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6015546001600160a01b031633146113a25760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600d54604051631ebbee0360e31b81526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c619190614187565b600d54604051636386c1c760e01b81526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa15801561148e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114b69190810190614204565b93509350935093509193509193565b6015546001600160a01b0316331461150d5760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b600f805461ff001916610100851515908102919091179091556014805460ff1990811685151517909155601280549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6015546001600160a01b031633146115c45760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6001600160a01b03821630148015906115eb5750600b546001600160a01b03838116911614155b801561160257506001600160a01b03821661dead14155b61160b57600080fd5b6001600160a01b0382166000908152600660205260409020805460ff191682158015919091179091556116a057600d54604051636f823f4f60e11b81526001600160a01b038481166004830152600060248301529091169063df047e9e90604401600060405180830381600087803b15801561168657600080fd5b505af1925050508015611697575060015b1561170e575050565b600d546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e906044015b600060405180830381600087803b1580156116ff57600080fd5b505af1925050508015610f9757505b5050565b6015546001600160a01b0316331461175a5760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b601554611771906001600160a01b0316600061135a565b601580546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546001600160a01b031633146118075760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b80611892576001600160a01b038281166000818152600160208181526040808420805460ff1990811690915560069092528084208054909216909217905560145490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d190604401600060405180830381600087803b158015610c3457600080fd5b600254156118f9576203f480600254426118ac919061411b565b116118f95760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610bd5565b6001600160a01b03821660009081526001602052604090205460ff16156119625760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610bd5565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d190604401610c1a565b6015546000906001600160a01b03163314611a0d5760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b600a54611a279030906001600160a01b0316600019612b11565b50600190565b6015546001600160a01b03163314611a755760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b601454610100900460ff1615611acd5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bd5565b60145462010000900460ff16611b255760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bd5565b601454630100000090046001600160a01b0316611b5857601480546301000000600160b81b031916306301000000021790555b601454600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526009606482015263010000009092041690636c115c3490608401600060405180830381600087803b158015611bcb57600080fd5b505af1925050508015611bdc575060015b50601454600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b81526004810191909152630100000090920416906325a71cae9060240160408051808303816000875af1925050508015611c60575060408051601f3d908101601f19168201909252611c5d918101906142b1565b60015b15611c6f576010919091556011555b600d60009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611cbf57600080fd5b505af1925050508015611cd0575060015b506014805461ffff1916610101179055565b600d546040805163457642a160e11b815290516000926001600160a01b031691638aec85429160048083019260209291908290030181865afa158015611d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8591906142d5565b600d54604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b50505050565b6015546001600160a01b03163314611df75760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b600d5447906001600160a01b03166386d5c4be611e1584600a6142f2565b611e1f9086614104565b6040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e4a57600080fd5b505af193505050508015611e5c575060015b15610f9757505050565b6000611e73338484612c35565b9392505050565b6015546001600160a01b03163314611ec25760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b60145462010000900460ff1615611f2b57306001600160a01b03821603611f2b5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610bd5565b6015546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa69190614187565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611ff1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9791906142fe565b600d5460405163f6ed201760e01b81526001600160a01b038381166004830152600092169063f6ed2017906024016113fc565b6015546001600160a01b031633146120905760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b61209b81600a6142f2565b6120a59083614104565b600d546040516302ab5aa360e31b815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b1580156120f357600080fd5b505af1158015612107573d6000803e3d6000fd5b50505050505050565b6015546001600160a01b031633146121585760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b620b71b0811061216757600080fd5b600e55565b6015546001600160a01b031633146121b45760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b60145462010000900460ff161561220d5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610bd5565b600b546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa15801561226d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229191906142d5565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230291906142d5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561234d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237191906142d5565b90506001600160a01b0381166124ea57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e391906142d5565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612430573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245491906142d5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c591906142d5565b600b80546001600160a01b0319166001600160a01b0392909216919091179055612506565b600b80546001600160a01b0319166001600160a01b0383161790555b600a80546001600160a01b0319166001600160a01b03848116919091178255600b805482166000908152600160208181526040808420805460ff199081168517909155945486168452600690915290912080549092161790559054610f9791309116600019612b11565b6015546001600160a01b031633146125b85760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6001600160a01b03811661260e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610bd5565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6015546001600160a01b031633146126785760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b60145462010000900460ff16156126d15760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bd5565b6015546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561270a573d6000803e3d6000fd5b50565b600d5460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b15801561275357600080fd5b505af1925050508015612764575060015b1561270a5750565b600d5460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa1580156127b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c859190614187565b6015546001600160a01b031633146128225760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b82846128306009600a6140f5565b6128409065c9e86723e000614104565b61284a9190614104565b6128549190614165565b60105580826128656009600a6140f5565b6128759065c9e86723e000614104565b61287f9190614104565b6128899190614165565b601181905560105411156128e95760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610bd5565b600b546001600160a01b031660009081526020819052604090205461271090612913906096614104565b61291d9190614165565b601154111561297a5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610bd5565b620f424061298a6009600a6140f5565b61299a9065c9e86723e000614104565b6129a49190614165565b6011541015612a0c5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610bd5565b620f4240612a1c6009600a6140f5565b612a2c9065c9e86723e000614104565b612a369190614165565b6010541015611da95760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610bd5565b6015546001600160a01b03163314612ae65760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001600160a01b038316612b735760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bd5565b6001600160a01b038216612bd45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bd5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612c9b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bd5565b6001600160a01b038316612cfd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bd5565b60008211612d5f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bd5565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612d8d5760019250612dbb565b6001600160a01b03861660009081526001602052604090205460ff1615612db75760019150612dbb565b5060015b612dc5878761322b565b15612ecb57601454610100900460ff16612ecb5780612e265760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bd5565b6001600160a01b03871660009081526004602052604090205460ff16158015612e6857506001600160a01b03861660009081526004602052604090205460ff16155b15612ecb5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610bd5565b8115612f6257600f5460ff16612f6257600f54610100900460ff1615612f6257306000908152602081905260409020546010548110612f605760115460125460ff1615612f4a57601354600b546001600160a01b031660009081526020819052604090205461271091612f3d91614104565b612f479190614165565b90505b808210612f55578091505b612f5e82613342565b505b505b612f70878787868686612f7b565b979650505050505050565b6000612f87878761322b565b156130225760145460405163ecd07a5360e01b81526001600160a01b03898116600483015288811660248301526044820188905260009263010000009004169063ecd07a53906064016020604051808303816000875af192505050801561300b575060408051601f3d908101601f19168201909252613008918101906142fe565b60015b61301457600080fd5b90508061302057600080fd5b505b6001600160a01b03871660009081526005602052604090205460019060ff168061306457506001600160a01b03871660009081526005602052604090205460ff165b1561306d575060005b6001600160a01b0388166000908152602081905260408120805488929061309590849061411b565b9091555086905081156130b2576130af89888888886137c0565b90505b6001600160a01b038816600090815260208190526040812080548392906130da90849061431b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161312691815260200190565b60405180910390a360145462010000900460ff166132125761314889896138e4565b60145462010000900460ff161580156131665750613166898961322b565b801561318b57506001600160a01b03891660009081526004602052604090205460ff16155b80156131b057506001600160a01b03881660009081526004602052604090205460ff16155b80156131ba575083155b156132125760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610bd5565b61321c8989613a3b565b50600198975050505050505050565b6015546000906001600160a01b0384811691161480159061325a57506015546001600160a01b03838116911614155b801561327157506015546001600160a01b03163214155b801561329657506001600160a01b03821660009081526007602052604090205460ff16155b80156132bb57506001600160a01b03831660009081526007602052604090205460ff16155b80156132d257506001600160a01b03821661dead14155b80156132e657506001600160a01b03821615155b80156132fb57506001600160a01b0383163014155b801561331c57506014546001600160a01b0384811663010000009092041614155b8015611e73575050601454630100000090046001600160a01b0390811691161415919050565b600f805460ff191660011790556040805160808101825260095461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036133a357506137b3565b306000908152600360209081526040808320600a546001600160a01b03168452909152902054600019146133fc57306000908152600360209081526040808320600a546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836020015161ffff168561341d9190614104565b6134279190614165565b6134319190614165565b9050600061343f828561411b565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106134795761347961412e565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156134d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f691906142d5565b816001815181106135095761350961412e565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac9479061354f90859060009086903090429060040161432e565b600060405180830381600087803b15801561356957600080fd5b505af192505050801561357a575060015b61358757505050506137b3565b476000836135958684614104565b61359f9190614165565b9050841561367e57600a5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af193505050508015613632575060408051601f3d908101601f1916820190925261362f9181019061439f565b60015b613641575050505050506137b3565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613688818361411b565b91508560200151866060018181516136a091906143cd565b61ffff90811690915260608801518851600093508392918216916136c5911686614104565b6136cf9190614165565b905060006136dd828661411b565b895190915061ffff161561374f57600d60009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561373b57600080fd5b505af19350505050801561374d575060015b505b600c546040516001600160a01b039091169061d6d89047906000818181858888f193505050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b5050505050505050505050505b50600f805460ff19169055565b60008084156137d6575060085461ffff16613800565b83156137ef575060085462010000900461ffff16613800565b50600854640100000000900461ffff165b8060000361381157859150506138db565b601454630100000090046001600160a01b03163014801561383c5750466001148061383c5750466038145b1561384657506111945b60006127106138558389614104565b61385f9190614165565b905080156138cc57306000908152602081905260408120805483929061388690849061431b565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6138d6818861411b565b925050505b95945050505050565b60145462010000900460ff16156139495760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610bd5565b613953828261322b565b15801561396d5750600b546001600160a01b038281169116145b1561170e576001600160a01b038083166000908152600760205260409020805460ff191660011790556014805462ff0000191662010000179081905563010000009004166139d157601480546301000000600160b81b031916306301000000021790555b600d546001600160a01b03166139f457600d80546001600160a01b031916301790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b03821660009081526006602052604090205460ff16613acc57600d546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613ab957600080fd5b505af1925050508015613aca575060015b505b6001600160a01b03811660009081526006602052604090205460ff16613b5d57600d546001600160a01b0382811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613b4a57600080fd5b505af1925050508015613b5b575060015b505b60145460ff161561170e57600d54600e5460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb916116e59160040190815260200190565b801515811461270a57600080fd5b60008060408385031215613bbe57600080fd5b8235613bc981613b9d565b91506020830135613bd981613b9d565b809150509250929050565b60005b83811015613bff578181015183820152602001613be7565b50506000910152565b60008151808452613c20816020860160208601613be4565b601f01601f19169290920160200192915050565b602081526000611e736020830184613c08565b6001600160a01b038116811461270a57600080fd5b60008060408385031215613c6f57600080fd5b8235613c7a81613c47565b946020939093013593505050565b600060208284031215613c9a57600080fd5b8135611e7381613c47565b60008060408385031215613cb857600080fd5b8235613cc381613c47565b91506020830135613bd981613c47565b600080600060608486031215613ce857600080fd5b8335613cf381613c47565b92506020840135613d0381613c47565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613d5357613d53613d14565b604052919050565b600067ffffffffffffffff821115613d7557613d75613d14565b5060051b60200190565b600082601f830112613d9057600080fd5b81356020613da5613da083613d5b565b613d2a565b82815260059290921b84018101918181019086841115613dc457600080fd5b8286015b84811015613ddf5780358352918301918301613dc8565b509695505050505050565b60008060408385031215613dfd57600080fd5b823567ffffffffffffffff80821115613e1557600080fd5b818501915085601f830112613e2957600080fd5b81356020613e39613da083613d5b565b82815260059290921b84018101918181019089841115613e5857600080fd5b948201945b83861015613e7f578535613e7081613c47565b82529482019490820190613e5d565b96505086013592505080821115613e9557600080fd5b50613ea285828601613d7f565b9150509250929050565b600060208284031215613ebe57600080fd5b5035919050565b60008060408385031215613ed857600080fd5b8235613bc981613c47565b608081526000613ef66080830187613c08565b8281036020840152613f088187613c08565b90508281036040840152613f1c8186613c08565b90508281036060840152612f708185613c08565b600080600060608486031215613f4557600080fd5b8335613f5081613b9d565b92506020840135613f6081613b9d565b91506040840135613f7081613b9d565b809150509250925092565b60008060408385031215613f8e57600080fd5b50508035926020909101359150565b600080600060608486031215613fb257600080fd5b505081359360208301359350604090920135919050565b60008060008060808587031215613fdf57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561404c57816000190482111561403257614032613ffb565b8085161561403f57918102915b93841c9390800290614016565b509250929050565b60008261406357506001610c61565b8161407057506000610c61565b81600181146140865760028114614090576140ac565b6001915050610c61565b60ff8411156140a1576140a1613ffb565b50506001821b610c61565b5060208310610133831016604e8410600b84101617156140cf575081810a610c61565b6140d98383614011565b80600019048211156140ed576140ed613ffb565b029392505050565b6000611e7360ff841683614054565b8082028115828204841417610c6157610c61613ffb565b81810381811115610c6157610c61613ffb565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361415b5761415b613ffb565b6001019392505050565b60008261418257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561419957600080fd5b5051919050565b600082601f8301126141b157600080fd5b815167ffffffffffffffff8111156141cb576141cb613d14565b6141de601f8201601f1916602001613d2a565b8181528460208386010111156141f357600080fd5b610ddf826020830160208701613be4565b6000806000806080858703121561421a57600080fd5b845167ffffffffffffffff8082111561423257600080fd5b61423e888389016141a0565b9550602087015191508082111561425457600080fd5b614260888389016141a0565b9450604087015191508082111561427657600080fd5b614282888389016141a0565b9350606087015191508082111561429857600080fd5b506142a5878288016141a0565b91505092959194509250565b600080604083850312156142c457600080fd5b505080516020909101519092909150565b6000602082840312156142e757600080fd5b8151611e7381613c47565b6000611e738383614054565b60006020828403121561431057600080fd5b8151611e7381613b9d565b80820180821115610c6157610c61613ffb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561437e5784516001600160a01b031683529383019391830191600101614359565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156143b457600080fd5b8351925060208401519150604084015190509250925092565b61ffff8281168282160390808211156143e8576143e8613ffb565b509291505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212205e4d6df8003a46ddc1f5bb415e9abf030f46bd2e529d2b2ba26768f2a0d44b1c64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806370a08231116101d1578063b421626c11610102578063eb50e70e116100a0578063f7c245ea1161006f578063f7c245ea14610b1d578063fb78680d14610b32578063fdb78c0e14610b52578063feadde9c14610b7157600080fd5b8063eb50e70e14610aae578063ee5d9c2d14610ace578063efe7dc9014610ae3578063f18567bf14610afd57600080fd5b8063cf847706116100dc578063cf847706146109bd578063d0b1449d14610a28578063dd62ed3e14610a48578063eafb5a3c14610a8e57600080fd5b8063b421626c1461094a578063b7df8b361461096a578063c705c5691461098457600080fd5b80638aec85421161016f578063a53f8ba111610149578063a53f8ba1146108ca578063a9059cbb146108ea578063ab558e4d1461090a578063ab5cb5a61461092a57600080fd5b80638aec85421461087457806392bd7b2c1461088957806395d89b411461089e57600080fd5b806380c581d1116101ab57806380c581d11461080c578063893d20e81461082c5780638a63bd9b1461084a5780638a8c523c1461085f57600080fd5b806370a08231146107a1578063715018a6146107d757806375f0a874146107ec57600080fd5b8063313ce567116102ab5780634fbee193116102495780636372c68f116102235780636372c68f146107115780636386c1c7146107315780636505079a146107615780636b639a251461078157600080fd5b80634fbee1931461069857806350a8e016146106d1578063590ffdce146106f157600080fd5b80634ada218b116102855780634ada218b146106195780634bbb93eb146106385780634e718e48146106585780634fb2e45d1461067857600080fd5b8063313ce567146105bd57806333251a0b146105d9578063452ed4f1146105f957600080fd5b80630dcbcf1c1161031857806323b872dd116102f257806323b872dd146105515780632610eaca1461057157806328577751146105915780632e8fa821146105a757600080fd5b80630dcbcf1c146104e357806318160ddd1461051c578063218950bc1461053157600080fd5b8063069d955f11610354578063069d955f146103ff57806306fdde03146104555780630758d92414610493578063095ea7b3146104b357600080fd5b806303fd2a45146103865780630445b667146103b9578063044df726146103dd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103cf60105481565b6040519081526020016103b0565b3480156103e957600080fd5b506103fd6103f8366004613bab565b610b91565b005b34801561040b57600080fd5b506008546104309061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561046157600080fd5b5060408051808201909152600c81526b536c696d42616279446f676560a01b60208201525b6040516103b09190613c34565b34801561049f57600080fd5b50600a5461039c906001600160a01b031681565b3480156104bf57600080fd5b506104d36104ce366004613c5c565b610c50565b60405190151581526020016103b0565b3480156104ef57600080fd5b506104d36104fe366004613c88565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561052857600080fd5b506103cf610c67565b34801561053d57600080fd5b506103fd61054c366004613ca5565b610c8a565b34801561055d57600080fd5b506104d361056c366004613cd3565b610d6f565b34801561057d57600080fd5b506103fd61058c366004613dea565b610de7565b34801561059d57600080fd5b506103cf60135481565b3480156105b357600080fd5b506103cf60115481565b3480156105c957600080fd5b50604051600981526020016103b0565b3480156105e557600080fd5b506103fd6105f4366004613c88565b610f9c565b34801561060557600080fd5b50600b5461039c906001600160a01b031681565b34801561062557600080fd5b506014546104d390610100900460ff1681565b34801561064457600080fd5b506103cf610653366004613eac565b61104e565b34801561066457600080fd5b506103fd610673366004613eac565b611082565b34801561068457600080fd5b506103fd610693366004613c88565b611120565b3480156106a457600080fd5b506104d36106b3366004613c88565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106dd57600080fd5b506014546104d39062010000900460ff1681565b3480156106fd57600080fd5b506103fd61070c366004613ec5565b61135a565b34801561071d57600080fd5b506103cf61072c366004613c88565b6113cd565b34801561073d57600080fd5b5061075161074c366004613c88565b61143d565b6040516103b09493929190613ee3565b34801561076d57600080fd5b506103fd61077c366004613f30565b6114c5565b34801561078d57600080fd5b506103fd61079c366004613ec5565b61157c565b3480156107ad57600080fd5b506103cf6107bc366004613c88565b6001600160a01b031660009081526020819052604090205490565b3480156107e357600080fd5b506103fd611712565b3480156107f857600080fd5b50600c5461039c906001600160a01b031681565b34801561081857600080fd5b506103fd610827366004613ec5565b6117bf565b34801561083857600080fd5b506015546001600160a01b031661039c565b34801561085657600080fd5b506104d36119c2565b34801561086b57600080fd5b506103fd611a2d565b34801561088057600080fd5b5061039c611ce2565b34801561089557600080fd5b506103fd611d50565b3480156108aa57600080fd5b5060408051808201909152600381526214d09160ea1b6020820152610486565b3480156108d657600080fd5b506103fd6108e5366004613f7b565b611daf565b3480156108f657600080fd5b506104d3610905366004613c5c565b611e66565b34801561091657600080fd5b506103fd610925366004613c88565b611e7a565b34801561093657600080fd5b506103cf610945366004613c88565b612015565b34801561095657600080fd5b506103fd610965366004613f9d565b612048565b34801561097657600080fd5b506012546104d39060ff1681565b34801561099057600080fd5b506104d361099f366004613c88565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156109c957600080fd5b506009546109fa9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103b0565b348015610a3457600080fd5b506103fd610a43366004613eac565b612110565b348015610a5457600080fd5b506103cf610a63366004613ca5565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a9a57600080fd5b506103fd610aa9366004613c88565b61216c565b348015610aba57600080fd5b506103fd610ac9366004613c88565b612570565b348015610ada57600080fd5b506103fd612630565b348015610aef57600080fd5b506014546104d39060ff1681565b348015610b0957600080fd5b506103fd610b18366004613eac565b61270d565b348015610b2957600080fd5b506103cf61276c565b348015610b3e57600080fd5b506103fd610b4d366004613fc9565b6127da565b348015610b5e57600080fd5b50600f546104d390610100900460ff1681565b348015610b7d57600080fd5b506103fd610b8c366004613ec5565b612a9e565b6015546001600160a01b03163314610bde5760405162461bcd60e51b815260206004820152601160248201526000805160206143f083398151915260448201526064015b60405180910390fd5b60145460405163efbdbabd60e01b81528315156004820152821515602482015263010000009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c3457600080fd5b505af1158015610c48573d6000803e3d6000fd5b505050505050565b6000610c5d338484612b11565b5060015b92915050565b6000610c756009600a6140f5565b610c859065c9e86723e000614104565b905090565b6015546001600160a01b03163314610cd25760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b601454610100900460ff1615610ce757600080fd5b6001600160a01b0381163014801590610d0957506001600160a01b0382163014155b8015610d275750816001600160a01b0316816001600160a01b031614155b610d3057600080fd5b600d80546001600160a01b0319166001600160a01b03928316179055601480546301000000600160b81b03191663010000009390921692909202179055565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610dd4576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610dce90849061411b565b90915550505b610ddf848484612c35565b949350505050565b6015546001600160a01b03163314610e2f5760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b8051825114610e805760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bd5565b60005b82518161ffff161015610f9757610e9c6009600a6140f5565b828261ffff1681518110610eb257610eb261412e565b6020026020010151610ec49190614104565b336000908152602081905260409020541015610f225760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610bd5565b610f8433848361ffff1681518110610f3c57610f3c61412e565b60200260200101516009600a610f5291906140f5565b858561ffff1681518110610f6857610f6861412e565b6020026020010151610f7a9190614104565b6000806001612f7b565b5080610f8f81614144565b915050610e83565b505050565b6015546001600160a01b03163314610fe45760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6014546040516333251a0b60e01b81526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401600060405180830381600087803b15801561103357600080fd5b505af1158015611047573d6000803e3d6000fd5b5050505050565b600b546001600160a01b031660009081526020819052604081205461271090611078908490614104565b610c619190614165565b6015546001600160a01b031633146110ca5760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b609681111561111b5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610bd5565b601355565b6015546001600160a01b031633146111685760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6001600160a01b0381166111e45760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bd5565b61deac196001600160a01b038216016112655760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bd5565b601580546001600160a01b039081166000908152600560208181526040808420805460ff19908116909155865486168552600680845282862080548316905588871686529383528185208054821660019081179091559383528185208054909116909317909255935490921681529182905290205415611308576015546001600160a01b031660008181526020819052604090205461130691908390610f7a565b505b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6015546001600160a01b031633146113a25760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600d54604051631ebbee0360e31b81526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c619190614187565b600d54604051636386c1c760e01b81526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa15801561148e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114b69190810190614204565b93509350935093509193509193565b6015546001600160a01b0316331461150d5760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b600f805461ff001916610100851515908102919091179091556014805460ff1990811685151517909155601280549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6015546001600160a01b031633146115c45760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6001600160a01b03821630148015906115eb5750600b546001600160a01b03838116911614155b801561160257506001600160a01b03821661dead14155b61160b57600080fd5b6001600160a01b0382166000908152600660205260409020805460ff191682158015919091179091556116a057600d54604051636f823f4f60e11b81526001600160a01b038481166004830152600060248301529091169063df047e9e90604401600060405180830381600087803b15801561168657600080fd5b505af1925050508015611697575060015b1561170e575050565b600d546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e906044015b600060405180830381600087803b1580156116ff57600080fd5b505af1925050508015610f9757505b5050565b6015546001600160a01b0316331461175a5760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b601554611771906001600160a01b0316600061135a565b601580546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546001600160a01b031633146118075760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b80611892576001600160a01b038281166000818152600160208181526040808420805460ff1990811690915560069092528084208054909216909217905560145490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d190604401600060405180830381600087803b158015610c3457600080fd5b600254156118f9576203f480600254426118ac919061411b565b116118f95760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610bd5565b6001600160a01b03821660009081526001602052604090205460ff16156119625760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610bd5565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d190604401610c1a565b6015546000906001600160a01b03163314611a0d5760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b600a54611a279030906001600160a01b0316600019612b11565b50600190565b6015546001600160a01b03163314611a755760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b601454610100900460ff1615611acd5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bd5565b60145462010000900460ff16611b255760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bd5565b601454630100000090046001600160a01b0316611b5857601480546301000000600160b81b031916306301000000021790555b601454600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526009606482015263010000009092041690636c115c3490608401600060405180830381600087803b158015611bcb57600080fd5b505af1925050508015611bdc575060015b50601454600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b81526004810191909152630100000090920416906325a71cae9060240160408051808303816000875af1925050508015611c60575060408051601f3d908101601f19168201909252611c5d918101906142b1565b60015b15611c6f576010919091556011555b600d60009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611cbf57600080fd5b505af1925050508015611cd0575060015b506014805461ffff1916610101179055565b600d546040805163457642a160e11b815290516000926001600160a01b031691638aec85429160048083019260209291908290030181865afa158015611d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8591906142d5565b600d54604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b50505050565b6015546001600160a01b03163314611df75760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b600d5447906001600160a01b03166386d5c4be611e1584600a6142f2565b611e1f9086614104565b6040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e4a57600080fd5b505af193505050508015611e5c575060015b15610f9757505050565b6000611e73338484612c35565b9392505050565b6015546001600160a01b03163314611ec25760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b60145462010000900460ff1615611f2b57306001600160a01b03821603611f2b5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610bd5565b6015546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa69190614187565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611ff1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9791906142fe565b600d5460405163f6ed201760e01b81526001600160a01b038381166004830152600092169063f6ed2017906024016113fc565b6015546001600160a01b031633146120905760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b61209b81600a6142f2565b6120a59083614104565b600d546040516302ab5aa360e31b815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b1580156120f357600080fd5b505af1158015612107573d6000803e3d6000fd5b50505050505050565b6015546001600160a01b031633146121585760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b620b71b0811061216757600080fd5b600e55565b6015546001600160a01b031633146121b45760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b60145462010000900460ff161561220d5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610bd5565b600b546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa15801561226d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229191906142d5565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230291906142d5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561234d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237191906142d5565b90506001600160a01b0381166124ea57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e391906142d5565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612430573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245491906142d5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c591906142d5565b600b80546001600160a01b0319166001600160a01b0392909216919091179055612506565b600b80546001600160a01b0319166001600160a01b0383161790555b600a80546001600160a01b0319166001600160a01b03848116919091178255600b805482166000908152600160208181526040808420805460ff199081168517909155945486168452600690915290912080549092161790559054610f9791309116600019612b11565b6015546001600160a01b031633146125b85760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6001600160a01b03811661260e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610bd5565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6015546001600160a01b031633146126785760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b60145462010000900460ff16156126d15760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bd5565b6015546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561270a573d6000803e3d6000fd5b50565b600d5460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b15801561275357600080fd5b505af1925050508015612764575060015b1561270a5750565b600d5460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa1580156127b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c859190614187565b6015546001600160a01b031633146128225760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b82846128306009600a6140f5565b6128409065c9e86723e000614104565b61284a9190614104565b6128549190614165565b60105580826128656009600a6140f5565b6128759065c9e86723e000614104565b61287f9190614104565b6128899190614165565b601181905560105411156128e95760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610bd5565b600b546001600160a01b031660009081526020819052604090205461271090612913906096614104565b61291d9190614165565b601154111561297a5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610bd5565b620f424061298a6009600a6140f5565b61299a9065c9e86723e000614104565b6129a49190614165565b6011541015612a0c5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610bd5565b620f4240612a1c6009600a6140f5565b612a2c9065c9e86723e000614104565b612a369190614165565b6010541015611da95760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610bd5565b6015546001600160a01b03163314612ae65760405162461bcd60e51b815260206004820152601160248201526000805160206143f08339815191526044820152606401610bd5565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001600160a01b038316612b735760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bd5565b6001600160a01b038216612bd45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bd5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612c9b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bd5565b6001600160a01b038316612cfd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bd5565b60008211612d5f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bd5565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612d8d5760019250612dbb565b6001600160a01b03861660009081526001602052604090205460ff1615612db75760019150612dbb565b5060015b612dc5878761322b565b15612ecb57601454610100900460ff16612ecb5780612e265760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bd5565b6001600160a01b03871660009081526004602052604090205460ff16158015612e6857506001600160a01b03861660009081526004602052604090205460ff16155b15612ecb5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610bd5565b8115612f6257600f5460ff16612f6257600f54610100900460ff1615612f6257306000908152602081905260409020546010548110612f605760115460125460ff1615612f4a57601354600b546001600160a01b031660009081526020819052604090205461271091612f3d91614104565b612f479190614165565b90505b808210612f55578091505b612f5e82613342565b505b505b612f70878787868686612f7b565b979650505050505050565b6000612f87878761322b565b156130225760145460405163ecd07a5360e01b81526001600160a01b03898116600483015288811660248301526044820188905260009263010000009004169063ecd07a53906064016020604051808303816000875af192505050801561300b575060408051601f3d908101601f19168201909252613008918101906142fe565b60015b61301457600080fd5b90508061302057600080fd5b505b6001600160a01b03871660009081526005602052604090205460019060ff168061306457506001600160a01b03871660009081526005602052604090205460ff165b1561306d575060005b6001600160a01b0388166000908152602081905260408120805488929061309590849061411b565b9091555086905081156130b2576130af89888888886137c0565b90505b6001600160a01b038816600090815260208190526040812080548392906130da90849061431b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161312691815260200190565b60405180910390a360145462010000900460ff166132125761314889896138e4565b60145462010000900460ff161580156131665750613166898961322b565b801561318b57506001600160a01b03891660009081526004602052604090205460ff16155b80156131b057506001600160a01b03881660009081526004602052604090205460ff16155b80156131ba575083155b156132125760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610bd5565b61321c8989613a3b565b50600198975050505050505050565b6015546000906001600160a01b0384811691161480159061325a57506015546001600160a01b03838116911614155b801561327157506015546001600160a01b03163214155b801561329657506001600160a01b03821660009081526007602052604090205460ff16155b80156132bb57506001600160a01b03831660009081526007602052604090205460ff16155b80156132d257506001600160a01b03821661dead14155b80156132e657506001600160a01b03821615155b80156132fb57506001600160a01b0383163014155b801561331c57506014546001600160a01b0384811663010000009092041614155b8015611e73575050601454630100000090046001600160a01b0390811691161415919050565b600f805460ff191660011790556040805160808101825260095461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036133a357506137b3565b306000908152600360209081526040808320600a546001600160a01b03168452909152902054600019146133fc57306000908152600360209081526040808320600a546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836020015161ffff168561341d9190614104565b6134279190614165565b6134319190614165565b9050600061343f828561411b565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106134795761347961412e565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156134d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f691906142d5565b816001815181106135095761350961412e565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac9479061354f90859060009086903090429060040161432e565b600060405180830381600087803b15801561356957600080fd5b505af192505050801561357a575060015b61358757505050506137b3565b476000836135958684614104565b61359f9190614165565b9050841561367e57600a5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af193505050508015613632575060408051601f3d908101601f1916820190925261362f9181019061439f565b60015b613641575050505050506137b3565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613688818361411b565b91508560200151866060018181516136a091906143cd565b61ffff90811690915260608801518851600093508392918216916136c5911686614104565b6136cf9190614165565b905060006136dd828661411b565b895190915061ffff161561374f57600d60009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561373b57600080fd5b505af19350505050801561374d575060015b505b600c546040516001600160a01b039091169061d6d89047906000818181858888f193505050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b5050505050505050505050505b50600f805460ff19169055565b60008084156137d6575060085461ffff16613800565b83156137ef575060085462010000900461ffff16613800565b50600854640100000000900461ffff165b8060000361381157859150506138db565b601454630100000090046001600160a01b03163014801561383c5750466001148061383c5750466038145b1561384657506111945b60006127106138558389614104565b61385f9190614165565b905080156138cc57306000908152602081905260408120805483929061388690849061431b565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6138d6818861411b565b925050505b95945050505050565b60145462010000900460ff16156139495760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610bd5565b613953828261322b565b15801561396d5750600b546001600160a01b038281169116145b1561170e576001600160a01b038083166000908152600760205260409020805460ff191660011790556014805462ff0000191662010000179081905563010000009004166139d157601480546301000000600160b81b031916306301000000021790555b600d546001600160a01b03166139f457600d80546001600160a01b031916301790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b03821660009081526006602052604090205460ff16613acc57600d546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613ab957600080fd5b505af1925050508015613aca575060015b505b6001600160a01b03811660009081526006602052604090205460ff16613b5d57600d546001600160a01b0382811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613b4a57600080fd5b505af1925050508015613b5b575060015b505b60145460ff161561170e57600d54600e5460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb916116e59160040190815260200190565b801515811461270a57600080fd5b60008060408385031215613bbe57600080fd5b8235613bc981613b9d565b91506020830135613bd981613b9d565b809150509250929050565b60005b83811015613bff578181015183820152602001613be7565b50506000910152565b60008151808452613c20816020860160208601613be4565b601f01601f19169290920160200192915050565b602081526000611e736020830184613c08565b6001600160a01b038116811461270a57600080fd5b60008060408385031215613c6f57600080fd5b8235613c7a81613c47565b946020939093013593505050565b600060208284031215613c9a57600080fd5b8135611e7381613c47565b60008060408385031215613cb857600080fd5b8235613cc381613c47565b91506020830135613bd981613c47565b600080600060608486031215613ce857600080fd5b8335613cf381613c47565b92506020840135613d0381613c47565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613d5357613d53613d14565b604052919050565b600067ffffffffffffffff821115613d7557613d75613d14565b5060051b60200190565b600082601f830112613d9057600080fd5b81356020613da5613da083613d5b565b613d2a565b82815260059290921b84018101918181019086841115613dc457600080fd5b8286015b84811015613ddf5780358352918301918301613dc8565b509695505050505050565b60008060408385031215613dfd57600080fd5b823567ffffffffffffffff80821115613e1557600080fd5b818501915085601f830112613e2957600080fd5b81356020613e39613da083613d5b565b82815260059290921b84018101918181019089841115613e5857600080fd5b948201945b83861015613e7f578535613e7081613c47565b82529482019490820190613e5d565b96505086013592505080821115613e9557600080fd5b50613ea285828601613d7f565b9150509250929050565b600060208284031215613ebe57600080fd5b5035919050565b60008060408385031215613ed857600080fd5b8235613bc981613c47565b608081526000613ef66080830187613c08565b8281036020840152613f088187613c08565b90508281036040840152613f1c8186613c08565b90508281036060840152612f708185613c08565b600080600060608486031215613f4557600080fd5b8335613f5081613b9d565b92506020840135613f6081613b9d565b91506040840135613f7081613b9d565b809150509250925092565b60008060408385031215613f8e57600080fd5b50508035926020909101359150565b600080600060608486031215613fb257600080fd5b505081359360208301359350604090920135919050565b60008060008060808587031215613fdf57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561404c57816000190482111561403257614032613ffb565b8085161561403f57918102915b93841c9390800290614016565b509250929050565b60008261406357506001610c61565b8161407057506000610c61565b81600181146140865760028114614090576140ac565b6001915050610c61565b60ff8411156140a1576140a1613ffb565b50506001821b610c61565b5060208310610133831016604e8410600b84101617156140cf575081810a610c61565b6140d98383614011565b80600019048211156140ed576140ed613ffb565b029392505050565b6000611e7360ff841683614054565b8082028115828204841417610c6157610c61613ffb565b81810381811115610c6157610c61613ffb565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361415b5761415b613ffb565b6001019392505050565b60008261418257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561419957600080fd5b5051919050565b600082601f8301126141b157600080fd5b815167ffffffffffffffff8111156141cb576141cb613d14565b6141de601f8201601f1916602001613d2a565b8181528460208386010111156141f357600080fd5b610ddf826020830160208701613be4565b6000806000806080858703121561421a57600080fd5b845167ffffffffffffffff8082111561423257600080fd5b61423e888389016141a0565b9550602087015191508082111561425457600080fd5b614260888389016141a0565b9450604087015191508082111561427657600080fd5b614282888389016141a0565b9350606087015191508082111561429857600080fd5b506142a5878288016141a0565b91505092959194509250565b600080604083850312156142c457600080fd5b505080516020909101519092909150565b6000602082840312156142e757600080fd5b8151611e7381613c47565b6000611e738383614054565b60006020828403121561431057600080fd5b8151611e7381613b9d565b80820180821115610c6157610c61613ffb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561437e5784516001600160a01b031683529383019391830191600101614359565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156143b457600080fd5b8351925060208401519150604084015190509250925092565b61ffff8281168282160390808211156143e8576143e8613ffb565b509291505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212205e4d6df8003a46ddc1f5bb415e9abf030f46bd2e529d2b2ba26768f2a0d44b1c64736f6c63430008130033

Deployed Bytecode Sourcemap

4801:24215:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6179:73;;;;;;;;;;;;6210:42;6179:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;6179:73:0;;;;;;;;6563:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6563:28:0;245:177:1;16566:153:0;;;;;;;;;;-1:-1:-1;16566:153:0;;;;;:::i;:::-;;:::i;:::-;;5812:107;;;;;;;;;;-1:-1:-1;5812:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5812:107:0;931:365:1;11976:80:0;;;;;;;;;;-1:-1:-1;12048:5:0;;;;;;;;;;;;-1:-1:-1;;;12048:5:0;;;;11976:80;;;;;;;:::i;6118:26::-;;;;;;;;;;-1:-1:-1;6118:26:0;;;;-1:-1:-1;;;;;6118:26:0;;;12397:161;;;;;;;;;;-1:-1:-1;12397:161:0;;;;;:::i;:::-;;:::i;:::-;;;2949:14:1;;2942:22;2924:41;;2912:2;2897:18;12397:161:0;2784:187:1;15558:140:0;;;;;;;;;;-1:-1:-1;15558:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;15656:34:0;15632:4;15656:34;;;:25;:34;;;;;;;;;15558:140;11711:83;;;;;;;;;;;;;:::i;14933:337::-;;;;;;;;;;-1:-1:-1;14933:337:0;;;;;:::i;:::-;;:::i;13257:306::-;;;;;;;;;;-1:-1:-1;13257:306:0;;;;;:::i;:::-;;:::i;27038:447::-;;;;;;;;;;-1:-1:-1;27038:447:0;;;;;:::i;:::-;;:::i;6671:33::-;;;;;;;;;;;;;;;;6598:25;;;;;;;;;;;;;;;;11800:80;;;;;;;;;;-1:-1:-1;11800:80:0;;5488:1;6711:36:1;;6699:2;6684:18;11800:80:0;6569:184:1;16448:110:0;;;;;;;;;;-1:-1:-1;16448:110:0;;;;;:::i;:::-;;:::i;6151:21::-;;;;;;;;;;-1:-1:-1;6151:21:0;;;;-1:-1:-1;;;;;6151:21:0;;;6756:34;;;;;;;;;;-1:-1:-1;6756:34:0;;;;;;;;;;;16926:189;;;;;;;;;;-1:-1:-1;16926:189:0;;;;;:::i;:::-;;:::i;17830:217::-;;;;;;;;;;-1:-1:-1;17830:217:0;;;;;:::i;:::-;;:::i;10329:759::-;;;;;;;;;;-1:-1:-1;10329:759:0;;;;;:::i;:::-;;:::i;15278:127::-;;;;;;;;;;-1:-1:-1;15278:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;15369:28:0;15345:4;15369:28;;;:19;:28;;;;;;;;;15278:127;6797:36;;;;;;;;;;-1:-1:-1;6797:36:0;;;;;;;;;;;16150:134;;;;;;;;;;-1:-1:-1;16150:134:0;;;;;:::i;:::-;;:::i;28613:138::-;;;;;;;;;;-1:-1:-1;28613:138:0;;;;;:::i;:::-;;:::i;28436:169::-;;;;;;;;;;-1:-1:-1;28436:169:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;18055:340::-;;;;;;;;;;-1:-1:-1;18055:340:0;;;;;:::i;:::-;;:::i;15706:436::-;;;;;;;;;;-1:-1:-1;15706:436:0;;;;;:::i;:::-;;:::i;12147:103::-;;;;;;;;;;-1:-1:-1;12147:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;12231:16:0;12213:7;12231:16;;;;;;;;;;;;12147:103;11096:225;;;;;;;;;;;;;:::i;6340:92::-;;;;;;;;;;-1:-1:-1;6340:92:0;;;;-1:-1:-1;;;;;6340:92:0;;;14309:616;;;;;;;;;;-1:-1:-1;14309:616:0;;;;;:::i;:::-;;:::i;12062:79::-;;;;;;;;;;-1:-1:-1;12132:6:0;;-1:-1:-1;;;;;12132:6:0;12062:79;;12916:173;;;;;;;;;;;;;:::i;23743:733::-;;;;;;;;;;;;;:::i;28901:112::-;;;;;;;;;;;;;:::i;28206:98::-;;;;;;;;;;;;;:::i;11886:84::-;;;;;;;;;;-1:-1:-1;11960:7:0;;;;;;;;;;;;-1:-1:-1;;;11960:7:0;;;;11886:84;;27493:211;;;;;;;;;;-1:-1:-1;27493:211:0;;;;;:::i;:::-;;:::i;13097:152::-;;;;;;;;;;-1:-1:-1;13097:152:0;;;;;:::i;:::-;;:::i;27902:296::-;;;;;;;;;;-1:-1:-1;27902:296:0;;;;;:::i;:::-;;:::i;28759:134::-;;;;;;;;;;-1:-1:-1;28759:134:0;;;;;:::i;:::-;;:::i;18403:273::-;;;;;;;;;;-1:-1:-1;18403:273:0;;;;;:::i;:::-;;:::i;6630:34::-;;;;;;;;;;-1:-1:-1;6630:34:0;;;;;;;;15413:137;;;;;;;;;;-1:-1:-1;15413:137:0;;;;;:::i;:::-;-1:-1:-1;;;;;15509:33:0;15485:4;15509:33;;;:24;:33;;;;;;;;;15413:137;5928:133;;;;;;;;;;-1:-1:-1;5928:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9616:6:1;9649:15;;;9631:34;;9701:15;;;9696:2;9681:18;;9674:43;9753:15;;;9733:18;;;9726:43;;;;9805:15;;;9800:2;9785:18;;9778:43;9593:3;9578:19;5928:133:0;9383:444:1;18684:129:0;;;;;;;;;;-1:-1:-1;18684:129:0;;;;;:::i;:::-;;:::i;12256:133::-;;;;;;;;;;-1:-1:-1;12256:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12358:19:0;;;12340:7;12358:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12256:133;13571:730;;;;;;;;;;-1:-1:-1;13571:730:0;;;;;:::i;:::-;;:::i;16727:191::-;;;;;;;;;;-1:-1:-1;16727:191:0;;;;;:::i;:::-;;:::i;27712:182::-;;;;;;;;;;;;;:::i;6713:34::-;;;;;;;;;;-1:-1:-1;6713:34:0;;;;;;;;26069:111;;;;;;;;;;-1:-1:-1;26069:111:0;;;;;:::i;:::-;;:::i;28312:116::-;;;;;;;;;;;;;:::i;17123:699::-;;;;;;;;;;-1:-1:-1;17123:699:0;;;;;:::i;:::-;;:::i;6517:39::-;;;;;;;;;;-1:-1:-1;6517:39:0;;;;;;;;;;;16292:148;;;;;;;;;;-1:-1:-1;16292:148:0;;;;;:::i;:::-;;:::i;16566:153::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;;;;;;;;;16661:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;16661:50:0;;11015:14:1;;11008:22;16661:50:0::1;::::0;::::1;10990:41:1::0;11074:14;;11067:22;11047:18;;;11040:50;16661:11:0;;;::::1;-1:-1:-1::0;;;;;16661:11:0::1;::::0;:26:::1;::::0;10963:18:1;;16661:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16566:153:::0;;:::o;12397:161::-;12474:4;12491:37;12500:10;12512:7;12521:6;12491:8;:37::i;:::-;-1:-1:-1;12546:4:0;12397:161;;;;;:::o;11711:83::-;11766:7;5549:15;5488:1;5549:2;:15;:::i;:::-;5531:34;;5328:19;5531:34;:::i;:::-;11777:14;;11711:83;:::o;14933:337::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;15041:14:::1;::::0;::::1;::::0;::::1;;;15040:15;15032:24;;;::::0;::::1;;-1:-1:-1::0;;;;;15075:29:0;::::1;15099:4;15075:29;::::0;::::1;::::0;:62:::1;;-1:-1:-1::0;;;;;;15108:29:0;::::1;15132:4;15108:29;;15075:62;:94;;;;;15157:12;-1:-1:-1::0;;;;;15141:28:0::1;:12;-1:-1:-1::0;;;;;15141:28:0::1;;;15075:94;15067:103;;;::::0;::::1;;15181:7;:31:::0;;-1:-1:-1;;;;;;15181:31:0::1;-1:-1:-1::0;;;;;15181:31:0;;::::1;;::::0;;15223:11:::1;:39:::0;;-1:-1:-1;;;;;;15223:39:0::1;::::0;;;;::::1;::::0;;;::::1;;::::0;;14933:337::o;13257:306::-;-1:-1:-1;;;;;13378:19:0;;13357:4;13378:19;;;:11;:19;;;;;;;;13398:10;13378:31;;;;;;;;-1:-1:-1;;13378:52:0;13374:126;;-1:-1:-1;;;;;13447:19:0;;;;;;:11;:19;;;;;;;;13467:10;13447:31;;;;;;;:41;;13482:6;;13447:19;:41;;13482:6;;13447:41;:::i;:::-;;;;-1:-1:-1;;13374:126:0;13519:36;13529:6;13537:9;13548:6;13519:9;:36::i;:::-;13512:43;13257:306;-1:-1:-1;;;;13257:306:0:o;27038:447::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;27173:7:::1;:14;27154:8;:15;:33;27146:67;;;::::0;-1:-1:-1;;;27146:67:0;;13124:2:1;27146:67:0::1;::::0;::::1;13106:21:1::0;13163:2;13143:18;;;13136:30;13202:23;13182:18;;;13175:51;13243:18;;27146:67:0::1;12922:345:1::0;27146:67:0::1;27229:8;27224:254;27247:8;:15;27243:1;:19;;;27224:254;;;27328:13;5488:1;27328:2;:13;:::i;:::-;27317:7;27325:1;27317:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27302:10;12213:7:::0;12231:16;;;;;;;;;;;27292:49:::1;;27284:80;;;::::0;-1:-1:-1;;;27284:80:0;;13606:2:1;27284:80:0::1;::::0;::::1;13588:21:1::0;13645:2;13625:18;;;13618:30;13684:20;13664:18;;;13657:48;13722:18;;27284:80:0::1;13404:342:1::0;27284:80:0::1;27379:87;27396:10;27408:8;27417:1;27408:11;;;;;;;;;;:::i;:::-;;;;;;;5488:1;27432:2;:13;;;;:::i;:::-;27421:7;27429:1;27421:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27447:5;27454::::0;27461:4:::1;27379:16;:87::i;:::-;-1:-1:-1::0;27264:3:0;::::1;::::0;::::1;:::i;:::-;;;;27224:254;;;;27038:447:::0;;:::o;16448:110::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;16517:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;16517:33:0;;-1:-1:-1;;;;;178:55:1;;;16517:33:0::1;::::0;::::1;160:74:1::0;16517:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;16517:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16448:110:::0;:::o;16926:189::-;17055:6;;-1:-1:-1;;;;;17055:6:0;17017:7;12231:16;;;;;;;;;;;6106:5;;17045:41;;17065:21;;17045:41;:::i;:::-;17044:62;;;;:::i;17830:217::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;17960:3:::1;17934:22;:29;;17926:64;;;::::0;-1:-1:-1;;;17926:64:0;;14377:2:1;17926:64:0::1;::::0;::::1;14359:21:1::0;14416:2;14396:18;;;14389:30;14455:24;14435:18;;;14428:52;14497:18;;17926:64:0::1;14175:346:1::0;17926:64:0::1;18001:13;:38:::0;17830:217::o;10329:759::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;-1:-1:-1;;;;;10408:22:0;::::1;10400:96;;;::::0;-1:-1:-1;;;10400:96:0;;14728:2:1;10400:96:0::1;::::0;::::1;14710:21:1::0;14767:2;14747:18;;;14740:30;14806:34;14786:18;;;14779:62;14877:31;14857:18;;;14850:59;14926:19;;10400:96:0::1;14526:425:1::0;10400:96:0::1;-1:-1:-1::0;;;;;;;10515:16:0;::::1;::::0;10507:90:::1;;;::::0;-1:-1:-1;;;10507:90:0;;14728:2:1;10507:90:0::1;::::0;::::1;14710:21:1::0;14767:2;14747:18;;;14740:30;14806:34;14786:18;;;14779:62;14877:31;14857:18;;;14850:59;14926:19;;10507:90:0::1;14526:425:1::0;10507:90:0::1;10628:6;::::0;;-1:-1:-1;;;;;10628:6:0;;::::1;10638:5;10608:27:::0;;;:19:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;10608:35:0;;::::1;::::0;;;10679:6;;;::::1;10654:32:::0;;:24:::1;:32:::0;;;;;;:40;;;::::1;::::0;;10705:29;;::::1;::::0;;;;;;;;:36;;;::::1;-1:-1:-1::0;10705:36:0;;::::1;::::0;;;10752:34;;;;;;:41;;;;::::1;::::0;;::::1;::::0;;;10828:6;;;;::::1;12231:16:::0;;;;;;;;;10818:21;10814:127:::1;;10873:6;::::0;-1:-1:-1;;;;;10873:6:0::1;12213:7:::0;12231:16;;;;;;;;;;;10856:73:::1;::::0;10873:6;10881:8;;10891:17:::1;12147:103:::0;10856:73:::1;;10814:127;10980:6;::::0;;-1:-1:-1;;;;;10997:17:0;;::::1;-1:-1:-1::0;;;;;;10997:17:0;::::1;::::0;::::1;::::0;;;11030:40:::1;::::0;10980:6;::::1;::::0;10997:17;10980:6;;11030:40:::1;::::0;10961:16:::1;::::0;11030:40:::1;10389:699;10329:759:::0;:::o;16150:134::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;-1:-1:-1;;;;;16238:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16238:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16150:134::o;28613:138::-;28707:7;;:36;;-1:-1:-1;;;28707:36:0;;-1:-1:-1;;;;;178:55:1;;;28707:36:0;;;160:74:1;28680:7:0;;28707;;:30;;133:18:1;;28707:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28436:169::-;28572:7;;:25;;-1:-1:-1;;;28572:25:0;;-1:-1:-1;;;;;178:55:1;;;28572:25:0;;;160:74:1;28494:13:0;;;;;;;;28572:7;;:19;;133:18:1;;28572:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28572:25:0;;;;;;;;;;;;:::i;:::-;28565:32;;;;;;;;28436:169;;;;;:::o;18055:340::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;18192:19:::1;:33:::0;;-1:-1:-1;;18192:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;18236:14:::1;:38:::0;;-1:-1:-1;;18236:38:0;;::::1;::::0;::::1;;;::::0;;;18285:22:::1;:47:::0;;;;::::1;::::0;::::1;;;::::0;;18348:39:::1;::::0;2924:41:1;;;18348:39:0::1;::::0;2912:2:1;2897:18;18348:39:0::1;;;;;;;18055:340:::0;;;:::o;15706:436::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;-1:-1:-1;;;;;15802:24:0;::::1;15821:4;15802:24;::::0;::::1;::::0;:63:::1;;-1:-1:-1::0;15859:6:0::1;::::0;-1:-1:-1;;;;;15848:17:0;;::::1;15859:6:::0;::::1;15848:17;;15802:63;:99;;;;-1:-1:-1::0;;;;;;15886:15:0;::::1;6210:42;15886:15;;15802:99;15794:108;;;::::0;::::1;;-1:-1:-1::0;;;;;15913:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;:43;;-1:-1:-1;;15913:43:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;15967:168:::1;;15999:7;::::0;:25:::1;::::0;-1:-1:-1;;;15999:25:0;;-1:-1:-1;;;;;16836:55:1;;;15999:25:0::1;::::0;::::1;16818:74:1::0;15999:7:0::1;16908:18:1::0;;;16901:34;15999:7:0;;::::1;::::0;:13:::1;::::0;16791:18:1;;15999:25:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;15995:41:::0;15967:168:::1;15995:41;15706:436:::0;;:::o;15967:168::-:1;16072:7;::::0;-1:-1:-1;;;;;16095:16:0;;::::1;16072:7;16095:16:::0;;;::::1;::::0;;;;;;;;;16072:40;;-1:-1:-1;;;16072:40:0;;::::1;::::0;::::1;16818:74:1::0;;;;16908:18;;;16901:34;16072:7:0;::::1;::::0;:13:::1;::::0;16791:18:1;;16072:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;16068:56;15706:436:::0;;:::o;11096:225::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;11175:6:::1;::::0;11155:34:::1;::::0;-1:-1:-1;;;;;11175:6:0::1;;11155:19;:34::i;:::-;11219:6;::::0;;-1:-1:-1;;;;;;11236:19:0;::::1;::::0;;;11271:42:::1;::::0;-1:-1:-1;;;;;11219:6:0;;::::1;::::0;11200:16:::1;::::0;11219:6;;11271:42:::1;::::0;11200:16;;11271:42:::1;11144:177;11096:225::o:0;14309:616::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;14391:7:::1;14386:532;;-1:-1:-1::0;;;;;14415:13:0;;::::1;14431:5;14415:13:::0;;;:7:::1;:13;::::0;;;;;;;:21;;-1:-1:-1;;14415:21:0;;::::1;::::0;;;14451:24:::1;:30:::0;;;;;;:37;;;;::::1;::::0;;::::1;::::0;;14503:11:::1;::::0;:34;;-1:-1:-1;;;14503:34:0;;::::1;::::0;::::1;17416:74:1::0;;;;17506:18;;;17499:50;;;;14503:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17389:18:1;;14503:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;14386:532;14574:17;::::0;:22;14570:135:::1;;14663:6;14643:17;;14625:15;:35;;;;:::i;:::-;:44;14617:72;;;::::0;-1:-1:-1;;;14617:72:0;;17762:2:1;14617:72:0::1;::::0;::::1;17744:21:1::0;17801:2;17781:18;;;17774:30;17840:17;17820:18;;;17813:45;17875:18;;14617:72:0::1;17560:339:1::0;14617:72:0::1;-1:-1:-1::0;;;;;14728:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;14727:14;14719:54;;;::::0;-1:-1:-1;;;14719:54:0;;18106:2:1;14719:54:0::1;::::0;::::1;18088:21:1::0;18145:2;18125:18;;;18118:30;18184:29;18164:18;;;18157:57;18231:18;;14719:54:0::1;17904:351:1::0;14719:54:0::1;-1:-1:-1::0;;;;;14788:13:0;;::::1;;::::0;;;14804:4:::1;14788:13;::::0;;;;;;;;:20;;-1:-1:-1;;14788:20:0::1;::::0;::::1;::::0;;14843:15:::1;14823:17;:35:::0;14873:11:::1;::::0;:33;;-1:-1:-1;;;14873:33:0;;::::1;::::0;::::1;17416:74:1::0;;;;17506:18;;;17499:50;14873:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17389:18:1;;14873:33:0::1;17248:307:1::0;12916:173:0;10183:6;;12980:4;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;13029:9:::1;::::0;12997:62:::1;::::0;13014:4:::1;::::0;-1:-1:-1;;;;;13029:9:0::1;-1:-1:-1::0;;12997:8:0::1;:62::i;:::-;-1:-1:-1::0;13077:4:0::1;12916:173:::0;:::o;23743:733::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;23805:14:::1;::::0;::::1;::::0;::::1;;;23804:15;23796:52;;;::::0;-1:-1:-1;;;23796:52:0;;18462:2:1;23796:52:0::1;::::0;::::1;18444:21:1::0;18501:2;18481:18;;;18474:30;18540:26;18520:18;;;18513:54;18584:18;;23796:52:0::1;18260:348:1::0;23796:52:0::1;23867:16;::::0;;;::::1;;;23859:53;;;::::0;-1:-1:-1;;;23859:53:0;;18815:2:1;23859:53:0::1;::::0;::::1;18797:21:1::0;18854:2;18834:18;;;18827:30;18893:26;18873:18;;;18866:54;18937:18;;23859:53:0::1;18613:348:1::0;23859:53:0::1;23935:11;::::0;;;::::1;-1:-1:-1::0;;;;;23935:11:0::1;23923:106;;23977:11;:40:::0;;-1:-1:-1;;;;;;23977:40:0::1;24011:4;23977:40:::0;::::1;;::::0;;23923:106:::1;24043:11;::::0;24065:6:::1;::::0;24043:87:::1;::::0;-1:-1:-1;;;24043:87:0;;-1:-1:-1;;;;;24065:6:0;;::::1;24043:87;::::0;::::1;19189:74:1::0;19311:10;24080:12:0::1;19299:23:1::0;19279:18;;;19272:51;19371:18;24102:15:0::1;19359:31:1::0;19339:18;;;19332:59;5488:1:0::1;19407:18:1::0;;;19400:45;24043:11:0;;;::::1;;::::0;:21:::1;::::0;19161:19:1;;24043:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;24156:11:0::1;::::0;24187:6:::1;::::0;-1:-1:-1;;;;;24187:6:0;;::::1;12213:7:::0;12231:16;;;;;;;;;;;;;24156:39;;-1:-1:-1;;;24156:39:0;;::::1;::::0;::::1;391:25:1::0;;;;24156:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;24156:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;24156:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;24156:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;24152:207:::0;::::1;;24267:13;:29:::0;;;;24311:10:::1;:27:::0;24152:207:::1;24373:7;;;;;;;;;-1:-1:-1::0;;;;;24373:7:0::1;-1:-1:-1::0;;;;;24373:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24369:36:::0;24415:14:::1;:21:::0;;-1:-1:-1;;24447:21:0;;;;;23743:733::o;28901:112::-;28979:7;;:26;;;-1:-1:-1;;;28979:26:0;;;;28952:7;;-1:-1:-1;;;;;28979:7:0;;:24;;:26;;;;;;;;;;;;;;:7;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28206:98::-;28257:7;;:39;;-1:-1:-1;;;28257:39:0;;28285:10;28257:39;;;160:74:1;-1:-1:-1;;;;;28257:7:0;;;;:27;;133:18:1;;28257:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28206:98::o;27493:211::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;27639:7:::1;::::0;27603:21:::1;::::0;-1:-1:-1;;;;;27639:7:0::1;:12;27668:14;27672:10:::0;27668:2:::1;:14;:::i;:::-;27659:23;::::0;:6;:23:::1;:::i;:::-;27639:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;27635:62:::0;::::1;;27571:133;27493:211:::0;;:::o;13097:152::-;13177:4;13201:40;13211:10;13223:9;13234:6;13201:9;:40::i;:::-;13194:47;13097:152;-1:-1:-1;;;13097:152:0:o;27902:296::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;27980:16:::1;::::0;;;::::1;;;27976:111;;;28038:4;-1:-1:-1::0;;;;;28021:22:0;::::1;::::0;28013:62:::1;;;::::0;-1:-1:-1;;;28013:62:0;;20300:2:1;28013:62:0::1;::::0;::::1;20282:21:1::0;20339:2;20319:18;;;20312:30;20378:29;20358:18;;;20351:57;20425:18;;28013:62:0::1;20098:351:1::0;28013:62:0::1;28151:6;::::0;28159:30:::1;::::0;-1:-1:-1;;;28159:30:0;;28183:4:::1;28159:30;::::0;::::1;160:74:1::0;28119:5:0;;-1:-1:-1;;;;;28136:14:0;;::::1;::::0;::::1;::::0;28151:6;;;::::1;::::0;28136:14;;28159:15:::1;::::0;133:18:1;;28159:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28136:54;::::0;-1:-1:-1;;;;;;28136:54:0::1;::::0;;;;;;-1:-1:-1;;;;;16836:55:1;;;28136:54:0::1;::::0;::::1;16818:74:1::0;16908:18;;;16901:34;16791:18;;28136:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28759:134::-:0;28854:7;;:31;;-1:-1:-1;;;28854:31:0;;-1:-1:-1;;;;;178:55:1;;;28854:31:0;;;160:74:1;28827:7:0;;28854;;:25;;133:18:1;;28854:31:0;14:226:1;18403:273:0;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;18574:27:::1;18578:23:::0;18574:2:::1;:27;:::i;:::-;18557:44;::::0;:14;:44:::1;:::i;:::-;18612:7;::::0;:56:::1;::::0;-1:-1:-1;;;18612:56:0;;::::1;::::0;::::1;20878:25:1::0;;;20919:18;;;20912:34;;;18540:61:0;;-1:-1:-1;;;;;;18612:7:0::1;::::0;:28:::1;::::0;20851:18:1;;18612:56:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18403:273:::0;;;:::o;18684:129::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;18771:6:::1;18765:3;:12;18757:21;;;::::0;::::1;;18789:10;:16:::0;18684:129::o;13571:730::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;13651:16:::1;::::0;;;::::1;;;13650:17;13642:60;;;::::0;-1:-1:-1;;;13642:60:0;;21159:2:1;13642:60:0::1;::::0;::::1;21141:21:1::0;21198:2;21178:18;;;21171:30;21237:32;21217:18;;;21210:60;21287:18;;13642:60:0::1;20957:354:1::0;13642:60:0::1;13775:6;::::0;-1:-1:-1;;;;;13775:6:0;;::::1;13713:20;13767:15:::0;;;:7:::1;:15;::::0;;;;;;;:23;;-1:-1:-1;;13767:23:0::1;::::0;;13831:20;;-1:-1:-1;;;13831:20:0;;;;13746:9;;13831:18;::::1;::::0;::::1;::::0;:20:::1;::::0;;::::1;::::0;;;;;;;:18;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13820:40:0::1;;13869:4;13876:10;-1:-1:-1::0;;;;;13876:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13820:74;::::0;-1:-1:-1;;;;;;13820:74:0::1;::::0;;;;;;-1:-1:-1;;;;;21569:15:1;;;13820:74:0::1;::::0;::::1;21551:34:1::0;21621:15;;21601:18;;;21594:43;21463:18;;13820:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13801:93:::0;-1:-1:-1;;;;;;13909:22:0;::::1;13905:200;;13968:10;-1:-1:-1::0;;;;;13968:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13957:43:0::1;;14009:4;14016:10;-1:-1:-1::0;;;;;14016:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13957:77;::::0;-1:-1:-1;;;;;;13957:77:0::1;::::0;;;;;;-1:-1:-1;;;;;21569:15:1;;;13957:77:0::1;::::0;::::1;21551:34:1::0;21621:15;;21601:18;;;21594:43;21463:18;;13957:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13948:6;:86:::0;;-1:-1:-1;;;;;;13948:86:0::1;-1:-1:-1::0;;;;;13948:86:0;;;::::1;::::0;;;::::1;::::0;;13905:200:::1;;;14076:6;:17:::0;;-1:-1:-1;;;;;;14076:17:0::1;-1:-1:-1::0;;;;;14076:17:0;::::1;;::::0;;13905:200:::1;14115:9;:22:::0;;-1:-1:-1;;;;;;14115:22:0::1;-1:-1:-1::0;;;;;14115:22:0;;::::1;::::0;;;::::1;::::0;;14156:6:::1;::::0;;;::::1;-1:-1:-1::0;14148:15:0;;;-1:-1:-1;14148:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;14148:22:0;;::::1;::::0;::::1;::::0;;;14206:6;;;::::1;14181:32:::0;;:24:::1;:32:::0;;;;;;:39;;;;::::1;;::::0;;14263:9;;14231:62:::1;::::0;14248:4:::1;::::0;14263:9:::1;-1:-1:-1::0;;14231:8:0::1;:62::i;16727:191::-:0;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;-1:-1:-1;;;;;16812:23:0;::::1;16804:59;;;::::0;-1:-1:-1;;;16804:59:0;;21850:2:1;16804:59:0::1;::::0;::::1;21832:21:1::0;21889:2;21869:18;;;21862:30;21928:25;21908:18;;;21901:53;21971:18;;16804:59:0::1;21648:347:1::0;16804:59:0::1;16874:15;:36:::0;;-1:-1:-1;;;;;;16874:36:0::1;-1:-1:-1::0;;;;;16874:36:0;;;::::1;::::0;;;::::1;::::0;;16727:191::o;27712:182::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;27779:16:::1;::::0;;;::::1;;;27778:17;27770:58;;;::::0;-1:-1:-1;;;27770:58:0;;22202:2:1;27770:58:0::1;::::0;::::1;22184:21:1::0;22241:2;22221:18;;;22214:30;22280;22260:18;;;22253:58;22328:18;;27770:58:0::1;22000:352:1::0;27770:58:0::1;27847:6;::::0;27839:47:::1;::::0;-1:-1:-1;;;;;27847:6:0;;::::1;::::0;27864:21:::1;27839:47:::0;::::1;;;::::0;27847:6:::1;27839:47:::0;27847:6;27839:47;27864:21;27847:6;27839:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27712:182::o:0;26069:111::-;26135:7;;:26;;-1:-1:-1;;;26135:26:0;;;;;391:25:1;;;-1:-1:-1;;;;;26135:7:0;;;;:15;;364:18:1;;26135:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26131:42;;;26069:111;:::o;28312:116::-;28391:7;;:29;;;-1:-1:-1;;;28391:29:0;;;;28364:7;;-1:-1:-1;;;;;28391:7:0;;:27;;:29;;;;;;;;;;;;;;:7;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17123:699::-;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;17323:16;17303;5549:15:::1;5488:1;5549:2;:15;:::i;:::-;5531:34;::::0;5328:19:::1;5531:34;:::i;:::-;17293:26;;;;:::i;:::-;17292:47;;;;:::i;:::-;17276:13;:63:::0;17391:13;17374;5549:15:::1;5488:1;5549:2;:15;:::i;:::-;5531:34;::::0;5328:19:::1;5531:34;:::i;:::-;17364:23;;;;:::i;:::-;17363:41;;;;:::i;:::-;17350:10;:54:::0;;;17423:13:::1;::::0;:27:::1;;17415:73;;;::::0;-1:-1:-1;;;17415:73:0;;22559:2:1;17415:73:0::1;::::0;::::1;22541:21:1::0;22598:2;22578:18;;;22571:30;22637:34;22617:18;;;22610:62;-1:-1:-1;;;22688:18:1;;;22681:31;22729:19;;17415:73:0::1;22357:397:1::0;17415:73:0::1;17532:6;::::0;-1:-1:-1;;;;;17532:6:0::1;12213:7:::0;12231:16;;;;;;;;;;;6106:5:::1;::::0;17522:23:::1;::::0;17542:3:::1;17522:23;:::i;:::-;17521:44;;;;:::i;:::-;17507:10;;:58;;17499:106;;;::::0;-1:-1:-1;;;17499:106:0;;22961:2:1;17499:106:0::1;::::0;::::1;22943:21:1::0;23000:2;22980:18;;;22973:30;23039:34;23019:18;;;23012:62;-1:-1:-1;;;23090:18:1;;;23083:33;23133:19;;17499:106:0::1;22759:399:1::0;17499:106:0::1;17648:9;5549:15;5488:1;5549:2;:15;:::i;:::-;5531:34;::::0;5328:19:::1;5531:34;:::i;:::-;17638:19;;;;:::i;:::-;17624:10;;:33;;17616:92;;;::::0;-1:-1:-1;;;17616:92:0;;23365:2:1;17616:92:0::1;::::0;::::1;23347:21:1::0;23404:2;23384:18;;;23377:30;23443:34;23423:18;;;23416:62;-1:-1:-1;;;23494:18:1;;;23487:44;23548:19;;17616:92:0::1;23163:410:1::0;17616:92:0::1;17754:9;5549:15;5488:1;5549:2;:15;:::i;:::-;5531:34;::::0;5328:19:::1;5531:34;:::i;:::-;17744:19;;;;:::i;:::-;17727:13;;:36;;17719:95;;;::::0;-1:-1:-1;;;17719:95:0;;23365:2:1;17719:95:0::1;::::0;::::1;23347:21:1::0;23404:2;23384:18;;;23377:30;23443:34;23423:18;;;23416:62;-1:-1:-1;;;23494:18:1;;;23487:44;23548:19;;17719:95:0::1;23163:410:1::0;16292:148:0;10183:6;;-1:-1:-1;;;;;10183:6:0;10193:10;10183:20;10175:50;;;;-1:-1:-1;;;10175:50:0;;10684:2:1;10175:50:0;;;10666:21:1;10723:2;10703:18;;;10696:30;-1:-1:-1;;;;;;;;;;;10742:18:1;;;10735:47;10799:18;;10175:50:0;10482:341:1;10175:50:0;-1:-1:-1;;;;;16388:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;16388:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16292:148::o;12566:342::-;-1:-1:-1;;;;;12661:20:0;;12653:69;;;;-1:-1:-1;;;12653:69:0;;23780:2:1;12653:69:0;;;23762:21:1;23819:2;23799:18;;;23792:30;23858:34;23838:18;;;23831:62;-1:-1:-1;;;23909:18:1;;;23902:34;23953:19;;12653:69:0;23578:400:1;12653:69:0;-1:-1:-1;;;;;12741:21:0;;12733:68;;;;-1:-1:-1;;;12733:68:0;;24185:2:1;12733:68:0;;;24167:21:1;24224:2;24204:18;;;24197:30;24263:34;24243:18;;;24236:62;-1:-1:-1;;;24314:18:1;;;24307:32;24356:19;;12733:68:0;23983:398:1;12733:68:0;-1:-1:-1;;;;;12814:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;12867:33;;391:25:1;;;12867:33:0;;364:18:1;12867:33:0;;;;;;;12566:342;;;:::o;19511:1674::-;19590:4;-1:-1:-1;;;;;19615:18:0;;19607:68;;;;-1:-1:-1;;;19607:68:0;;24588:2:1;19607:68:0;;;24570:21:1;24627:2;24607:18;;;24600:30;24666:34;24646:18;;;24639:62;-1:-1:-1;;;24717:18:1;;;24710:35;24762:19;;19607:68:0;24386:401:1;19607:68:0;-1:-1:-1;;;;;19694:16:0;;19686:64;;;;-1:-1:-1;;;19686:64:0;;24994:2:1;19686:64:0;;;24976:21:1;25033:2;25013:18;;;25006:30;25072:34;25052:18;;;25045:62;-1:-1:-1;;;25123:18:1;;;25116:33;25166:19;;19686:64:0;24792:399:1;19686:64:0;19778:1;19769:6;:10;19761:64;;;;-1:-1:-1;;;19761:64:0;;25398:2:1;19761:64:0;;;25380:21:1;25437:2;25417:18;;;25410:30;25476:34;25456:18;;;25449:62;-1:-1:-1;;;25527:18:1;;;25520:39;25576:19;;19761:64:0;25196:405:1;19761:64:0;-1:-1:-1;;;;;19924:13:0;;19836:8;19924:13;;;:7;:13;;;;;;19836:8;;;;19924:13;;19920:162;;;19960:4;19954:10;;19920:162;;;-1:-1:-1;;;;;19986:11:0;;;;;;:7;:11;;;;;;;;19982:100;;;20021:4;20014:11;;19982:100;;;-1:-1:-1;20066:4:0;19982:100;20096:20;20107:4;20113:2;20096:10;:20::i;:::-;20092:371;;;20137:14;;;;;;;20133:319;;20177:5;20172:265;;20207:34;;-1:-1:-1;;;20207:34:0;;25808:2:1;20207:34:0;;;25790:21:1;25847:2;25827:18;;;25820:30;25886:26;25866:18;;;25859:54;25930:18;;20207:34:0;25606:348:1;20172:265:0;-1:-1:-1;;;;;20272:31:0;;;;;;:25;:31;;;;;;;;20271:32;:66;;;;-1:-1:-1;;;;;;20308:29:0;;;;;;:25;:29;;;;;;;;20307:30;20271:66;20267:170;;;20362:55;;-1:-1:-1;;;20362:55:0;;26161:2:1;20362:55:0;;;26143:21:1;26200:2;26180:18;;;26173:30;26239:34;26219:18;;;26212:62;-1:-1:-1;;;26290:18:1;;;26283:43;26343:19;;20362:55:0;25959:409:1;20267:170:0;20479:4;20475:632;;;20505:6;;;;20500:596;;20536:19;;;;;;;20532:549;;;20629:4;20580:28;12231:16;;;;;;;;;;;20686:13;;20662:37;;20658:404;;20746:10;;20787:22;;;;20783:97;;;20844:13;;20834:6;;-1:-1:-1;;;;;20834:6:0;12213:7;12231:16;;;;;;;;;;;6106:5;;20824:33;;;:::i;:::-;20823:54;;;;:::i;:::-;20813:64;;20783:97;20934:7;20910:20;:31;20906:72;;20968:7;20945:30;;20906:72;21004:34;21017:20;21004:12;:34::i;:::-;20701:361;20658:404;20557:524;20532:549;21125:52;21142:4;21148:2;21152:6;21160:3;21165:4;21171:5;21125:16;:52::i;:::-;21118:59;19511:1674;-1:-1:-1;;;;;;;19511:1674:0:o;24484:1163::-;24603:4;24624:20;24635:4;24641:2;24624:10;:20::i;:::-;24620:228;;;24679:11;;:39;;-1:-1:-1;;;24679:39:0;;-1:-1:-1;;;;;26654:15:1;;;24679:39:0;;;26636:34:1;26706:15;;;26686:18;;;26679:43;26738:18;;;26731:34;;;24648:12:0;;24679:11;;;;;:21;;26548:18:1;;24679:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24679:39:0;;;;;;;;-1:-1:-1;;24679:39:0;;;;;;;;;;;;:::i;:::-;;;24675:122;;24786:8;;;24675:122;24769:5;-1:-1:-1;24815:7:0;24811:26;;24826:8;;;24811:26;24646:202;24620:228;-1:-1:-1;;;;;24894:25:0;;24860:12;24894:25;;;:19;:25;;;;;;24875:4;;24894:25;;;:52;;-1:-1:-1;;;;;;24923:23:0;;;;;;:19;:23;;;;;;;;24894:52;24890:99;;;-1:-1:-1;24972:5:0;24890:99;-1:-1:-1;;;;;25001:13:0;;:7;:13;;;;;;;;;;:23;;25018:6;;25001:7;:23;;25018:6;;25001:23;:::i;:::-;;;;-1:-1:-1;25060:6:0;;-1:-1:-1;25077:98:0;;;;25122:41;25132:4;25138:6;25146:3;25151:4;25157:5;25122:9;:41::i;:::-;25105:58;;25077:98;-1:-1:-1;;;;;25185:11:0;;:7;:11;;;;;;;;;;:29;;25200:14;;25185:7;:29;;25200:14;;25185:29;:::i;:::-;;;;;;;;25245:2;-1:-1:-1;;;;;25230:34:0;25239:4;-1:-1:-1;;;;;25230:34:0;;25249:14;25230:34;;;;391:25:1;;379:2;364:18;;245:177;25230:34:0;;;;;;;;25280:16;;;;;;;25275:298;;25313:28;25332:4;25338:2;25313:18;:28::i;:::-;25361:16;;;;;;;25360:17;:41;;;;;25381:20;25392:4;25398:2;25381:10;:20::i;:::-;25360:77;;;;-1:-1:-1;;;;;;25406:31:0;;;;;;:25;:31;;;;;;;;25405:32;25360:77;:111;;;;-1:-1:-1;;;;;;25442:29:0;;;;;;:25;:29;;;;;;;;25441:30;25360:111;:121;;;;;25476:5;25475:6;25360:121;25356:206;;;25502:44;;-1:-1:-1;;;25502:44:0;;27108:2:1;25502:44:0;;;27090:21:1;27147:2;27127:18;;;27120:30;27186:34;27166:18;;;27159:62;-1:-1:-1;;;27237:18:1;;;27230:32;27279:19;;25502:44:0;26906:398:1;25356:206:0;25583:24;25598:4;25604:2;25583:14;:24::i;:::-;-1:-1:-1;25635:4:0;;24484:1163;-1:-1:-1;;;;;;;;24484:1163:0:o;18821:446::-;18922:6;;18890:4;;-1:-1:-1;;;;;18914:14:0;;;18922:6;;18914:14;;;;:43;;-1:-1:-1;18951:6:0;;-1:-1:-1;;;;;18945:12:0;;;18951:6;;18945:12;;18914:43;:79;;;;-1:-1:-1;18987:6:0;;-1:-1:-1;;;;;18987:6:0;18974:9;:19;;18914:79;:118;;;;-1:-1:-1;;;;;;19011:21:0;;;;;;:17;:21;;;;;;;;19010:22;18914:118;:159;;;;-1:-1:-1;;;;;;19050:23:0;;;;;;:17;:23;;;;;;;;19049:24;18914:159;:186;;;;-1:-1:-1;;;;;;19090:10:0;;6210:42;19090:10;;18914:186;:219;;;;-1:-1:-1;;;;;;19117:16:0;;;;18914:219;:257;;;;-1:-1:-1;;;;;;19150:21:0;;19166:4;19150:21;;18914:257;:302;;;;-1:-1:-1;19204:11:0;;-1:-1:-1;;;;;19188:28:0;;;19204:11;;;;;19188:28;;18914:302;:345;;;;-1:-1:-1;;19247:11:0;;;;;-1:-1:-1;;;;;19247:11:0;;;19233:26;;;;;18821:446;-1:-1:-1;18821:446:0:o;21193:1900::-;6905:6;:13;;-1:-1:-1;;6905:13:0;6914:4;6905:13;;;21276:30:::1;::::0;;::::1;::::0;::::1;::::0;;21299:7:::1;21276:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;6905:6;21321:17;21317:56:::1;;21355:7;;;21317:56;21417:4;21397:26;::::0;;;:11:::1;:26;::::0;;;;;;;21432:9:::1;::::0;-1:-1:-1;;;;;21432:9:0::1;21397:46:::0;;;;;;;;-1:-1:-1;;21397:67:0::1;21393:166;;21501:4;21481:26;::::0;;;:11:::1;:26;::::0;;;;;;;21516:9:::1;::::0;-1:-1:-1;;;;;21516:9:0::1;21481:46:::0;;;;;;;-1:-1:-1;;21481:66:0;;21393:166:::1;21571:17;21654:1;21637:6;:12;;;21592:58;;21616:6;:16;;;21593:39;;:20;:39;;;;:::i;:::-;21592:58;;;;:::i;:::-;21591:64;;;;:::i;:::-;21571:84:::0;-1:-1:-1;21666:15:0::1;21684:32;21571:84:::0;21684:20;:32:::1;:::i;:::-;21753:16;::::0;;21767:1:::1;21753:16:::0;;;;;::::1;::::0;;21666:50;;-1:-1:-1;21729:21:0::1;::::0;21753:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21753:16:0::1;21729:40;;21798:4;21780;21785:1;21780:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21780:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21824:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;21824:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;21780:7;;21824:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21814:4;21819:1;21814:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21814:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21857:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;21857:186:0;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;21932:7;;21857:9:::1;::::0;21970:4;;21997::::1;::::0;22017:15:::1;::::0;21857:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21853:233;;22068:7;;;;;;21853:233;22119:21;22098:18;22205:7:::0;22179:22:::1;22192:9:::0;22119:21;22179:22:::1;:::i;:::-;22178:34;;;;:::i;:::-;22151:61:::0;-1:-1:-1;22229:13:0;;22225:400:::1;;22263:9;::::0;:222:::1;::::0;-1:-1:-1;;;22263:222:0;;22340:4:::1;22263:222;::::0;::::1;28704:34:1::0;28754:18;;;28747:34;;;22263:9:0::1;28797:18:1::0;;;28790:34;;;28840:18;;;28833:34;6210:42:0::1;28883:19:1::0;;;28876:44;22455:15:0::1;28936:19:1::0;;;28929:35;-1:-1:-1;;;;;22263:9:0;;::::1;::::0;:25:::1;::::0;22296:16;;28615:19:1;;22263:222:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22263:222:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;22263:222:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;22259:355;;22592:7;;;;;;;;22259:355;-1:-1:-1::0;;22510:40:0::1;::::0;;20878:25:1;;;20934:2;20919:18;;20912:34;;;22510:40:0::1;::::0;-1:-1:-1;20851:18:1;22510:40:0::1;;;;;;;22259:355;22637:30;22651:16:::0;22637:30;::::1;:::i;:::-;;;22694:6;:16;;;22678:6;:12;;:32;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;22801:12:::1;::::0;::::1;::::0;22783:14;;22721:12:::1;::::0;-1:-1:-1;22721:12:0;;22769:44;;::::1;::::0;22770:27:::1;::::0;::::1;:10:::0;:27:::1;:::i;:::-;22769:44;;;;:::i;:::-;22744:69:::0;-1:-1:-1;22824:24:0::1;22851:29;22744:69:::0;22851:10;:29:::1;:::i;:::-;22897:14:::0;;22824:56;;-1:-1:-1;22897:18:0::1;;::::0;22893:103:::1;;22936:7;;;;;;;;;-1:-1:-1::0;;;;;22936:7:0::1;-1:-1:-1::0;;;;;22936:12:0::1;;22956:14;22936:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22932:53:::0;::::1;23019:15;::::0;:66:::1;::::0;-1:-1:-1;;;;;23019:15:0;;::::1;::::0;23075:5:::1;::::0;23047:21:::1;::::0;23019:66:::1;::::0;;;23047:21;23019:15;23075:5;23019:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;6929:1:0::1;-1:-1:-1::0;6941:6:0;:14;;-1:-1:-1;;6941:14:0;;;21193:1900::o;26188:842::-;26288:7;26308:18;26341:3;26337:205;;;-1:-1:-1;26374:9:0;:16;;;26337:205;;;26412:4;26408:134;;;-1:-1:-1;26446:9:0;:17;;;;;;26408:134;;;-1:-1:-1;26509:9:0;:21;;;;;;26408:134;26558:10;26572:1;26558:15;26554:61;;26597:6;26590:13;;;;;26554:61;26639:11;;;;;-1:-1:-1;;;;;26639:11:0;26663:4;26631:37;:110;;;;;26686:13;26703:1;26686:18;:54;;;;26721:13;26738:2;26721:19;26686:54;26627:138;;;-1:-1:-1;26758:4:0;26627:138;26775:17;6106:5;26795:19;26804:10;26795:6;:19;:::i;:::-;:38;;;;:::i;:::-;26775:58;-1:-1:-1;26848:13:0;;26844:141;;26894:4;26878:7;:22;;;;;;;;;;:35;;26904:9;;26878:7;:35;;26904:9;;26878:35;:::i;:::-;;;;-1:-1:-1;;26933:40:0;;391:25:1;;;26956:4:0;;-1:-1:-1;;;;;26933:40:0;;;;;379:2:1;364:18;26933:40:0;;;;;;;26844:141;27004:18;27013:9;27004:6;:18;:::i;:::-;26997:25;;;;26188:842;;;;;;;;:::o;23101:634::-;23183:16;;;;;;;23182:17;23174:65;;;;-1:-1:-1;;;23174:65:0;;29874:2:1;23174:65:0;;;29856:21:1;29913:2;29893:18;;;29886:30;29952:34;29932:18;;;29925:62;-1:-1:-1;;;30003:18:1;;;29996:33;30046:19;;23174:65:0;29672:399:1;23174:65:0;23255:20;23266:4;23272:2;23255:10;:20::i;:::-;23254:21;:37;;;;-1:-1:-1;23285:6:0;;-1:-1:-1;;;;;23279:12:0;;;23285:6;;23279:12;23254:37;23250:478;;;-1:-1:-1;;;;;23308:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;23308:30:0;23334:4;23308:30;;;23353:16;:23;;-1:-1:-1;;23353:23:0;;;;;;;23403:11;;;;23391:115;;23450:11;:40;;-1:-1:-1;;;;;;23450:40:0;23484:4;23450:40;;;;;23391:115;23532:7;;-1:-1:-1;;;;;23532:7:0;23520:104;;23576:7;:32;;-1:-1:-1;;;;;;23576:32:0;23602:4;23576:32;;;23520:104;23638:19;:26;;-1:-1:-1;;23638:26:0;;;;;23684:32;;-1:-1:-1;2924:41:1;;23684:32:0;;2912:2:1;2897:18;23684:32:0;;;;;;;23101:634;;:::o;25655:406::-;-1:-1:-1;;;;;25730:30:0;;;;;;:24;:30;;;;;;;;25725:113;;25781:7;;-1:-1:-1;;;;;25801:13:0;;;25781:7;25801:13;;;;;;;;;;;;;25781:34;;-1:-1:-1;;;25781:34:0;;;;;16818:74:1;;;;16908:18;;;16901:34;25781:7:0;;;:13;;16791:18:1;;25781:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25777:50;;-1:-1:-1;;;;;25853:28:0;;;;;;:24;:28;;;;;;;;25848:107;;25902:7;;-1:-1:-1;;;;;25920:11:0;;;25902:7;25920:11;;;;;;;;;;;;;25902:30;;-1:-1:-1;;;25902:30:0;;;;;16818:74:1;;;;16908:18;;;16901:34;25902:7:0;;;:13;;16791:18:1;;25902:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25898:46;;25969:14;;;;25965:89;;;26004:7;;26020:10;;26004:27;;-1:-1:-1;;;26004:27:0;;-1:-1:-1;;;;;26004:7:0;;;;:15;;:27;;;;391:25:1;;;379:2;364:18;;245:177;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:250::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1486:11;;;1480:18;1467:11;;;1460:39;1432:2;1425:10;1396:113;;;-1:-1:-1;;1543:1:1;1525:16;;1518:27;1301:250::o;1556:271::-;1598:3;1636:5;1630:12;1663:6;1658:3;1651:19;1679:76;1748:6;1741:4;1736:3;1732:14;1725:4;1718:5;1714:16;1679:76;:::i;:::-;1809:2;1788:15;-1:-1:-1;;1784:29:1;1775:39;;;;1816:4;1771:50;;1556:271;-1:-1:-1;;1556:271:1:o;1832:220::-;1981:2;1970:9;1963:21;1944:4;2001:45;2042:2;2031:9;2027:18;2019:6;2001:45;:::i;2305:154::-;-1:-1:-1;;;;;2384:5:1;2380:54;2373:5;2370:65;2360:93;;2449:1;2446;2439:12;2464:315;2532:6;2540;2593:2;2581:9;2572:7;2568:23;2564:32;2561:52;;;2609:1;2606;2599:12;2561:52;2648:9;2635:23;2667:31;2692:5;2667:31;:::i;:::-;2717:5;2769:2;2754:18;;;;2741:32;;-1:-1:-1;;;2464:315:1:o;2976:247::-;3035:6;3088:2;3076:9;3067:7;3063:23;3059:32;3056:52;;;3104:1;3101;3094:12;3056:52;3143:9;3130:23;3162:31;3187:5;3162:31;:::i;3228:388::-;3296:6;3304;3357:2;3345:9;3336:7;3332:23;3328:32;3325:52;;;3373:1;3370;3363:12;3325:52;3412:9;3399:23;3431:31;3456:5;3431:31;:::i;:::-;3481:5;-1:-1:-1;3538:2:1;3523:18;;3510:32;3551:33;3510:32;3551:33;:::i;3621:456::-;3698:6;3706;3714;3767:2;3755:9;3746:7;3742:23;3738:32;3735:52;;;3783:1;3780;3773:12;3735:52;3822:9;3809:23;3841:31;3866:5;3841:31;:::i;:::-;3891:5;-1:-1:-1;3948:2:1;3933:18;;3920:32;3961:33;3920:32;3961:33;:::i;:::-;3621:456;;4013:7;;-1:-1:-1;;;4067:2:1;4052:18;;;;4039:32;;3621:456::o;4082:127::-;4143:10;4138:3;4134:20;4131:1;4124:31;4174:4;4171:1;4164:15;4198:4;4195:1;4188:15;4214:275;4285:2;4279:9;4350:2;4331:13;;-1:-1:-1;;4327:27:1;4315:40;;4385:18;4370:34;;4406:22;;;4367:62;4364:88;;;4432:18;;:::i;:::-;4468:2;4461:22;4214:275;;-1:-1:-1;4214:275:1:o;4494:183::-;4554:4;4587:18;4579:6;4576:30;4573:56;;;4609:18;;:::i;:::-;-1:-1:-1;4654:1:1;4650:14;4666:4;4646:25;;4494:183::o;4682:662::-;4736:5;4789:3;4782:4;4774:6;4770:17;4766:27;4756:55;;4807:1;4804;4797:12;4756:55;4843:6;4830:20;4869:4;4893:60;4909:43;4949:2;4909:43;:::i;:::-;4893:60;:::i;:::-;4987:15;;;5073:1;5069:10;;;;5057:23;;5053:32;;;5018:12;;;;5097:15;;;5094:35;;;5125:1;5122;5115:12;5094:35;5161:2;5153:6;5149:15;5173:142;5189:6;5184:3;5181:15;5173:142;;;5255:17;;5243:30;;5293:12;;;;5206;;5173:142;;;-1:-1:-1;5333:5:1;4682:662;-1:-1:-1;;;;;;4682:662:1:o;5349:1215::-;5467:6;5475;5528:2;5516:9;5507:7;5503:23;5499:32;5496:52;;;5544:1;5541;5534:12;5496:52;5584:9;5571:23;5613:18;5654:2;5646:6;5643:14;5640:34;;;5670:1;5667;5660:12;5640:34;5708:6;5697:9;5693:22;5683:32;;5753:7;5746:4;5742:2;5738:13;5734:27;5724:55;;5775:1;5772;5765:12;5724:55;5811:2;5798:16;5833:4;5857:60;5873:43;5913:2;5873:43;:::i;5857:60::-;5951:15;;;6033:1;6029:10;;;;6021:19;;6017:28;;;5982:12;;;;6057:19;;;6054:39;;;6089:1;6086;6079:12;6054:39;6113:11;;;;6133:217;6149:6;6144:3;6141:15;6133:217;;;6229:3;6216:17;6246:31;6271:5;6246:31;:::i;:::-;6290:18;;6166:12;;;;6328;;;;6133:217;;;6369:5;-1:-1:-1;;6412:18:1;;6399:32;;-1:-1:-1;;6443:16:1;;;6440:36;;;6472:1;6469;6462:12;6440:36;;6495:63;6550:7;6539:8;6528:9;6524:24;6495:63;:::i;:::-;6485:73;;;5349:1215;;;;;:::o;6758:180::-;6817:6;6870:2;6858:9;6849:7;6845:23;6841:32;6838:52;;;6886:1;6883;6876:12;6838:52;-1:-1:-1;6909:23:1;;6758:180;-1:-1:-1;6758:180:1:o;6943:382::-;7008:6;7016;7069:2;7057:9;7048:7;7044:23;7040:32;7037:52;;;7085:1;7082;7075:12;7037:52;7124:9;7111:23;7143:31;7168:5;7143:31;:::i;7330:711::-;7623:3;7612:9;7605:22;7586:4;7650:46;7691:3;7680:9;7676:19;7668:6;7650:46;:::i;:::-;7744:9;7736:6;7732:22;7727:2;7716:9;7712:18;7705:50;7778:33;7804:6;7796;7778:33;:::i;:::-;7764:47;;7859:9;7851:6;7847:22;7842:2;7831:9;7827:18;7820:50;7893:33;7919:6;7911;7893:33;:::i;:::-;7879:47;;7974:9;7966:6;7962:22;7957:2;7946:9;7942:18;7935:50;8002:33;8028:6;8020;8002:33;:::i;8046:511::-;8114:6;8122;8130;8183:2;8171:9;8162:7;8158:23;8154:32;8151:52;;;8199:1;8196;8189:12;8151:52;8238:9;8225:23;8257:28;8279:5;8257:28;:::i;:::-;8304:5;-1:-1:-1;8361:2:1;8346:18;;8333:32;8374:30;8333:32;8374:30;:::i;:::-;8423:7;-1:-1:-1;8482:2:1;8467:18;;8454:32;8495:30;8454:32;8495:30;:::i;:::-;8544:7;8534:17;;;8046:511;;;;;:::o;8809:248::-;8877:6;8885;8938:2;8926:9;8917:7;8913:23;8909:32;8906:52;;;8954:1;8951;8944:12;8906:52;-1:-1:-1;;8977:23:1;;;9047:2;9032:18;;;9019:32;;-1:-1:-1;8809:248:1:o;9062:316::-;9139:6;9147;9155;9208:2;9196:9;9187:7;9183:23;9179:32;9176:52;;;9224:1;9221;9214:12;9176:52;-1:-1:-1;;9247:23:1;;;9317:2;9302:18;;9289:32;;-1:-1:-1;9368:2:1;9353:18;;;9340:32;;9062:316;-1:-1:-1;9062:316:1:o;10092:385::-;10178:6;10186;10194;10202;10255:3;10243:9;10234:7;10230:23;10226:33;10223:53;;;10272:1;10269;10262:12;10223:53;-1:-1:-1;;10295:23:1;;;10365:2;10350:18;;10337:32;;-1:-1:-1;10416:2:1;10401:18;;10388:32;;10467:2;10452:18;10439:32;;-1:-1:-1;10092:385:1;-1:-1:-1;10092:385:1:o;11101:127::-;11162:10;11157:3;11153:20;11150:1;11143:31;11193:4;11190:1;11183:15;11217:4;11214:1;11207:15;11233:422;11322:1;11365:5;11322:1;11379:270;11400:7;11390:8;11387:21;11379:270;;;11459:4;11455:1;11451:6;11447:17;11441:4;11438:27;11435:53;;;11468:18;;:::i;:::-;11518:7;11508:8;11504:22;11501:55;;;11538:16;;;;11501:55;11617:22;;;;11577:15;;;;11379:270;;;11383:3;11233:422;;;;;:::o;11660:806::-;11709:5;11739:8;11729:80;;-1:-1:-1;11780:1:1;11794:5;;11729:80;11828:4;11818:76;;-1:-1:-1;11865:1:1;11879:5;;11818:76;11910:4;11928:1;11923:59;;;;11996:1;11991:130;;;;11903:218;;11923:59;11953:1;11944:10;;11967:5;;;11991:130;12028:3;12018:8;12015:17;12012:43;;;12035:18;;:::i;:::-;-1:-1:-1;;12091:1:1;12077:16;;12106:5;;11903:218;;12205:2;12195:8;12192:16;12186:3;12180:4;12177:13;12173:36;12167:2;12157:8;12154:16;12149:2;12143:4;12140:12;12136:35;12133:77;12130:159;;;-1:-1:-1;12242:19:1;;;12274:5;;12130:159;12321:34;12346:8;12340:4;12321:34;:::i;:::-;12391:6;12387:1;12383:6;12379:19;12370:7;12367:32;12364:58;;;12402:18;;:::i;:::-;12440:20;;11660:806;-1:-1:-1;;;11660:806:1:o;12471:140::-;12529:5;12558:47;12599:4;12589:8;12585:19;12579:4;12558:47;:::i;12616:168::-;12689:9;;;12720;;12737:15;;;12731:22;;12717:37;12707:71;;12758:18;;:::i;12789:128::-;12856:9;;;12877:11;;;12874:37;;;12891:18;;:::i;13272:127::-;13333:10;13328:3;13324:20;13321:1;13314:31;13364:4;13361:1;13354:15;13388:4;13385:1;13378:15;13751:197;13789:3;13817:6;13858:2;13851:5;13847:14;13885:2;13876:7;13873:15;13870:41;;13891:18;;:::i;:::-;13940:1;13927:15;;13751:197;-1:-1:-1;;;13751:197:1:o;13953:217::-;13993:1;14019;14009:132;;14063:10;14058:3;14054:20;14051:1;14044:31;14098:4;14095:1;14088:15;14126:4;14123:1;14116:15;14009:132;-1:-1:-1;14155:9:1;;13953:217::o;14956:184::-;15026:6;15079:2;15067:9;15058:7;15054:23;15050:32;15047:52;;;15095:1;15092;15085:12;15047:52;-1:-1:-1;15118:16:1;;14956:184;-1:-1:-1;14956:184:1:o;15145:510::-;15199:5;15252:3;15245:4;15237:6;15233:17;15229:27;15219:55;;15270:1;15267;15260:12;15219:55;15299:6;15293:13;15325:18;15321:2;15318:26;15315:52;;;15347:18;;:::i;:::-;15391:55;15434:2;15415:13;;-1:-1:-1;;15411:27:1;15440:4;15407:38;15391:55;:::i;:::-;15471:2;15462:7;15455:19;15517:3;15510:4;15505:2;15497:6;15493:15;15489:26;15486:35;15483:55;;;15534:1;15531;15524:12;15483:55;15547:77;15621:2;15614:4;15605:7;15601:18;15594:4;15586:6;15582:17;15547:77;:::i;15660:971::-;15797:6;15805;15813;15821;15874:3;15862:9;15853:7;15849:23;15845:33;15842:53;;;15891:1;15888;15881:12;15842:53;15924:9;15918:16;15953:18;15994:2;15986:6;15983:14;15980:34;;;16010:1;16007;16000:12;15980:34;16033:61;16086:7;16077:6;16066:9;16062:22;16033:61;:::i;:::-;16023:71;;16140:2;16129:9;16125:18;16119:25;16103:41;;16169:2;16159:8;16156:16;16153:36;;;16185:1;16182;16175:12;16153:36;16208:63;16263:7;16252:8;16241:9;16237:24;16208:63;:::i;:::-;16198:73;;16317:2;16306:9;16302:18;16296:25;16280:41;;16346:2;16336:8;16333:16;16330:36;;;16362:1;16359;16352:12;16330:36;16385:63;16440:7;16429:8;16418:9;16414:24;16385:63;:::i;:::-;16375:73;;16494:2;16483:9;16479:18;16473:25;16457:41;;16523:2;16513:8;16510:16;16507:36;;;16539:1;16536;16529:12;16507:36;;16562:63;16617:7;16606:8;16595:9;16591:24;16562:63;:::i;:::-;16552:73;;;15660:971;;;;;;;:::o;19456:245::-;19535:6;19543;19596:2;19584:9;19575:7;19571:23;19567:32;19564:52;;;19612:1;19609;19602:12;19564:52;-1:-1:-1;;19635:16:1;;19691:2;19676:18;;;19670:25;19635:16;;19670:25;;-1:-1:-1;19456:245:1:o;19706:251::-;19776:6;19829:2;19817:9;19808:7;19804:23;19800:32;19797:52;;;19845:1;19842;19835:12;19797:52;19877:9;19871:16;19896:31;19921:5;19896:31;:::i;19962:131::-;20022:5;20051:36;20078:8;20072:4;20051:36;:::i;20454:245::-;20521:6;20574:2;20562:9;20553:7;20549:23;20545:32;20542:52;;;20590:1;20587;20580:12;20542:52;20622:9;20616:16;20641:28;20663:5;20641:28;:::i;26776:125::-;26841:9;;;26862:10;;;26859:36;;;26875:18;;:::i;27309:1026::-;27571:4;27619:3;27608:9;27604:19;27650:6;27639:9;27632:25;27676:2;27714:6;27709:2;27698:9;27694:18;27687:34;27757:3;27752:2;27741:9;27737:18;27730:31;27781:6;27816;27810:13;27847:6;27839;27832:22;27885:3;27874:9;27870:19;27863:26;;27924:2;27916:6;27912:15;27898:29;;27945:1;27955:218;27969:6;27966:1;27963:13;27955:218;;;28034:13;;-1:-1:-1;;;;;28030:62:1;28018:75;;28148:15;;;;28113:12;;;;27991:1;27984:9;27955:218;;;-1:-1:-1;;;;;;;28229:55:1;;;;28224:2;28209:18;;28202:83;-1:-1:-1;;;28316:3:1;28301:19;28294:35;28190:3;27309:1026;-1:-1:-1;;;27309:1026:1:o;28975:306::-;29063:6;29071;29079;29132:2;29120:9;29111:7;29107:23;29103:32;29100:52;;;29148:1;29145;29138:12;29100:52;29177:9;29171:16;29161:26;;29227:2;29216:9;29212:18;29206:25;29196:35;;29271:2;29260:9;29256:18;29250:25;29240:35;;28975:306;;;;;:::o;29286:171::-;29354:6;29393:10;;;29381;;;29377:27;;29416:12;;;29413:38;;;29431:18;;:::i;:::-;29413:38;29286:171;;;;:::o

Swarm Source

ipfs://5e4d6df8003a46ddc1f5bb415e9abf030f46bd2e529d2b2ba26768f2a0d44b1c

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.