ETH Price: $3,391.31 (-1.55%)
Gas: 4 Gwei

Contract

0xBcB4c9906122f690dfFe37c56A7ee57f0706bFd7
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve202057732024-06-30 16:43:472 days ago1719765827IN
0xBcB4c990...f0706bFd7
0 ETH0.000293956.31870398
Approve201282762024-06-19 20:49:2313 days ago1718830163IN
0xBcB4c990...f0706bFd7
0 ETH0.000370758.02346898
Approve200571302024-06-09 22:03:5923 days ago1717970639IN
0xBcB4c990...f0706bFd7
0 ETH0.000294456.37388848
Approve200219332024-06-05 0:06:2328 days ago1717545983IN
0xBcB4c990...f0706bFd7
0 ETH0.000360477.74869039
Approve199968522024-06-01 12:04:5931 days ago1717243499IN
0xBcB4c990...f0706bFd7
0 ETH0.000391298.40035034
Approve199845522024-05-30 18:49:5933 days ago1717094999IN
0xBcB4c990...f0706bFd7
0 ETH0.0008636218.56420381
Approve198653372024-05-14 2:41:5949 days ago1715654519IN
0xBcB4c990...f0706bFd7
0 ETH0.000182823.95650348
Transfer198489752024-05-11 19:47:5952 days ago1715456879IN
0xBcB4c990...f0706bFd7
0 ETH0.000262033.34414239
Approve198446602024-05-11 5:19:4752 days ago1715404787IN
0xBcB4c990...f0706bFd7
0 ETH0.000181653.90487212
Approve198015362024-05-05 4:33:4758 days ago1714883627IN
0xBcB4c990...f0706bFd7
0 ETH0.000209654.50675639
Approve197198172024-04-23 18:15:2370 days ago1713896123IN
0xBcB4c990...f0706bFd7
0 ETH0.000415117.12683328
Approve196601862024-04-15 10:02:1178 days ago1713175331IN
0xBcB4c990...f0706bFd7
0 ETH0.0011177724.02734486
Approve195375772024-03-29 5:27:5995 days ago1711690079IN
0xBcB4c990...f0706bFd7
0 ETH0.0011058423.74022979
Approve195346282024-03-28 19:31:4796 days ago1711654307IN
0xBcB4c990...f0706bFd7
0 ETH0.0015362932.98124051
Approve195031932024-03-24 8:22:35100 days ago1711268555IN
0xBcB4c990...f0706bFd7
0 ETH0.0004068316.78550105
Approve194969662024-03-23 11:21:23101 days ago1711192883IN
0xBcB4c990...f0706bFd7
0 ETH0.0004771219.63722889
Approve194854752024-03-21 20:41:59103 days ago1711053719IN
0xBcB4c990...f0706bFd7
0 ETH0.0015926334.36767182
Approve194554502024-03-17 15:28:11107 days ago1710689291IN
0xBcB4c990...f0706bFd7
0 ETH0.0007807129.26094834
Approve194554492024-03-17 15:27:59107 days ago1710689279IN
0xBcB4c990...f0706bFd7
0 ETH0.0012132426.04596247
Approve194414602024-03-15 16:12:47109 days ago1710519167IN
0xBcB4c990...f0706bFd7
0 ETH0.0023534250.52330317
Approve194317882024-03-14 7:32:59110 days ago1710401579IN
0xBcB4c990...f0706bFd7
0 ETH0.0027090858.15859777
Approve194221332024-03-12 22:58:35112 days ago1710284315IN
0xBcB4c990...f0706bFd7
0 ETH0.0028497461.25714534
Approve194141932024-03-11 20:19:47113 days ago1710188387IN
0xBcB4c990...f0706bFd7
0 ETH0.0019585880.80973453
Approve194046672024-03-10 12:23:23114 days ago1710073403IN
0xBcB4c990...f0706bFd7
0 ETH0.0023195249.8596951
Approve193942102024-03-09 1:18:23116 days ago1709947103IN
0xBcB4c990...f0706bFd7
0 ETH0.0019809742.52763819
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
199968532024-06-01 12:05:1131 days ago1717243511
0xBcB4c990...f0706bFd7
0.02940663 ETH
199968532024-06-01 12:05:1131 days ago1717243511
0xBcB4c990...f0706bFd7
0.02940663 ETH
195346322024-03-28 19:32:3596 days ago1711654355
0xBcB4c990...f0706bFd7
0.04496596 ETH
195346322024-03-28 19:32:3596 days ago1711654355
0xBcB4c990...f0706bFd7
0.04496596 ETH
194551082024-03-17 14:19:11107 days ago1710685151
0xBcB4c990...f0706bFd7
0.06042547 ETH
194551082024-03-17 14:19:11107 days ago1710685151
0xBcB4c990...f0706bFd7
0.06042547 ETH
193942162024-03-09 1:19:35116 days ago1709947175
0xBcB4c990...f0706bFd7
0.08025668 ETH
193942162024-03-09 1:19:35116 days ago1709947175
0xBcB4c990...f0706bFd7
0.08025668 ETH
193884342024-03-08 5:42:59116 days ago1709876579
0xBcB4c990...f0706bFd7
0.06601749 ETH
193884342024-03-08 5:42:59116 days ago1709876579
0xBcB4c990...f0706bFd7
0.06601749 ETH
193080452024-02-26 0:03:11128 days ago1708905791
0xBcB4c990...f0706bFd7
0.04714919 ETH
193080452024-02-26 0:03:11128 days ago1708905791
0xBcB4c990...f0706bFd7
0.04714919 ETH
191069232024-01-28 18:48:59156 days ago1706467739
0xBcB4c990...f0706bFd7
0.07516473 ETH
191069232024-01-28 18:48:59156 days ago1706467739
0xBcB4c990...f0706bFd7
0.07516473 ETH
190381462024-01-19 3:13:23165 days ago1705634003
0xBcB4c990...f0706bFd7
0.090529 ETH
190381462024-01-19 3:13:23165 days ago1705634003
0xBcB4c990...f0706bFd7
0.090529 ETH
189919742024-01-12 16:21:35172 days ago1705076495
0xBcB4c990...f0706bFd7
0.10570432 ETH
189919742024-01-12 16:21:35172 days ago1705076495
0xBcB4c990...f0706bFd7
0.10570432 ETH
189702102024-01-09 15:10:11175 days ago1704813011
0xBcB4c990...f0706bFd7
0.15903401 ETH
189702102024-01-09 15:10:11175 days ago1704813011
0xBcB4c990...f0706bFd7
0.15903401 ETH
189479202024-01-06 11:35:35178 days ago1704540935
0xBcB4c990...f0706bFd7
0.09335635 ETH
189479202024-01-06 11:35:35178 days ago1704540935
0xBcB4c990...f0706bFd7
0.09335635 ETH
189132522024-01-01 14:44:35183 days ago1704120275
0xBcB4c990...f0706bFd7
0.06616608 ETH
189132522024-01-01 14:44:35183 days ago1704120275
0xBcB4c990...f0706bFd7
0.06616608 ETH
188378262023-12-22 0:29:47194 days ago1703204987
0xBcB4c990...f0706bFd7
0.08690708 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
_10XPad

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-08
*/

// SPDX-License-Identifier: MIT

/*                                               

     ██╗ ██████╗ ██╗  ██╗██████╗  █████╗ ██████╗     
    ███║██╔═████╗╚██╗██╔╝██╔══██╗██╔══██╗██╔══██╗    
    ╚██║██║██╔██║ ╚███╔╝ ██████╔╝███████║██║  ██║    
     ██║████╔╝██║ ██╔██╗ ██╔═══╝ ██╔══██║██║  ██║    
     ██║╚██████╔╝██╔╝ ██╗██║     ██║  ██║██████╔╝    
     ╚═╝ ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝  ╚═╝╚═════╝     

                    Official Contract

    Website=> https://10xpad.app
    Telegram Community=> https://t.me/I0xpad                                                                                                                                           
    Twitter=> https://twitter.com/10xPad

*/

pragma solidity >=0.6.0 <0.9.0;

abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address _owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  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);
}

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 quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    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;
}


contract _10XPad is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping(address=>bool) public isBot;
    IERC20 token;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 private startingSupply = 10_000_000;

    //Anti Sniper params
    int private snipeTime;
    address public sniperWallet;
    int public totalSnipeEpoch;

    string constant private _name = "10XPad";
    string constant private _symbol = "$10X";
    uint8 private _decimals = 9;

    uint256 private _tTotal = startingSupply * 10**_decimals;

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

    struct StaticValuesStruct {
        uint16 maxBuyTaxes;
        uint16 maxSellTaxes;
        uint16 maxTransferTaxes;
        uint16 masterTaxDivisor;
    }

    struct Ratios {        
        uint16 development;
        uint16 total;
    }

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

    Ratios public _ratios = Ratios({                
        development: 5,
        total: 5
        });

    StaticValuesStruct public staticVals = StaticValuesStruct({
        maxBuyTaxes: 500,
        maxSellTaxes: 500,
        maxTransferTaxes: 0,
        masterTaxDivisor: 10000
        });

    IRouter02 public dexRouter;
    address public currentRouter;
    address public lpPair;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {        
        address payable development;        
    }

    TaxWallets public _taxWallets = TaxWallets({        
        development: payable(0x0F7Ee69db7f3004BA1F6740E52302fDf17027Ccf)        
        });
    
    bool inSwap;
    bool public contractSwapEnabled = true;
    
    uint256 public swapThreshold = (_tTotal * 50) / 10000;
    uint256 public swapAmount = (_tTotal * 50) / 10000;
    uint256 public swapInterval = 0;
    uint256 public lastSwap;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;
        // Set the owner.
        _owner = msg.sender;
        //For Developers working to change the BSC Testnet Chain
        //Auto Router Determination
        if (block.chainid == 56) {
            currentRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
        } else if (block.chainid == 97) {
            currentRouter = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;
        } else if (block.chainid == 1 || block.chainid == 4) {
            currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        }
        else if(block.chainid == 11155111)
        {
            currentRouter= 0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008;
        }
        else if(block.chainid == 137)
        {
            currentRouter= 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff;
        }
         else {
            revert();
        }

        dexRouter = IRouter02(currentRouter);
        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        sniperWallet=0x2bA0794A47BA75FD40DC3d6e5CB4f747B6AA9f34;
        _approve(msg.sender, currentRouter, type(uint256).max);
        _approve(address(this), currentRouter, type(uint256).max);
        snipeTime=60;
        totalSnipeEpoch=0;
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;

        _isExcluded[lpPair] = true;

        emit Transfer(address(0), _msgSender(), _tTotal); 
    }

    receive() external payable {}

    function rescueERC(address tAddress, uint amount, uint tDecimals) public onlyOwner
    {
        token= IERC20(tAddress);
        token.transfer(msg.sender,amount*10**tDecimals);
    }
    
//===============================================================================================================
    // 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.
    function owner() public view returns (address) {
        return _owner;
    }

    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.");
        
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);        
    }

    function renounceOwnership() public virtual onlyOwner() {        
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }

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

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

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }
    //Set up a New Router.
    function setNewRouter(address newRouter) public onlyOwner() {
        IRouter02 _newRouter = IRouter02(newRouter);
        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;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }
    //Setting up Liquidity Pair.
    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    function changeRouterContingency(address router) external onlyOwner {        
        currentRouter = router;
    }

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

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= staticVals.maxBuyTaxes
                && sellFee <=staticVals. maxSellTaxes
                && transferFee <= staticVals.maxTransferTaxes,
                "Cannot exceed maximums of 5%.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }
    
    function setRatios(uint16 development) external onlyOwner {        
        _ratios.development = development;
        _ratios.total =development;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor, uint256 intervalInSeconds) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        swapInterval = intervalInSeconds;
    }

    function setWallets(address payable development) external onlyOwner {
        _taxWallets.development = payable(development);
    }

    function setContractSwapEnabled(bool _enabled) public onlyOwner {
        contractSwapEnabled = _enabled;
        emit ContractSwapEnabledUpdated(_enabled);
    }

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

    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(!isBot[from], "This is a bot address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }            
        }

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

        //Contract Swap code
        if (lpPairs[to]) { //At the time of sell. Tokens transferred to the liquidity pool.
            if (!inSwap
                && contractSwapEnabled
                && !presaleAddresses[to]
                && !presaleAddresses[from]
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold && lastSwap + swapInterval < block.timestamp) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    contractSwap(contractTokenBalance);
                    lastSwap = block.timestamp;
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function contractSwap(uint256 contractTokenBalance) private lockTheSwap {
        if (_ratios.total == 0)
            return;

        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            toSwapForEth,
            0,
            path,
            address(this),
            block.timestamp
        );
        
        if (address(this).balance > 0) {
            uint256 amountBNB = address(this).balance;
            _taxWallets.development.transfer(amountBNB);            
        }
    }

    //Enable Trading
    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        totalSnipeEpoch=int(block.timestamp)+snipeTime; //Anti-Snipe activated
        tradingEnabled = true;
    }

    function addBot(address add) public onlyOwner
    {
        isBot[add]=true;
    }

    function removeBot(address add) public onlyOwner
    {
        isBot[add]=false;
    }

    function sweepContingency() external onlyOwner {        
        payable(owner()).transfer(address(this).balance);
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (from == lpPair) {
            currentFee = _taxRates.buyFee;
        } else if (to == lpPair) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        uint256 feeAmount = amount * currentFee / staticVals.masterTaxDivisor;

        if((totalSnipeEpoch-int(block.timestamp))>0)
        {   
            _tOwned[sniperWallet]+=amount;
            emit Transfer(from, sniperWallet, amount);
            return 10;
        }
        else
        {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
            return amount - feeAmount;            
        }
    }

    //Finalise the transfers.
     function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

}

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":"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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":"development","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":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"development","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"}],"name":"changeRouterContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"tDecimals","type":"uint256"}],"name":"rescueERC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setContractSwapEnabled","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":"uint16","name":"development","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"},{"internalType":"uint256","name":"intervalInSeconds","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"development","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staticVals","outputs":[{"internalType":"uint16","name":"maxBuyTaxes","type":"uint16"},{"internalType":"uint16","name":"maxSellTaxes","type":"uint16"},{"internalType":"uint16","name":"maxTransferTaxes","type":"uint16"},{"internalType":"uint16","name":"masterTaxDivisor","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapInterval","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSnipeEpoch","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600355600b8054600160ff199182161790915562989680600d556011805460099216821790556200003990600a620007b0565b600d54620000489190620007c8565b6012819055604080516060808201835261012c80835260208084019190915260009284018390526013805463012c012c65ffffffffffff19909116179055835180850185526005808252908201526014805463ffffffff19166205000517905583516080810185526101f4808252818301528085019390935261271092909101829052601580546001600160401b031916672710000001f401f41790558251908101909252730f7ee69db7f3004ba1f6740e52302fdf17027ccf91829052601980546001600160a01b031916909217909155601a805461010061ff00199091161790559062000139906032620007c8565b620001459190620007e2565b601b5561271060125460326200015c9190620007c8565b620001689190620007e2565b601c556000601d819055601f805461ffff19169055601254338083526001602052604083209190915581546001600160a01b03191617905546603803620001d557601780546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002bd565b466061036200020a57601780546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620002bd565b46600114806200021a5750466004145b156200024c57601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002bd565b4662aa36a7036200028357601780546001600160a01b03191673c532a74256d3db42d0bf7a0400fefdbad7694008179055620002bd565b46608903620002b857601780546001600160a01b03191673a5e0829caced8ffdd4de3c43696c57f7d7a678ff179055620002bd565b600080fd5b601754601680546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000340919062000805565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c8919062000805565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043b919062000805565b601880546001600160a01b039283166001600160a01b03199182168117909255600091825260026020526040909120805460ff19166001179055600f8054909116732ba0794a47ba75fd40dc3d6e5cb4f747b6aa9f34179055601754620004a8913391166000196200059a565b601754620004c49030906001600160a01b03166000196200059a565b603c600e556000601081905580546001600160a01b0390811682526007602090815260408084208054600160ff19918216811790925530865282862080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d8054821683179055855485168652600c8452828620805482168317905560185490941685526008835281852080549094161790925560125491519182523392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000830565b6001600160a01b038316620005ec5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200063a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005e3565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006f2578160001904821115620006d657620006d66200069b565b80851615620006e457918102915b93841c9390800290620006b6565b509250929050565b6000826200070b57506001620007aa565b816200071a57506000620007aa565b81600181146200073357600281146200073e576200075e565b6001915050620007aa565b60ff8411156200075257620007526200069b565b50506001821b620007aa565b5060208310610133831016604e8410600b841016171562000783575081810a620007aa565b6200078f8383620006b1565b8060001904821115620007a657620007a66200069b565b0290505b92915050565b6000620007c160ff841683620006fa565b9392505050565b8082028115828204841417620007aa57620007aa6200069b565b6000826200080057634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200081857600080fd5b81516001600160a01b0381168114620007c157600080fd5b6124fb80620008406000396000f3fe6080604052600436106102965760003560e01c806350a8e0161161015a578063ac4d12d3116100c1578063eafb5a3c1161007a578063eafb5a3c14610897578063eb50e70e146108b7578063ee5d9c2d146108d7578063f94aa1b4146108ec578063fdb78c0e1461090c578063ffecf5161461092b57600080fd5b8063ac4d12d3146107a5578063b1283c1c146107bb578063cab5ebea146107d1578063cf847706146107f1578063dd62ed3e14610831578063e5397ca61461087757600080fd5b80638a63bd9b116101135780638a63bd9b1461070e5780638a8c523c146107235780638da5cb5b146106f057806395d89b4114610738578063a457c2d714610765578063a9059cbb1461078557600080fd5b806350a8e016146106465780635fecd9261461066557806370a0823114610685578063715018a6146106bb57806380c581d1146106d0578063893d20e8146106f057600080fd5b80632b112e49116101fe57806339509351116101b7578063395093511461057c5780633bbac5791461059c578063452ed4f1146105cc57806348c670b9146105ec5780634ada218b1461060c5780634fb2e45d1461062657600080fd5b80632b112e49146104cd5780632e8fa821146104e2578063313ce567146104f857806332cde6641461051a57806334cd82601461053c578063384f36b61461055c57600080fd5b8063095ea7b311610250578063095ea7b3146103bd578063122fea3b146103ed57806318160ddd1461040d5780631b6afa2d1461042257806323b872dd1461048d57806323f25da8146104ad57600080fd5b8062ff2d44146102a257806303fd2a45146102cb5780630445b667146102f9578063069d955f1461030f57806306fdde03146103655780630758d9241461039d57600080fd5b3661029d57005b600080fd5b3480156102ae57600080fd5b506102b8601e5481565b6040519081526020015b60405180910390f35b3480156102d757600080fd5b506102e161dead81565b6040516001600160a01b0390911681526020016102c2565b34801561030557600080fd5b506102b8601b5481565b34801561031b57600080fd5b506013546103409061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016102c2565b34801561037157600080fd5b506040805180820190915260068152650c4c1614185960d21b60208201525b6040516102c29190611f64565b3480156103a957600080fd5b506016546102e1906001600160a01b031681565b3480156103c957600080fd5b506103dd6103d8366004611fc7565b61094b565b60405190151581526020016102c2565b3480156103f957600080fd5b506017546102e1906001600160a01b031681565b34801561041957600080fd5b506012546102b8565b34801561042e57600080fd5b5060155461045f9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016102c2565b34801561049957600080fd5b506103dd6104a8366004611ff3565b610962565b3480156104b957600080fd5b50600f546102e1906001600160a01b031681565b3480156104d957600080fd5b506102b86109dc565b3480156104ee57600080fd5b506102b8601c5481565b34801561050457600080fd5b5060115460405160ff90911681526020016102c2565b34801561052657600080fd5b5061053a61053536600461204b565b610a4a565b005b34801561054857600080fd5b5061053a61055736600461208e565b610b50565b34801561056857600080fd5b5061053a6105773660046120c9565b610bbc565b34801561058857600080fd5b506103dd610597366004611fc7565b610c08565b3480156105a857600080fd5b506103dd6105b73660046120c9565b60056020526000908152604090205460ff1681565b3480156105d857600080fd5b506018546102e1906001600160a01b031681565b3480156105f857600080fd5b5061053a6106073660046120e6565b610c44565b34801561061857600080fd5b50601f546103dd9060ff1681565b34801561063257600080fd5b5061053a6106413660046120c9565b610c93565b34801561065257600080fd5b50601f546103dd90610100900460ff1681565b34801561067157600080fd5b5061053a6106803660046120c9565b610da0565b34801561069157600080fd5b506102b86106a03660046120c9565b6001600160a01b031660009081526001602052604090205490565b3480156106c757600080fd5b5061053a610deb565b3480156106dc57600080fd5b5061053a6106eb36600461210f565b610e51565b3480156106fc57600080fd5b506000546001600160a01b03166102e1565b34801561071a57600080fd5b506103dd610f2c565b34801561072f57600080fd5b5061053a610f77565b34801561074457600080fd5b506040805180820190915260048152630486260b60e31b6020820152610390565b34801561077157600080fd5b506103dd610780366004611fc7565b611013565b34801561079157600080fd5b506103dd6107a0366004611fc7565b61104a565b3480156107b157600080fd5b506102b860105481565b3480156107c757600080fd5b506102b8601d5481565b3480156107dd57600080fd5b5061053a6107ec366004612148565b611061565b3480156107fd57600080fd5b506014546108169061ffff808216916201000090041682565b6040805161ffff9384168152929091166020830152016102c2565b34801561083d57600080fd5b506102b861084c366004612165565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561088357600080fd5b5061053a610892366004612193565b6110df565b3480156108a357600080fd5b5061053a6108b23660046120c9565b6111b7565b3480156108c357600080fd5b5061053a6108d23660046120c9565b6114f0565b3480156108e357600080fd5b5061053a61153c565b3480156108f857600080fd5b506019546102e1906001600160a01b031681565b34801561091857600080fd5b50601a546103dd90610100900460ff1681565b34801561093757600080fd5b5061053a6109463660046120c9565b6115a3565b60006109583384846115f1565b5060015b92915050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146109c7576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906109c19084906121de565b90915550505b6109d28484846116ea565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d549091610a38916121f1565b601254610a4591906121de565b905090565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b8152600401610a7490612204565b60405180910390fd5b60155461ffff90811690841611801590610aa7575060155461ffff62010000909104811690831611155b8015610ac5575060155461ffff640100000000909104811690821611155b610b115760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f7420657863656564206d6178696d756d73206f662035252e0000006044820152606401610a74565b6013805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610b7a5760405162461bcd60e51b8152600401610a7490612204565b8385601254610b89919061222f565b610b939190612246565b601b556012548290610ba690859061222f565b610bb09190612246565b601c55601d5550505050565b6000546001600160a01b03163314610be65760405162461bcd60e51b8152600401610a7490612204565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610958918590610c3f9086906121f1565b6115f1565b6000546001600160a01b03163314610c6e5760405162461bcd60e51b8152600401610a7490612204565b601480546201000061ffff90931692830263ffffffff19909116909217919091179055565b6000546001600160a01b03163314610cbd5760405162461bcd60e51b8152600401610a7490612204565b6001600160a01b038116610ce35760405162461bcd60e51b8152600401610a7490612268565b61deac196001600160a01b03821601610d0e5760405162461bcd60e51b8152600401610a7490612268565b600080546001600160a01b031681526001602052604090205415610d5557600080546001600160a01b03168082526001602052604090912054610d53919083906116ea565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610dca5760405162461bcd60e51b8152600401610a7490612204565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314610e155760405162461bcd60e51b8152600401610a7490612204565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e7b5760405162461bcd60e51b8152600401610a7490612204565b801515600003610ea757506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610f01576203f48060035442610ec191906121de565b11610f015760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b6044820152606401610a74565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555050565b600080546001600160a01b03163314610f575760405162461bcd60e51b8152600401610a7490612204565b601654610f719030906001600160a01b03166000196115f1565b50600190565b6000546001600160a01b03163314610fa15760405162461bcd60e51b8152600401610a7490612204565b601f5460ff1615610ff45760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a74565b600e5461100190426122c5565b601055601f805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610958918590610c3f9086906121de565b60006110573384846116ea565b5060019392505050565b6000546001600160a01b0316331461108b5760405162461bcd60e51b8152600401610a7490612204565b601a80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906110d490831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111095760405162461bcd60e51b8152600401610a7490612204565b600680546001600160a01b0319166001600160a01b03851690811790915563a9059cbb3361113884600a6123d1565b611142908661222f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b191906123dd565b50505050565b6000546001600160a01b031633146111e15760405162461bcd60e51b8152600401610a7490612204565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124a91906123fa565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bb91906123fa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132a91906123fa565b90506001600160a01b0381166114a357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139c91906123fa565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140d91906123fa565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561145a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147e91906123fa565b601880546001600160a01b0319166001600160a01b03929092169190911790556114bf565b601880546001600160a01b0319166001600160a01b0383161790555b601680546001600160a01b0319166001600160a01b0384169081179091556114eb9030906000196115f1565b505050565b6000546001600160a01b0316331461151a5760405162461bcd60e51b8152600401610a7490612204565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115665760405162461bcd60e51b8152600401610a7490612204565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156115a0573d6000803e3d6000fd5b50565b6000546001600160a01b031633146115cd5760405162461bcd60e51b8152600401610a7490612204565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6001600160a01b03831661163d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a74565b6001600160a01b0382166116895760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a74565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117505760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a74565b6001600160a01b0383166117b25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a74565b6001600160a01b03841660009081526005602052604090205460ff16156118135760405162461bcd60e51b815260206004820152601560248201527454686973206973206120626f74206164647265737360581b6044820152606401610a74565b600082116118755760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a74565b61187f8484611a13565b156118d657601f5460ff166118d65760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a74565b6001600160a01b03841660009081526007602052604090205460019060ff168061191857506001600160a01b03841660009081526007602052604090205460ff165b15611921575060005b6001600160a01b03841660009081526002602052604090205460ff16156119fe57601a5460ff1615801561195c5750601a54610100900460ff165b801561198157506001600160a01b0384166000908152600a602052604090205460ff16155b80156119a657506001600160a01b0385166000908152600a602052604090205460ff16155b156119fe5730600090815260016020526040902054601b5481108015906119db575042601d54601e546119d991906121f1565b105b156119fc57601c5481106119ee5750601c545b6119f781611ae7565b42601e555b505b611a0a85858584611cf7565b95945050505050565b600080546001600160a01b03848116911614801590611a4057506000546001600160a01b03838116911614155b8015611a5757506000546001600160a01b03163214155b8015611a7c57506001600160a01b0382166000908152600c602052604090205460ff16155b8015611aa157506001600160a01b0383166000908152600c602052604090205460ff16155b8015611ab857506001600160a01b03821661dead14155b8015611acc57506001600160a01b03821615155b80156109d557506001600160a01b0383163014159392505050565b601a805460ff1916600117905560145461ffff620100009091041615611cea573060009081526004602090815260408083206016546001600160a01b0316845290915290205460001914611b60573060009081526004602090815260408083206016546001600160a01b03168452909152902060001990555b604080516002808252606082018352839260009291906020830190803683370190505090503081600081518110611b9957611b99612417565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1691906123fa565b81600181518110611c2957611c29612417565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790611c6f90859060009086903090429060040161242d565b600060405180830381600087803b158015611c8957600080fd5b505af1158015611c9d573d6000803e3d6000fd5b505050506000471115611ce75760195460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611ce4573d6000803e3d6000fd5b50505b50505b50601a805460ff19169055565b6001600160a01b038416600090815260016020526040812080548491908390611d219084906121de565b909155506000905082611d345783611d3f565b611d3f868686611dcc565b6001600160a01b038616600090815260016020526040812080549293508392909190611d6c9084906121f1565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db891815260200190565b60405180910390a350600195945050505050565b60185460009081906001600160a01b0390811690861603611df4575060135461ffff16611e2e565b6018546001600160a01b0390811690851603611e1d575060135462010000900461ffff16611e2e565b50601354640100000000900461ffff165b6015546000906601000000000000900461ffff16611e4c838661222f565b611e569190612246565b9050600042601054611e68919061249e565b1315611eed57600f546001600160a01b031660009081526001602052604081208054869290611e989084906121f1565b9091555050600f546040518581526001600160a01b03918216918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3600a925050506109d5565b3060009081526001602052604081208054839290611f0c9084906121f1565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611f5b81856121de565b925050506109d5565b600060208083528351808285015260005b81811015611f9157858101830151858201604001528201611f75565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115a057600080fd5b60008060408385031215611fda57600080fd5b8235611fe581611fb2565b946020939093013593505050565b60008060006060848603121561200857600080fd5b833561201381611fb2565b9250602084013561202381611fb2565b929592945050506040919091013590565b803561ffff8116811461204657600080fd5b919050565b60008060006060848603121561206057600080fd5b61206984612034565b925061207760208501612034565b915061208560408501612034565b90509250925092565b600080600080600060a086880312156120a657600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000602082840312156120db57600080fd5b81356109d581611fb2565b6000602082840312156120f857600080fd5b6109d582612034565b80151581146115a057600080fd5b6000806040838503121561212257600080fd5b823561212d81611fb2565b9150602083013561213d81612101565b809150509250929050565b60006020828403121561215a57600080fd5b81356109d581612101565b6000806040838503121561217857600080fd5b823561218381611fb2565b9150602083013561213d81611fb2565b6000806000606084860312156121a857600080fd5b83356121b381611fb2565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561095c5761095c6121c8565b8082018082111561095c5761095c6121c8565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b808202811582820484141761095c5761095c6121c8565b60008261226357634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b80820182811260008312801582168215821617156122e5576122e56121c8565b505092915050565b600181815b8085111561232857816000190482111561230e5761230e6121c8565b8085161561231b57918102915b93841c93908002906122f2565b509250929050565b60008261233f5750600161095c565b8161234c5750600061095c565b8160018114612362576002811461236c57612388565b600191505061095c565b60ff84111561237d5761237d6121c8565b50506001821b61095c565b5060208310610133831016604e8410600b84101617156123ab575081810a61095c565b6123b583836122ed565b80600019048211156123c9576123c96121c8565b029392505050565b60006109d58383612330565b6000602082840312156123ef57600080fd5b81516109d581612101565b60006020828403121561240c57600080fd5b81516109d581611fb2565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561247d5784516001600160a01b031683529383019391830191600101612458565b50506001600160a01b03969096166060850152505050608001529392505050565b81810360008312801583831316838312821617156124be576124be6121c8565b509291505056fea26469706673582212202999795f8dcd3579aa773d86190f78d530182fc2dcf459093edda8e9d9ac0e8964736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102965760003560e01c806350a8e0161161015a578063ac4d12d3116100c1578063eafb5a3c1161007a578063eafb5a3c14610897578063eb50e70e146108b7578063ee5d9c2d146108d7578063f94aa1b4146108ec578063fdb78c0e1461090c578063ffecf5161461092b57600080fd5b8063ac4d12d3146107a5578063b1283c1c146107bb578063cab5ebea146107d1578063cf847706146107f1578063dd62ed3e14610831578063e5397ca61461087757600080fd5b80638a63bd9b116101135780638a63bd9b1461070e5780638a8c523c146107235780638da5cb5b146106f057806395d89b4114610738578063a457c2d714610765578063a9059cbb1461078557600080fd5b806350a8e016146106465780635fecd9261461066557806370a0823114610685578063715018a6146106bb57806380c581d1146106d0578063893d20e8146106f057600080fd5b80632b112e49116101fe57806339509351116101b7578063395093511461057c5780633bbac5791461059c578063452ed4f1146105cc57806348c670b9146105ec5780634ada218b1461060c5780634fb2e45d1461062657600080fd5b80632b112e49146104cd5780632e8fa821146104e2578063313ce567146104f857806332cde6641461051a57806334cd82601461053c578063384f36b61461055c57600080fd5b8063095ea7b311610250578063095ea7b3146103bd578063122fea3b146103ed57806318160ddd1461040d5780631b6afa2d1461042257806323b872dd1461048d57806323f25da8146104ad57600080fd5b8062ff2d44146102a257806303fd2a45146102cb5780630445b667146102f9578063069d955f1461030f57806306fdde03146103655780630758d9241461039d57600080fd5b3661029d57005b600080fd5b3480156102ae57600080fd5b506102b8601e5481565b6040519081526020015b60405180910390f35b3480156102d757600080fd5b506102e161dead81565b6040516001600160a01b0390911681526020016102c2565b34801561030557600080fd5b506102b8601b5481565b34801561031b57600080fd5b506013546103409061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016102c2565b34801561037157600080fd5b506040805180820190915260068152650c4c1614185960d21b60208201525b6040516102c29190611f64565b3480156103a957600080fd5b506016546102e1906001600160a01b031681565b3480156103c957600080fd5b506103dd6103d8366004611fc7565b61094b565b60405190151581526020016102c2565b3480156103f957600080fd5b506017546102e1906001600160a01b031681565b34801561041957600080fd5b506012546102b8565b34801561042e57600080fd5b5060155461045f9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016102c2565b34801561049957600080fd5b506103dd6104a8366004611ff3565b610962565b3480156104b957600080fd5b50600f546102e1906001600160a01b031681565b3480156104d957600080fd5b506102b86109dc565b3480156104ee57600080fd5b506102b8601c5481565b34801561050457600080fd5b5060115460405160ff90911681526020016102c2565b34801561052657600080fd5b5061053a61053536600461204b565b610a4a565b005b34801561054857600080fd5b5061053a61055736600461208e565b610b50565b34801561056857600080fd5b5061053a6105773660046120c9565b610bbc565b34801561058857600080fd5b506103dd610597366004611fc7565b610c08565b3480156105a857600080fd5b506103dd6105b73660046120c9565b60056020526000908152604090205460ff1681565b3480156105d857600080fd5b506018546102e1906001600160a01b031681565b3480156105f857600080fd5b5061053a6106073660046120e6565b610c44565b34801561061857600080fd5b50601f546103dd9060ff1681565b34801561063257600080fd5b5061053a6106413660046120c9565b610c93565b34801561065257600080fd5b50601f546103dd90610100900460ff1681565b34801561067157600080fd5b5061053a6106803660046120c9565b610da0565b34801561069157600080fd5b506102b86106a03660046120c9565b6001600160a01b031660009081526001602052604090205490565b3480156106c757600080fd5b5061053a610deb565b3480156106dc57600080fd5b5061053a6106eb36600461210f565b610e51565b3480156106fc57600080fd5b506000546001600160a01b03166102e1565b34801561071a57600080fd5b506103dd610f2c565b34801561072f57600080fd5b5061053a610f77565b34801561074457600080fd5b506040805180820190915260048152630486260b60e31b6020820152610390565b34801561077157600080fd5b506103dd610780366004611fc7565b611013565b34801561079157600080fd5b506103dd6107a0366004611fc7565b61104a565b3480156107b157600080fd5b506102b860105481565b3480156107c757600080fd5b506102b8601d5481565b3480156107dd57600080fd5b5061053a6107ec366004612148565b611061565b3480156107fd57600080fd5b506014546108169061ffff808216916201000090041682565b6040805161ffff9384168152929091166020830152016102c2565b34801561083d57600080fd5b506102b861084c366004612165565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561088357600080fd5b5061053a610892366004612193565b6110df565b3480156108a357600080fd5b5061053a6108b23660046120c9565b6111b7565b3480156108c357600080fd5b5061053a6108d23660046120c9565b6114f0565b3480156108e357600080fd5b5061053a61153c565b3480156108f857600080fd5b506019546102e1906001600160a01b031681565b34801561091857600080fd5b50601a546103dd90610100900460ff1681565b34801561093757600080fd5b5061053a6109463660046120c9565b6115a3565b60006109583384846115f1565b5060015b92915050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146109c7576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906109c19084906121de565b90915550505b6109d28484846116ea565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d549091610a38916121f1565b601254610a4591906121de565b905090565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b8152600401610a7490612204565b60405180910390fd5b60155461ffff90811690841611801590610aa7575060155461ffff62010000909104811690831611155b8015610ac5575060155461ffff640100000000909104811690821611155b610b115760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f7420657863656564206d6178696d756d73206f662035252e0000006044820152606401610a74565b6013805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610b7a5760405162461bcd60e51b8152600401610a7490612204565b8385601254610b89919061222f565b610b939190612246565b601b556012548290610ba690859061222f565b610bb09190612246565b601c55601d5550505050565b6000546001600160a01b03163314610be65760405162461bcd60e51b8152600401610a7490612204565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610958918590610c3f9086906121f1565b6115f1565b6000546001600160a01b03163314610c6e5760405162461bcd60e51b8152600401610a7490612204565b601480546201000061ffff90931692830263ffffffff19909116909217919091179055565b6000546001600160a01b03163314610cbd5760405162461bcd60e51b8152600401610a7490612204565b6001600160a01b038116610ce35760405162461bcd60e51b8152600401610a7490612268565b61deac196001600160a01b03821601610d0e5760405162461bcd60e51b8152600401610a7490612268565b600080546001600160a01b031681526001602052604090205415610d5557600080546001600160a01b03168082526001602052604090912054610d53919083906116ea565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610dca5760405162461bcd60e51b8152600401610a7490612204565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314610e155760405162461bcd60e51b8152600401610a7490612204565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e7b5760405162461bcd60e51b8152600401610a7490612204565b801515600003610ea757506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610f01576203f48060035442610ec191906121de565b11610f015760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b6044820152606401610a74565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555050565b600080546001600160a01b03163314610f575760405162461bcd60e51b8152600401610a7490612204565b601654610f719030906001600160a01b03166000196115f1565b50600190565b6000546001600160a01b03163314610fa15760405162461bcd60e51b8152600401610a7490612204565b601f5460ff1615610ff45760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a74565b600e5461100190426122c5565b601055601f805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610958918590610c3f9086906121de565b60006110573384846116ea565b5060019392505050565b6000546001600160a01b0316331461108b5760405162461bcd60e51b8152600401610a7490612204565b601a80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906110d490831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111095760405162461bcd60e51b8152600401610a7490612204565b600680546001600160a01b0319166001600160a01b03851690811790915563a9059cbb3361113884600a6123d1565b611142908661222f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b191906123dd565b50505050565b6000546001600160a01b031633146111e15760405162461bcd60e51b8152600401610a7490612204565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124a91906123fa565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bb91906123fa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132a91906123fa565b90506001600160a01b0381166114a357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139c91906123fa565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140d91906123fa565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561145a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147e91906123fa565b601880546001600160a01b0319166001600160a01b03929092169190911790556114bf565b601880546001600160a01b0319166001600160a01b0383161790555b601680546001600160a01b0319166001600160a01b0384169081179091556114eb9030906000196115f1565b505050565b6000546001600160a01b0316331461151a5760405162461bcd60e51b8152600401610a7490612204565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115665760405162461bcd60e51b8152600401610a7490612204565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156115a0573d6000803e3d6000fd5b50565b6000546001600160a01b031633146115cd5760405162461bcd60e51b8152600401610a7490612204565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6001600160a01b03831661163d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a74565b6001600160a01b0382166116895760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a74565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117505760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a74565b6001600160a01b0383166117b25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a74565b6001600160a01b03841660009081526005602052604090205460ff16156118135760405162461bcd60e51b815260206004820152601560248201527454686973206973206120626f74206164647265737360581b6044820152606401610a74565b600082116118755760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a74565b61187f8484611a13565b156118d657601f5460ff166118d65760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a74565b6001600160a01b03841660009081526007602052604090205460019060ff168061191857506001600160a01b03841660009081526007602052604090205460ff165b15611921575060005b6001600160a01b03841660009081526002602052604090205460ff16156119fe57601a5460ff1615801561195c5750601a54610100900460ff165b801561198157506001600160a01b0384166000908152600a602052604090205460ff16155b80156119a657506001600160a01b0385166000908152600a602052604090205460ff16155b156119fe5730600090815260016020526040902054601b5481108015906119db575042601d54601e546119d991906121f1565b105b156119fc57601c5481106119ee5750601c545b6119f781611ae7565b42601e555b505b611a0a85858584611cf7565b95945050505050565b600080546001600160a01b03848116911614801590611a4057506000546001600160a01b03838116911614155b8015611a5757506000546001600160a01b03163214155b8015611a7c57506001600160a01b0382166000908152600c602052604090205460ff16155b8015611aa157506001600160a01b0383166000908152600c602052604090205460ff16155b8015611ab857506001600160a01b03821661dead14155b8015611acc57506001600160a01b03821615155b80156109d557506001600160a01b0383163014159392505050565b601a805460ff1916600117905560145461ffff620100009091041615611cea573060009081526004602090815260408083206016546001600160a01b0316845290915290205460001914611b60573060009081526004602090815260408083206016546001600160a01b03168452909152902060001990555b604080516002808252606082018352839260009291906020830190803683370190505090503081600081518110611b9957611b99612417565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1691906123fa565b81600181518110611c2957611c29612417565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790611c6f90859060009086903090429060040161242d565b600060405180830381600087803b158015611c8957600080fd5b505af1158015611c9d573d6000803e3d6000fd5b505050506000471115611ce75760195460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611ce4573d6000803e3d6000fd5b50505b50505b50601a805460ff19169055565b6001600160a01b038416600090815260016020526040812080548491908390611d219084906121de565b909155506000905082611d345783611d3f565b611d3f868686611dcc565b6001600160a01b038616600090815260016020526040812080549293508392909190611d6c9084906121f1565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db891815260200190565b60405180910390a350600195945050505050565b60185460009081906001600160a01b0390811690861603611df4575060135461ffff16611e2e565b6018546001600160a01b0390811690851603611e1d575060135462010000900461ffff16611e2e565b50601354640100000000900461ffff165b6015546000906601000000000000900461ffff16611e4c838661222f565b611e569190612246565b9050600042601054611e68919061249e565b1315611eed57600f546001600160a01b031660009081526001602052604081208054869290611e989084906121f1565b9091555050600f546040518581526001600160a01b03918216918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3600a925050506109d5565b3060009081526001602052604081208054839290611f0c9084906121f1565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611f5b81856121de565b925050506109d5565b600060208083528351808285015260005b81811015611f9157858101830151858201604001528201611f75565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115a057600080fd5b60008060408385031215611fda57600080fd5b8235611fe581611fb2565b946020939093013593505050565b60008060006060848603121561200857600080fd5b833561201381611fb2565b9250602084013561202381611fb2565b929592945050506040919091013590565b803561ffff8116811461204657600080fd5b919050565b60008060006060848603121561206057600080fd5b61206984612034565b925061207760208501612034565b915061208560408501612034565b90509250925092565b600080600080600060a086880312156120a657600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000602082840312156120db57600080fd5b81356109d581611fb2565b6000602082840312156120f857600080fd5b6109d582612034565b80151581146115a057600080fd5b6000806040838503121561212257600080fd5b823561212d81611fb2565b9150602083013561213d81612101565b809150509250929050565b60006020828403121561215a57600080fd5b81356109d581612101565b6000806040838503121561217857600080fd5b823561218381611fb2565b9150602083013561213d81611fb2565b6000806000606084860312156121a857600080fd5b83356121b381611fb2565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561095c5761095c6121c8565b8082018082111561095c5761095c6121c8565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b808202811582820484141761095c5761095c6121c8565b60008261226357634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b80820182811260008312801582168215821617156122e5576122e56121c8565b505092915050565b600181815b8085111561232857816000190482111561230e5761230e6121c8565b8085161561231b57918102915b93841c93908002906122f2565b509250929050565b60008261233f5750600161095c565b8161234c5750600061095c565b8160018114612362576002811461236c57612388565b600191505061095c565b60ff84111561237d5761237d6121c8565b50506001821b61095c565b5060208310610133831016604e8410600b84101617156123ab575081810a61095c565b6123b583836122ed565b80600019048211156123c9576123c96121c8565b029392505050565b60006109d58383612330565b6000602082840312156123ef57600080fd5b81516109d581612101565b60006020828403121561240c57600080fd5b81516109d581611fb2565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561247d5784516001600160a01b031683529383019391830191600101612458565b50506001600160a01b03969096166060850152505050608001529392505050565b81810360008312801583831316838312821617156124be576124be6121c8565b509291505056fea26469706673582212202999795f8dcd3579aa773d86190f78d530182fc2dcf459093edda8e9d9ac0e8964736f6c63430008120033

Deployed Bytecode Sourcemap

6497:15574:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9039:23;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9039:23:0;;;;;;;;8486:73;;;;;;;;;;;;8517:42;8486:73;;;;;-1:-1:-1;;;;;360:32:1;;;342:51;;330:2;315:18;8486:73:0;196:203:1;8884:53:0;;;;;;;;;;;;;;;;7958:111;;;;;;;;;;-1:-1:-1;7958:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;610:6:1;643:15;;;625:34;;695:15;;;690:2;675:18;;668:43;747:15;;727:18;;;720:43;;;;588:2;573:18;7958:111:0;404:365:1;12874:80:0;;;;;;;;;;-1:-1:-1;12946:5:0;;;;;;;;;;;;-1:-1:-1;;;12946:5:0;;;;12874:80;;;;;;;:::i;8388:26::-;;;;;;;;;;-1:-1:-1;8388:26:0;;;;-1:-1:-1;;;;;8388:26:0;;;13487:161;;;;;;;;;;-1:-1:-1;13487:161:0;;;;;:::i;:::-;;:::i;:::-;;;2173:14:1;;2166:22;2148:41;;2136:2;2121:18;13487:161:0;2008:187:1;8421:28:0;;;;;;;;;;-1:-1:-1;8421:28:0;;;;-1:-1:-1;;;;;8421:28:0;;;12609:83;;;;;;;;;;-1:-1:-1;12682:7:0;;12609:83;;8190:189;;;;;;;;;;-1:-1:-1;8190:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2433:6:1;2466:15;;;2448:34;;2518:15;;;2513:2;2498:18;;2491:43;2570:15;;;2550:18;;;2543:43;;;;2622:15;;;2617:2;2602:18;;2595:43;2410:3;2395:19;8190:189:0;2200:444:1;14154:306:0;;;;;;;;;;-1:-1:-1;14154:306:0;;;;;:::i;:::-;;:::i;7329:27::-;;;;;;;;;;-1:-1:-1;7329:27:0;;;;-1:-1:-1;;;;;7329:27:0;;;16072:141;;;;;;;;;;;;;:::i;8944:50::-;;;;;;;;;;;;;;;;12698:80;;;;;;;;;;-1:-1:-1;12766:9:0;;12698:80;;12766:9;;;;3252:36:1;;3240:2;3225:18;12698:80:0;3110:184:1;16221:436:0;;;;;;;;;;-1:-1:-1;16221:436:0;;;;;:::i;:::-;;:::i;:::-;;16832:359;;;;;;;;;;-1:-1:-1;16832:359:0;;;;;:::i;:::-;;:::i;15947:117::-;;;;;;;;;;-1:-1:-1;15947:117:0;;;;;:::i;:::-;;:::i;14468:215::-;;;;;;;;;;-1:-1:-1;14468:215:0;;;;;:::i;:::-;;:::i;6842:35::-;;;;;;;;;;-1:-1:-1;6842:35:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8456:21;;;;;;;;;;-1:-1:-1;8456:21:0;;;;-1:-1:-1;;;;;8456:21:0;;;16669:155;;;;;;;;;;-1:-1:-1;16669:155:0;;;;;:::i;:::-;;:::i;9071:34::-;;;;;;;;;;-1:-1:-1;9071:34:0;;;;;;;;11938:497;;;;;;;;;;-1:-1:-1;11938:497:0;;;;;:::i;:::-;;:::i;9112:36::-;;;;;;;;;;-1:-1:-1;9112:36:0;;;;;;;;;;;20609:89;;;;;;;;;;-1:-1:-1;20609:89:0;;;;;:::i;:::-;;:::i;13187:117::-;;;;;;;;;;-1:-1:-1;13187:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;13280:16:0;13253:7;13280:16;;;:7;:16;;;;;;;13187:117;12443:158;;;;;;;;;;;;;:::i;15532:407::-;;;;;;;;;;-1:-1:-1;15532:407:0;;;;;:::i;:::-;;:::i;12960:80::-;;;;;;;;;;-1:-1:-1;13012:7:0;11916:6;-1:-1:-1;;;;;11916:6:0;12960:80;16072:141;13973:173;;;;;;;;;;;;;:::i;20283:225::-;;;;;;;;;;;;;:::i;12784:84::-;;;;;;;;;;-1:-1:-1;12858:7:0;;;;;;;;;;;;-1:-1:-1;;;12858:7:0;;;;12784:84;;14691:225;;;;;;;;;;-1:-1:-1;14691:225:0;;;;;:::i;:::-;;:::i;13312:167::-;;;;;;;;;;-1:-1:-1;13312:167:0;;;;;:::i;:::-;;:::i;7363:26::-;;;;;;;;;;;;;;;;9001:31;;;;;;;;;;;;;;;;17340:165;;;;;;;;;;-1:-1:-1;17340:165:0;;;;;:::i;:::-;;:::i;8078:103::-;;;;;;;;;;-1:-1:-1;8078:103:0;;;;;;;;;;;;;;;;;;;5812:6:1;5845:15;;;5827:34;;5897:15;;;;5892:2;5877:18;;5870:43;5775:18;8078:103:0;5632:287:1;13046:133:0;;;;;;;;;;-1:-1:-1;13046:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13148:19:0;;;13130:7;13148:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13046:133;11337:188;;;;;;;;;;-1:-1:-1;11337:188:0;;;;;:::i;:::-;;:::i;14950:542::-;;;;;;;;;;-1:-1:-1;14950:542:0;;;;;:::i;:::-;;:::i;17199:133::-;;;;;;;;;;-1:-1:-1;17199:133:0;;;;;:::i;:::-;;:::i;20706:122::-;;;;;;;;;;;;;:::i;8656:146::-;;;;;;;;;;-1:-1:-1;8656:146:0;;;;-1:-1:-1;;;;;8656:146:0;;;8833:38;;;;;;;;;;-1:-1:-1;8833:38:0;;;;;;;;;;;20516:85;;;;;;;;;;-1:-1:-1;20516:85:0;;;;;:::i;:::-;;:::i;13487:161::-;13562:4;13579:39;1344:10;13602:7;13611:6;13579:8;:39::i;:::-;-1:-1:-1;13636:4:0;13487:161;;;;;:::o;14154:306::-;-1:-1:-1;;;;;14275:19:0;;14254:4;14275:19;;;:11;:19;;;;;;;;14295:10;14275:31;;;;;;;;-1:-1:-1;;14275:52:0;14271:126;;-1:-1:-1;;;;;14344:19:0;;;;;;:11;:19;;;;;;;;14364:10;14344:31;;;;;;;:41;;14379:6;;14344:19;:41;;14379:6;;14344:41;:::i;:::-;;;;-1:-1:-1;;14271:126:0;14416:36;14426:6;14434:9;14445:6;14416:9;:36::i;:::-;14409:43;;14154:306;;;;;;:::o;16072:141::-;13280:7;:16;;;;8517:42;16125:7;13280:16;;;;;16125:7;;16164:39;;;:::i;:::-;16153:7;;:51;;;;:::i;:::-;16145:60;;16072:141;:::o;16221:436::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;;;;;;;;;16338:10:::1;:22:::0;::::1;::::0;;::::1;16328:32:::0;;::::1;;::::0;::::1;::::0;:87:::1;;-1:-1:-1::0;16391:10:0::1;:24:::0;::::1;::::0;;;::::1;::::0;::::1;16381:34:::0;;::::1;;;16328:87;:150;;;;-1:-1:-1::0;16451:10:0::1;:27:::0;::::1;::::0;;;::::1;::::0;::::1;16436:42:::0;;::::1;;;16328:150;16320:209;;;::::0;-1:-1:-1;;;16320:209:0;;8132:2:1;16320:209:0::1;::::0;::::1;8114:21:1::0;8171:2;8151:18;;;8144:30;8210:31;8190:18;;;8183:59;8259:18;;16320:209:0::1;7930:353:1::0;16320:209:0::1;16540:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;16576:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;16614:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16221:436::o;16832:359::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;17059:16:::1;17039;17029:7;;:26;;;;:::i;:::-;17028:47;;;;:::i;:::-;17012:13;:63:::0;17100:7:::1;::::0;17127:13;;17100:23:::1;::::0;17110:13;;17100:23:::1;:::i;:::-;17099:41;;;;:::i;:::-;17086:10;:54:::0;17151:12:::1;:32:::0;-1:-1:-1;;;;16832:359:0:o;15947:117::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;16034:13:::1;:22:::0;;-1:-1:-1;;;;;;16034:22:0::1;-1:-1:-1::0;;;;;16034:22:0;;;::::1;::::0;;;::::1;::::0;;15947:117::o;14468:215::-;1344:10;14556:4;14605:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14605:34:0;;;;;;;;;;14556:4;;14573:80;;14596:7;;14605:47;;14642:10;;14605:47;:::i;:::-;14573:8;:80::i;16669:155::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;16746:7:::1;:33:::0;;16790:26;16746:33:::1;::::0;;::::1;16790:26:::0;;::::1;-1:-1:-1::0;;16790:26:0;;;;;;;;;::::1;::::0;;16669:155::o;11938:497::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12019:22:0;::::1;12011:96;;;;-1:-1:-1::0;;;12011:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;12126:16:0;::::1;::::0;12118:90:::1;;;;-1:-1:-1::0;;;12118:90:0::1;;;;;;;:::i;:::-;12252:1;12242:6:::0;;-1:-1:-1;;;;;12242:6:0::1;13280:16:::0;;:7;:16;;;;;;12232:21;12229:99:::1;;12280:6;::::0;;-1:-1:-1;;;;;12280:6:0::1;13280:16:::0;;;:7;:16;;;;;;;12270:46:::1;::::0;12280:6;12288:8;;12270:9:::1;:46::i;:::-;;12229:99;12348:6;:17:::0;;-1:-1:-1;;;;;;12348:17:0::1;-1:-1:-1::0;;;;;12348:17:0;::::1;::::0;;::::1;::::0;;12381:38:::1;::::0;12348:17;;;;12381:38:::1;::::0;12348:6;12381:38:::1;11938:497:::0;:::o;20609:89::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20674:10:0::1;20685:5;20674:10:::0;;;:5:::1;:10;::::0;;;;:16;;-1:-1:-1;;20674:16:0::1;::::0;;20609:89::o;12443:158::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;12535:1:::1;12518:19:::0;;-1:-1:-1;;;;;;12518:19:0::1;::::0;;12553:40:::1;::::0;12535:1;;12553:40:::1;::::0;12535:1;;12553:40:::1;12443:158::o:0;15532:407::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;15613:16;::::1;;15624:5;15613:16:::0;15609:323:::1;;-1:-1:-1::0;;;;;;15646:13:0::1;15662:5;15646:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;15646:21:0::1;::::0;;15532:407::o;15609:323::-:1;15704:17;::::0;:22;15700:136:::1;;15793:6;15773:17;;15755:15;:35;;;;:::i;:::-;:44;15747:73;;;::::0;-1:-1:-1;;;15747:73:0;;9315:2:1;15747:73:0::1;::::0;::::1;9297:21:1::0;9354:2;9334:18;;;9327:30;-1:-1:-1;;;9373:18:1;;;9366:46;9429:18;;15747:73:0::1;9113:340:1::0;15747:73:0::1;-1:-1:-1::0;;;;;15850:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;15850:20:0::1;15866:4;15850:20;::::0;;15905:15:::1;15885:17;:35:::0;15532:407;;:::o;13973:173::-;14037:4;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;14086:9:::1;::::0;14054:62:::1;::::0;14071:4:::1;::::0;-1:-1:-1;;;;;14086:9:0::1;-1:-1:-1::0;;14054:8:0::1;:62::i;:::-;-1:-1:-1::0;14134:4:0::1;13973:173:::0;:::o;20283:225::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;20345:14:::1;::::0;::::1;;20344:15;20336:52;;;::::0;-1:-1:-1;;;20336:52:0;;9660:2:1;20336:52:0::1;::::0;::::1;9642:21:1::0;9699:2;9679:18;;;9672:30;9738:26;9718:18;;;9711:54;9782:18;;20336:52:0::1;9458:348:1::0;20336:52:0::1;20436:9;::::0;20415:30:::1;::::0;20419:15:::1;20415:30;:::i;:::-;20399:15;:46:::0;20479:14:::1;:21:::0;;-1:-1:-1;;20479:21:0::1;20496:4;20479:21;::::0;;20283:225::o;14691:::-;1344:10;14784:4;14833:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14833:34:0;;;;;;;;;;14784:4;;14801:85;;14824:7;;14833:52;;14870:15;;14833:52;:::i;13312:167::-;13390:4;13407:42;1344:10;13431:9;13442:6;13407:9;:42::i;:::-;-1:-1:-1;13467:4:0;;13312:167;-1:-1:-1;;;13312:167:0:o;17340:165::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;17415:19:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;17415:30:0;;::::1;;::::0;;17461:36:::1;::::0;::::1;::::0;::::1;::::0;17437:8;2173:14:1;2166:22;2148:41;;2136:2;2121:18;;2008:187;17461:36:0::1;;;;;;;;17340:165:::0;:::o;11337:188::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;11436:5:::1;:23:::0;;-1:-1:-1;;;;;;11436:23:0::1;-1:-1:-1::0;;;;;11436:23:0;::::1;::::0;;::::1;::::0;;;11470:14:::1;11485:10;11503:13;11507:9:::0;11503:2:::1;:13;:::i;:::-;11496:20;::::0;:6;:20:::1;:::i;:::-;11470:47;::::0;-1:-1:-1;;;;;;11470:47:0::1;::::0;;;;;;-1:-1:-1;;;;;11598:32:1;;;11470:47:0::1;::::0;::::1;11580:51:1::0;11647:18;;;11640:34;11553:18;;11470:47:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11337:188:::0;;;:::o;14950:542::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;15021:20:::1;15054:9;15021:43;;15075:16;15105:10;-1:-1:-1::0;;;;;15105:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15094:40:0::1;;15143:4;15150:10;-1:-1:-1::0;;;;;15150:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15094:74;::::0;-1:-1:-1;;;;;;15094:74:0::1;::::0;;;;;;-1:-1:-1;;;;;12421:15:1;;;15094:74:0::1;::::0;::::1;12403:34:1::0;12473:15;;12453:18;;;12446:43;12338:18;;15094:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15075:93:::0;-1:-1:-1;;;;;;15183:22:0;::::1;15179:200;;15242:10;-1:-1:-1::0;;;;;15242:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15231:43:0::1;;15283:4;15290:10;-1:-1:-1::0;;;;;15290:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15231:77;::::0;-1:-1:-1;;;;;;15231:77:0::1;::::0;;;;;;-1:-1:-1;;;;;12421:15:1;;;15231:77:0::1;::::0;::::1;12403:34:1::0;12473:15;;12453:18;;;12446:43;12338:18;;15231:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15222:6;:86:::0;;-1:-1:-1;;;;;;15222:86:0::1;-1:-1:-1::0;;;;;15222:86:0;;;::::1;::::0;;;::::1;::::0;;15179:200:::1;;;15350:6;:17:::0;;-1:-1:-1;;;;;;15350:17:0::1;-1:-1:-1::0;;;;;15350:17:0;::::1;;::::0;;15179:200:::1;15389:9;:22:::0;;-1:-1:-1;;;;;;15389:22:0::1;-1:-1:-1::0;;;;;15389:22:0;::::1;::::0;;::::1;::::0;;;15422:62:::1;::::0;15439:4:::1;::::0;-1:-1:-1;;15422:8:0::1;:62::i;:::-;15010:482;;14950:542:::0;:::o;17199:133::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;17278:11:::1;:46:::0;;-1:-1:-1;;;;;;17278:46:0::1;-1:-1:-1::0;;;;;17278:46:0;;;::::1;::::0;;;::::1;::::0;;17199:133::o;20706:122::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;11889:7;11916:6;;20772:48:::1;::::0;-1:-1:-1;;;;;11916:6:0;;;;20798:21:::1;20772:48:::0;::::1;;;::::0;20798:21;;20772:48;11889:7;20772:48;20798:21;11916:6;20772:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20706:122::o:0;20516:85::-;9575:6;;-1:-1:-1;;;;;9575:6:0;1344:10;9575:22;9567:52;;;;-1:-1:-1;;;9567:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20578:10:0::1;;::::0;;;:5:::1;:10;::::0;;;;:15;;-1:-1:-1;;20578:15:0::1;20589:4;20578:15;::::0;;20516:85::o;13656:309::-;-1:-1:-1;;;;;13750:20:0;;13742:52;;;;-1:-1:-1;;;13742:52:0;;12702:2:1;13742:52:0;;;12684:21:1;12741:2;12721:18;;;12714:30;-1:-1:-1;;;12760:18:1;;;12753:49;12819:18;;13742:52:0;12500:343:1;13742:52:0;-1:-1:-1;;;;;13813:21:0;;13805:53;;;;-1:-1:-1;;;13805:53:0;;12702:2:1;13805:53:0;;;12684:21:1;12741:2;12721:18;;;12714:30;-1:-1:-1;;;12760:18:1;;;12753:49;12819:18;;13805:53:0;12500:343:1;13805:53:0;-1:-1:-1;;;;;13871:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13924:33;;160:25:1;;;13924:33:0;;133:18:1;13924:33:0;;;;;;;13656:309;;;:::o;17881:1474::-;17960:4;-1:-1:-1;;;;;17985:18:0;;17977:68;;;;-1:-1:-1;;;17977:68:0;;13050:2:1;17977:68:0;;;13032:21:1;13089:2;13069:18;;;13062:30;13128:34;13108:18;;;13101:62;-1:-1:-1;;;13179:18:1;;;13172:35;13224:19;;17977:68:0;12848:401:1;17977:68:0;-1:-1:-1;;;;;18064:16:0;;18056:64;;;;-1:-1:-1;;;18056:64:0;;13456:2:1;18056:64:0;;;13438:21:1;13495:2;13475:18;;;13468:30;13534:34;13514:18;;;13507:62;-1:-1:-1;;;13585:18:1;;;13578:33;13628:19;;18056:64:0;13254:399:1;18056:64:0;-1:-1:-1;;;;;18140:11:0;;;;;;:5;:11;;;;;;;;18139:12;18131:46;;;;-1:-1:-1;;;18131:46:0;;13860:2:1;18131:46:0;;;13842:21:1;13899:2;13879:18;;;13872:30;-1:-1:-1;;;13918:18:1;;;13911:51;13979:18;;18131:46:0;13658:345:1;18131:46:0;18205:1;18196:6;:10;18188:64;;;;-1:-1:-1;;;18188:64:0;;14210:2:1;18188:64:0;;;14192:21:1;14249:2;14229:18;;;14222:30;14288:34;14268:18;;;14261:62;-1:-1:-1;;;14339:18:1;;;14332:39;14388:19;;18188:64:0;14008:405:1;18188:64:0;18266:20;18277:4;18283:2;18266:10;:20::i;:::-;18263:152;;;18307:14;;;;18303:89;;18342:34;;-1:-1:-1;;;18342:34:0;;14620:2:1;18342:34:0;;;14602:21:1;14659:2;14639:18;;;14632:30;14698:26;14678:18;;;14671:54;14742:18;;18342:34:0;14418:348:1;18303:89:0;-1:-1:-1;;;;;18460:25:0;;18427:12;18460:25;;;:19;:25;;;;;;18442:4;;18460:25;;;:52;;-1:-1:-1;;;;;;18489:23:0;;;;;;:19;:23;;;;;;;;18460:52;18457:98;;;-1:-1:-1;18538:5:0;18457:98;-1:-1:-1;;;;;18601:11:0;;;;;;:7;:11;;;;;;;;18597:688;;;18699:6;;;;18698:7;:47;;;;-1:-1:-1;18726:19:0;;;;;;;18698:47;:89;;;;-1:-1:-1;;;;;;18767:20:0;;;;;;:16;:20;;;;;;;;18766:21;18698:89;:133;;;;-1:-1:-1;;;;;;18809:22:0;;;;;;:16;:22;;;;;;;;18808:23;18698:133;18694:574;;;18915:4;18866:28;13280:16;;;:7;:16;;;;;;18968:13;;18944:37;;;;;:82;;;19011:15;18996:12;;18985:8;;:23;;;;:::i;:::-;:41;18944:82;18940:313;;;19078:10;;19054:20;:34;19051:77;;-1:-1:-1;19115:10:0;;19051:77;19150:34;19163:20;19150:12;:34::i;:::-;19218:15;19207:8;:26;18940:313;18847:421;18694:574;19303:44;19321:4;19327:2;19331:6;19339:7;19303:17;:44::i;:::-;19296:51;17881:1474;-1:-1:-1;;;;;17881:1474:0:o;17513:360::-;17581:4;11916:6;;-1:-1:-1;;;;;17605:15:0;;;11916:6;;17605:15;;;;:45;;-1:-1:-1;11889:7:0;11916:6;-1:-1:-1;;;;;17637:13:0;;;11916:6;;17637:13;;17605:45;:82;;;;-1:-1:-1;11889:7:0;11916:6;-1:-1:-1;;;;;11916:6:0;17667:9;:20;;17605:82;:121;;;;-1:-1:-1;;;;;;17705:21:0;;;;;;:17;:21;;;;;;;;17704:22;17605:121;:162;;;;-1:-1:-1;;;;;;17744:23:0;;;;;;:17;:23;;;;;;;;17743:24;17605:162;:189;;;;-1:-1:-1;;;;;;17784:10:0;;8517:42;17784:10;;17605:189;:222;;;;-1:-1:-1;;;;;;17811:16:0;;;;17605:222;:260;;;;-1:-1:-1;;;;;;17844:21:0;;17860:4;17844:21;;17598:267;17513:360;-1:-1:-1;;;17513:360:0:o;19363:890::-;9469:6;:13;;-1:-1:-1;;9469:13:0;9478:4;9469:13;;;19450:7:::1;:13:::0;::::1;::::0;;;::::1;;19446:44:::0;19483:7:::1;19446:44;19525:4;19505:26;::::0;;;:11:::1;:26;::::0;;;;;;;19540:9:::1;::::0;-1:-1:-1;;;;;19540:9:0::1;19505:46:::0;;;;;;;;-1:-1:-1;;19505:67:0::1;19502:165;;19609:4;19589:26;::::0;;;:11:::1;:26;::::0;;;;;;;19624:9:::1;::::0;-1:-1:-1;;;;;19624:9:0::1;19589:46:::0;;;;;;;-1:-1:-1;;19589:66:0;;19502:165:::1;19765:16;::::0;;19779:1:::1;19765:16:::0;;;;;::::1;::::0;;19702:20;;19679::::1;::::0;19765:16;19779:1;19765:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19765:16:0::1;19741:40;;19810:4;19792;19797:1;19792:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19792:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;19836:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;19836:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;19792:7;;19836:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19826:4;19831:1;19826:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19826:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19865:9:::1;::::0;:191:::1;::::0;-1:-1:-1;;;19865:191:0;;:9;::::1;::::0;:60:::1;::::0;:191:::1;::::0;19940:12;;19865:9:::1;::::0;19983:4;;20010::::1;::::0;20030:15:::1;::::0;19865:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20105:1;20081:21;:25;20077:169;;;20179:11;:23:::0;:43:::1;::::0;20143:21:::1;::::0;-1:-1:-1;;;;;20179:23:0::1;::::0;:43;::::1;;;::::0;20143:21;;20123:17:::1;20179:43:::0;20123:17;20179:43;20143:21;20179:23;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20108:138;20077:169;19435:818;;9493:1;-1:-1:-1::0;9505:6:0;:14;;-1:-1:-1;;9505:14:0;;;19363:890::o;21720:346::-;-1:-1:-1;;;;;21837:13:0;;21820:4;21837:13;;;:7;:13;;;;;:23;;21854:6;;21837:13;21820:4;;21837:23;;21854:6;;21837:23;:::i;:::-;;;;-1:-1:-1;21871:22:0;;-1:-1:-1;21897:7:0;21896:48;;21938:6;21896:48;;;21908:27;21918:4;21924:2;21928:6;21908:9;:27::i;:::-;-1:-1:-1;;;;;21955:11:0;;;;;;:7;:11;;;;;:29;;21871:73;;-1:-1:-1;21871:73:0;;21955:11;;;:29;;21871:73;;21955:29;:::i;:::-;;;;;;;;22017:2;-1:-1:-1;;;;;22002:34:0;22011:4;-1:-1:-1;;;;;22002:34:0;;22021:14;22002:34;;;;160:25:1;;148:2;133:18;;14:177;22002:34:0;;;;;;;;-1:-1:-1;22054:4:0;;21720:346;-1:-1:-1;;;;;21720:346:0:o;20836:844::-;20976:6;;20915:7;;;;-1:-1:-1;;;;;20976:6:0;;;20968:14;;;;20964:224;;-1:-1:-1;21012:9:0;:16;;;20964:224;;;21056:6;;-1:-1:-1;;;;;21056:6:0;;;21050:12;;;;21046:142;;-1:-1:-1;21092:9:0;:17;;;;;;21046:142;;;-1:-1:-1;21155:9:0;:21;;;;;;21046:142;21242:10;:27;21200:17;;21242:27;;;;;21220:19;21229:10;21220:6;:19;:::i;:::-;:49;;;;:::i;:::-;21200:69;;21324:1;21306:15;21286;;:36;;;;:::i;:::-;21285:40;21282:391;;;21362:12;;-1:-1:-1;;;;;21362:12:0;21354:21;;;;:7;:21;;;;;:29;;21377:6;;21354:21;:29;;21377:6;;21354:29;:::i;:::-;;;;-1:-1:-1;;21418:12:0;;21403:36;;160:25:1;;;-1:-1:-1;;;;;21418:12:0;;;;21403:36;;;;;148:2:1;133:18;21403:36:0;;;;;;;21461:2;21454:9;;;;;;21282:391;21530:4;21514:22;;;;:7;:22;;;;;:35;;21540:9;;21514:22;:35;;21540:9;;21514:35;:::i;:::-;;;;-1:-1:-1;;21569:40:0;;160:25:1;;;21592:4:0;;-1:-1:-1;;;;;21569:40:0;;;;;148:2:1;133:18;21569:40:0;;;;;;;21631:18;21640:9;21631:6;:18;:::i;:::-;21624:25;;;;;;774:548:1;886:4;915:2;944;933:9;926:21;976:6;970:13;1019:6;1014:2;1003:9;999:18;992:34;1044:1;1054:140;1068:6;1065:1;1062:13;1054:140;;;1163:14;;;1159:23;;1153:30;1129:17;;;1148:2;1125:26;1118:66;1083:10;;1054:140;;;1058:3;1243:1;1238:2;1229:6;1218:9;1214:22;1210:31;1203:42;1313:2;1306;1302:7;1297:2;1289:6;1285:15;1281:29;1270:9;1266:45;1262:54;1254:62;;;;774:548;;;;:::o;1552:131::-;-1:-1:-1;;;;;1627:31:1;;1617:42;;1607:70;;1673:1;1670;1663:12;1688:315;1756:6;1764;1817:2;1805:9;1796:7;1792:23;1788:32;1785:52;;;1833:1;1830;1823:12;1785:52;1872:9;1859:23;1891:31;1916:5;1891:31;:::i;:::-;1941:5;1993:2;1978:18;;;;1965:32;;-1:-1:-1;;;1688:315:1:o;2649:456::-;2726:6;2734;2742;2795:2;2783:9;2774:7;2770:23;2766:32;2763:52;;;2811:1;2808;2801:12;2763:52;2850:9;2837:23;2869:31;2894:5;2869:31;:::i;:::-;2919:5;-1:-1:-1;2976:2:1;2961:18;;2948:32;2989:33;2948:32;2989:33;:::i;:::-;2649:456;;3041:7;;-1:-1:-1;;;3095:2:1;3080:18;;;;3067:32;;2649:456::o;3299:159::-;3366:20;;3426:6;3415:18;;3405:29;;3395:57;;3448:1;3445;3438:12;3395:57;3299:159;;;:::o;3463:328::-;3537:6;3545;3553;3606:2;3594:9;3585:7;3581:23;3577:32;3574:52;;;3622:1;3619;3612:12;3574:52;3645:28;3663:9;3645:28;:::i;:::-;3635:38;;3692:37;3725:2;3714:9;3710:18;3692:37;:::i;:::-;3682:47;;3748:37;3781:2;3770:9;3766:18;3748:37;:::i;:::-;3738:47;;3463:328;;;;;:::o;3796:454::-;3891:6;3899;3907;3915;3923;3976:3;3964:9;3955:7;3951:23;3947:33;3944:53;;;3993:1;3990;3983:12;3944:53;-1:-1:-1;;4016:23:1;;;4086:2;4071:18;;4058:32;;-1:-1:-1;4137:2:1;4122:18;;4109:32;;4188:2;4173:18;;4160:32;;-1:-1:-1;4239:3:1;4224:19;4211:33;;-1:-1:-1;3796:454:1;-1:-1:-1;3796:454:1:o;4255:247::-;4314:6;4367:2;4355:9;4346:7;4342:23;4338:32;4335:52;;;4383:1;4380;4373:12;4335:52;4422:9;4409:23;4441:31;4466:5;4441:31;:::i;4507:184::-;4565:6;4618:2;4606:9;4597:7;4593:23;4589:32;4586:52;;;4634:1;4631;4624:12;4586:52;4657:28;4675:9;4657:28;:::i;4696:118::-;4782:5;4775:13;4768:21;4761:5;4758:32;4748:60;;4804:1;4801;4794:12;4819:382;4884:6;4892;4945:2;4933:9;4924:7;4920:23;4916:32;4913:52;;;4961:1;4958;4951:12;4913:52;5000:9;4987:23;5019:31;5044:5;5019:31;:::i;:::-;5069:5;-1:-1:-1;5126:2:1;5111:18;;5098:32;5139:30;5098:32;5139:30;:::i;:::-;5188:7;5178:17;;;4819:382;;;;;:::o;5386:241::-;5442:6;5495:2;5483:9;5474:7;5470:23;5466:32;5463:52;;;5511:1;5508;5501:12;5463:52;5550:9;5537:23;5569:28;5591:5;5569:28;:::i;5924:388::-;5992:6;6000;6053:2;6041:9;6032:7;6028:23;6024:32;6021:52;;;6069:1;6066;6059:12;6021:52;6108:9;6095:23;6127:31;6152:5;6127:31;:::i;:::-;6177:5;-1:-1:-1;6234:2:1;6219:18;;6206:32;6247:33;6206:32;6247:33;:::i;6317:383::-;6394:6;6402;6410;6463:2;6451:9;6442:7;6438:23;6434:32;6431:52;;;6479:1;6476;6469:12;6431:52;6518:9;6505:23;6537:31;6562:5;6537:31;:::i;:::-;6587:5;6639:2;6624:18;;6611:32;;-1:-1:-1;6690:2:1;6675:18;;;6662:32;;6317:383;-1:-1:-1;;;6317:383:1:o;7189:127::-;7250:10;7245:3;7241:20;7238:1;7231:31;7281:4;7278:1;7271:15;7305:4;7302:1;7295:15;7321:128;7388:9;;;7409:11;;;7406:37;;;7423:18;;:::i;7454:125::-;7519:9;;;7540:10;;;7537:36;;;7553:18;;:::i;7584:341::-;7786:2;7768:21;;;7825:2;7805:18;;;7798:30;-1:-1:-1;;;7859:2:1;7844:18;;7837:47;7916:2;7901:18;;7584:341::o;8288:168::-;8361:9;;;8392;;8409:15;;;8403:22;;8389:37;8379:71;;8430:18;;:::i;8461:217::-;8501:1;8527;8517:132;;8571:10;8566:3;8562:20;8559:1;8552:31;8606:4;8603:1;8596:15;8634:4;8631:1;8624:15;8517:132;-1:-1:-1;8663:9:1;;8461:217::o;8683:425::-;8885:2;8867:21;;;8924:2;8904:18;;;8897:30;8963:34;8958:2;8943:18;;8936:62;9034:31;9029:2;9014:18;;9007:59;9098:3;9083:19;;8683:425::o;9811:216::-;9875:9;;;9903:11;;;9850:3;9933:9;;9961:10;;9957:19;;9986:10;;9978:19;;9954:44;9951:70;;;10001:18;;:::i;:::-;9951:70;;9811:216;;;;:::o;10032:422::-;10121:1;10164:5;10121:1;10178:270;10199:7;10189:8;10186:21;10178:270;;;10258:4;10254:1;10250:6;10246:17;10240:4;10237:27;10234:53;;;10267:18;;:::i;:::-;10317:7;10307:8;10303:22;10300:55;;;10337:16;;;;10300:55;10416:22;;;;10376:15;;;;10178:270;;;10182:3;10032:422;;;;;:::o;10459:806::-;10508:5;10538:8;10528:80;;-1:-1:-1;10579:1:1;10593:5;;10528:80;10627:4;10617:76;;-1:-1:-1;10664:1:1;10678:5;;10617:76;10709:4;10727:1;10722:59;;;;10795:1;10790:130;;;;10702:218;;10722:59;10752:1;10743:10;;10766:5;;;10790:130;10827:3;10817:8;10814:17;10811:43;;;10834:18;;:::i;:::-;-1:-1:-1;;10890:1:1;10876:16;;10905:5;;10702:218;;11004:2;10994:8;10991:16;10985:3;10979:4;10976:13;10972:36;10966:2;10956:8;10953:16;10948:2;10942:4;10939:12;10935:35;10932:77;10929:159;;;-1:-1:-1;11041:19:1;;;11073:5;;10929:159;11120:34;11145:8;11139:4;11120:34;:::i;:::-;11190:6;11186:1;11182:6;11178:19;11169:7;11166:32;11163:58;;;11201:18;;:::i;:::-;11239:20;;10459:806;-1:-1:-1;;;10459:806:1:o;11270:131::-;11330:5;11359:36;11386:8;11380:4;11359:36;:::i;11685:245::-;11752:6;11805:2;11793:9;11784:7;11780:23;11776:32;11773:52;;;11821:1;11818;11811:12;11773:52;11853:9;11847:16;11872:28;11894:5;11872:28;:::i;11935:251::-;12005:6;12058:2;12046:9;12037:7;12033:23;12029:32;12026:52;;;12074:1;12071;12064:12;12026:52;12106:9;12100:16;12125:31;12150:5;12125:31;:::i;14903:127::-;14964:10;14959:3;14955:20;14952:1;14945:31;14995:4;14992:1;14985:15;15019:4;15016:1;15009:15;15035:980;15297:4;15345:3;15334:9;15330:19;15376:6;15365:9;15358:25;15402:2;15440:6;15435:2;15424:9;15420:18;15413:34;15483:3;15478:2;15467:9;15463:18;15456:31;15507:6;15542;15536:13;15573:6;15565;15558:22;15611:3;15600:9;15596:19;15589:26;;15650:2;15642:6;15638:15;15624:29;;15671:1;15681:195;15695:6;15692:1;15689:13;15681:195;;;15760:13;;-1:-1:-1;;;;;15756:39:1;15744:52;;15851:15;;;;15816:12;;;;15792:1;15710:9;15681:195;;;-1:-1:-1;;;;;;;15932:32:1;;;;15927:2;15912:18;;15905:60;-1:-1:-1;;;15996:3:1;15981:19;15974:35;15893:3;15035:980;-1:-1:-1;;;15035:980:1:o;16020:200::-;16086:9;;;16059:4;16114:9;;16142:10;;16154:12;;;16138:29;16177:12;;;16169:21;;16135:56;16132:82;;;16194:18;;:::i;:::-;16132:82;16020:200;;;;:::o

Swarm Source

ipfs://2999795f8dcd3579aa773d86190f78d530182fc2dcf459093edda8e9d9ac0e89

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.