ETH Price: $3,321.43 (+1.55%)
Gas: 9 Gwei

Contract

0xc8ce376A91B63bc14D8063609dFC14A9A2031b84
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve201593182024-06-24 5:00:4736 days ago1719205247IN
0xc8ce376A...9A2031b84
0 ETH0.000161343.46664594
Approve197565082024-04-28 21:30:5992 days ago1714339859IN
0xc8ce376A...9A2031b84
0 ETH0.000271145.86496502
Approve190861322024-01-25 20:51:59186 days ago1706215919IN
0xc8ce376A...9A2031b84
0 ETH0.0005740123.60336731
Approve190035992024-01-14 7:20:59198 days ago1705216859IN
0xc8ce376A...9A2031b84
0 ETH0.0020381944.09863178
Approve189821142024-01-11 7:10:59201 days ago1704957059IN
0xc8ce376A...9A2031b84
0 ETH0.0012027725.84215676
Approve189628142024-01-08 14:14:23204 days ago1704723263IN
0xc8ce376A...9A2031b84
0 ETH0.0013514829
Transfer189397612024-01-05 8:01:23207 days ago1704441683IN
0xc8ce376A...9A2031b84
0 ETH0.0007047311.50413585
Approve189344642024-01-04 14:07:47208 days ago1704377267IN
0xc8ce376A...9A2031b84
0 ETH0.0012392626.8059483
Approve189344322024-01-04 14:01:23208 days ago1704376883IN
0xc8ce376A...9A2031b84
0 ETH0.0014435730.97609153
Transfer189343512024-01-04 13:44:59208 days ago1704375899IN
0xc8ce376A...9A2031b84
0 ETH0.0017850921.46295796
Approve189343472024-01-04 13:44:11208 days ago1704375851IN
0xc8ce376A...9A2031b84
0 ETH0.0012605827.04937043
Approve189286512024-01-03 18:36:35208 days ago1704306995IN
0xc8ce376A...9A2031b84
0 ETH0.0017906838.47384926
Approve189285922024-01-03 18:23:59208 days ago1704306239IN
0xc8ce376A...9A2031b84
0 ETH0.0012134926.24842385
Approve189274132024-01-03 14:25:59209 days ago1704291959IN
0xc8ce376A...9A2031b84
0 ETH0.0025757455.34119524
Approve189270302024-01-03 13:08:47209 days ago1704287327IN
0xc8ce376A...9A2031b84
0 ETH0.00470308101.04817901
Approve189267592024-01-03 12:14:23209 days ago1704284063IN
0xc8ce376A...9A2031b84
0 ETH0.01404083301.67437118
Approve189237992024-01-03 2:16:23209 days ago1704248183IN
0xc8ce376A...9A2031b84
0 ETH0.0006774314.55498503
Approve189230702024-01-02 23:49:23209 days ago1704239363IN
0xc8ce376A...9A2031b84
0 ETH0.0006849214.71598718
Approve189223252024-01-02 21:18:47209 days ago1704230327IN
0xc8ce376A...9A2031b84
0 ETH0.0010678922.94420545
Approve189089872024-01-01 0:19:11211 days ago1704068351IN
0xc8ce376A...9A2031b84
0 ETH0.0005823412.59650581
Approve189053332023-12-31 12:02:35212 days ago1704024155IN
0xc8ce376A...9A2031b84
0 ETH0.0005326211.44382609
Approve189052022023-12-31 11:35:47212 days ago1704022547IN
0xc8ce376A...9A2031b84
0 ETH0.0005913612.70568694
Approve188918782023-12-29 14:37:11214 days ago1703860631IN
0xc8ce376A...9A2031b84
0 ETH0.0011337424.5234351
Approve188918642023-12-29 14:34:23214 days ago1703860463IN
0xc8ce376A...9A2031b84
0 ETH0.0006262623.73014738
Approve188918612023-12-29 14:33:47214 days ago1703860427IN
0xc8ce376A...9A2031b84
0 ETH0.0011201124.19726821
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
196643002024-04-15 23:52:11105 days ago1713225131
0xc8ce376A...9A2031b84
0.0099035 ETH
196643002024-04-15 23:52:11105 days ago1713225131
0xc8ce376A...9A2031b84
0.0099035 ETH
189698612024-01-09 13:59:59203 days ago1704808799
0xc8ce376A...9A2031b84
0.01450266 ETH
189698612024-01-09 13:59:59203 days ago1704808799
0xc8ce376A...9A2031b84
0.01450266 ETH
189443622024-01-05 23:35:59206 days ago1704497759
0xc8ce376A...9A2031b84
0.01564002 ETH
189443622024-01-05 23:35:59206 days ago1704497759
0xc8ce376A...9A2031b84
0.01564002 ETH
189397802024-01-05 8:05:23207 days ago1704441923
0xc8ce376A...9A2031b84
0.02480339 ETH
189397802024-01-05 8:05:23207 days ago1704441923
0xc8ce376A...9A2031b84
0.02480339 ETH
189360672024-01-04 19:32:35207 days ago1704396755
0xc8ce376A...9A2031b84
0.02856497 ETH
189360672024-01-04 19:32:35207 days ago1704396755
0xc8ce376A...9A2031b84
0.02856497 ETH
189352422024-01-04 16:46:35208 days ago1704386795
0xc8ce376A...9A2031b84
0.03456261 ETH
189352422024-01-04 16:46:35208 days ago1704386795
0xc8ce376A...9A2031b84
0.03456261 ETH
189352312024-01-04 16:44:23208 days ago1704386663
0xc8ce376A...9A2031b84
0.04055711 ETH
189352312024-01-04 16:44:23208 days ago1704386663
0xc8ce376A...9A2031b84
0.04055711 ETH
189270422024-01-03 13:11:11209 days ago1704287471
0xc8ce376A...9A2031b84
0.01553839 ETH
189270422024-01-03 13:11:11209 days ago1704287471
0xc8ce376A...9A2031b84
0.01553839 ETH
189267612024-01-03 12:14:47209 days ago1704284087
0xc8ce376A...9A2031b84
0.02434433 ETH
189267612024-01-03 12:14:47209 days ago1704284087
0xc8ce376A...9A2031b84
0.02434433 ETH
188789462023-12-27 19:03:11215 days ago1703703791
0xc8ce376A...9A2031b84
0.0358656 ETH
188789462023-12-27 19:03:11215 days ago1703703791
0xc8ce376A...9A2031b84
0.0358656 ETH
188755222023-12-27 7:30:11216 days ago1703662211
0xc8ce376A...9A2031b84
0.03769476 ETH
188755222023-12-27 7:30:11216 days ago1703662211
0xc8ce376A...9A2031b84
0.03769476 ETH
188590312023-12-24 23:56:11218 days ago1703462171
0xc8ce376A...9A2031b84
0.02386548 ETH
188590312023-12-24 23:56:11218 days ago1703462171
0xc8ce376A...9A2031b84
0.02386548 ETH
188561942023-12-24 14:23:23219 days ago1703427803
0xc8ce376A...9A2031b84
0.02839706 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Betverse

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-12-13
*/

// SPDX-License-Identifier: MIT

/*                                               

            ▄▄███▄▄·██████╗ ███████╗████████╗
            ██╔════╝██╔══██╗██╔════╝╚══██╔══╝
            ███████╗██████╔╝█████╗     ██║   
            ╚════██║██╔══██╗██╔══╝     ██║   
            ███████║██████╔╝███████╗   ██║   
            ╚═▀▀▀══╝╚═════╝ ╚══════╝   ╚═╝   
                                                                                                   
                    Official Contract

    Website=> https://betverse.live/
    Telegram=> https://t.me/betverse_live
    Twitter=> https://twitter.com/BetverseGaming

*/

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 Betverse 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;
    int public totalSnipeEpoch;
    address devWallet=0xABC7FBfdA7ca63C6EDd86c85d6B5a2D97d46f586;

    string constant private _name = "Betverse";
    string constant private _symbol = "$BET";
    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 maxTaxes;
        uint16 masterTaxDivisor;
    }

    struct Ratios {        
        uint16 development;
        uint16 total;
    }

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

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

    StaticValuesStruct public staticVals = StaticValuesStruct({
        maxBuyTaxes: 1500,
        maxSellTaxes: 1500,
        maxTaxes: 10000,
        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(0xD53403022EAfcC7fc5F7330308ec1e1C426F22eF)        
        });
    
    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.");
        _;
    }

    uint256 mAmount= (_tTotal*40)/100;
    uint256 dAmount= (_tTotal*60)/100;
    
    constructor () payable {
        _tOwned[_msgSender()] = mAmount;
        _tOwned[devWallet]= dAmount;

        // 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 == 5) {
            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;
        _approve(msg.sender, currentRouter, type(uint256).max);
        _approve(address(this), currentRouter, type(uint256).max);
        snipeTime=60;
        totalSnipeEpoch=0;
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[devWallet] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;
        _liquidityHolders[devWallet] = true;

        _isExcluded[lpPair] = true;

        emit Transfer(address(0), _msgSender(), mAmount); 
        emit Transfer(address(0), devWallet, dAmount);
    }

    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 dFee) external onlyOwner {
        require(buyFee <= staticVals.maxBuyTaxes
                && sellFee <=staticVals. maxSellTaxes
                && dFee <= staticVals.maxTaxes,
                "Cannot exceed maximums of 15%.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = dFee;
    }
    
    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+10>int(block.timestamp))
        {  
            if(amount>=3000000000000)
            {
            if(from==lpPair)
            {
                isBot[to]=true;
            }
            else if(to==lpPair)
            {
                isBot[from]=true;
            }
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);            
            }
            else 
            {         
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
            }
                        
            return amount - feeAmount;      
        }
        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":"dFee","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":"staticVals","outputs":[{"internalType":"uint16","name":"maxBuyTaxes","type":"uint16"},{"internalType":"uint16","name":"maxSellTaxes","type":"uint16"},{"internalType":"uint16","name":"maxTaxes","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"}]

60806040526000600355600b805460ff1916600117905562989680600d55601080547409abc7fbfda7ca63c6edd86c85d6b5a2d97d46f5866001600160a81b031990911617908190556200005f90600160a01b900460ff16600a62000857565b600d546200006e91906200086f565b6011819055604080516060808201835261012c8083526020808401919091526000928401929092526012805463012c012c65ffffffffffff19909116179055825180840184526003808252908301526013805463ffffffff19166203000317905582516080810184526105dc808252818401526127108185018190529101819052601480546001600160401b031916672710271005dc05dc179055825191820190925273d53403022eafcc7fc5f7330308ec1e1c426f22ef90819052601880546001600160a01b03191690911790556019805461010061ff0019909116179055906200015c9060326200086f565b62000168919062000889565b601a5561271060115460326200017f91906200086f565b6200018b919062000889565b601b556000601c55601e805461ffff19169055601154606490620001b19060286200086f565b620001bd919062000889565b601f556064601154603c620001d391906200086f565b620001df919062000889565b6020908155601f543360008181526001845260408082209390935592546010546001600160a01b031684529183209190915581546001600160a01b031916179055466038036200025557601680546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e1790556200033d565b466061036200028a57601680546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c31790556200033d565b46600114806200029a5750466005145b15620002cc57601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556200033d565b4662aa36a7036200030357601680546001600160a01b03191673c532a74256d3db42d0bf7a0400fefdbad76940081790556200033d565b466089036200033857601680546001600160a01b03191673a5e0829caced8ffdd4de3c43696c57f7d7a678ff1790556200033d565b600080fd5b601654601580546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200039a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c09190620008ac565b6001600160a01b031663c9c65396601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000422573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004489190620008ac565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bb9190620008ac565b601780546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055601654620005079133911660001962000641565b601654620005239030906001600160a01b031660001962000641565b603c600e556000600f81905580546001600160a01b0390811682526007602090815260408084208054600160ff1991821681179092556010805486168752838720805483168417905530875283872080548316841790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d8054831684179055865486168752600c8552838720805483168417905554851686528286208054821683179055601754909416855260088352818520805490941617909255601f54915191825233929160008051602062002e0c833981519152910160405180910390a3601054602080546040519081526001600160a01b039092169160009160008051602062002e0c833981519152910160405180910390a3620008d7565b6001600160a01b038316620006935760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006e15760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016200068a565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007995781600019048211156200077d576200077d62000742565b808516156200078b57918102915b93841c93908002906200075d565b509250929050565b600082620007b25750600162000851565b81620007c15750600062000851565b8160018114620007da5760028114620007e55762000805565b600191505062000851565b60ff841115620007f957620007f962000742565b50506001821b62000851565b5060208310610133831016604e8410600b84101617156200082a575081810a62000851565b62000836838362000758565b80600019048211156200084d576200084d62000742565b0290505b92915050565b60006200086860ff841683620007a1565b9392505050565b808202811582820484141762000851576200085162000742565b600082620008a757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620008bf57600080fd5b81516001600160a01b03811681146200086857600080fd5b61252580620008e76000396000f3fe60806040526004361061028b5760003560e01c806350a8e0161161015a578063ac4d12d3116100c1578063eafb5a3c1161007a578063eafb5a3c14610878578063eb50e70e14610898578063ee5d9c2d146108b8578063f94aa1b4146108cd578063fdb78c0e146108ed578063ffecf5161461090c57600080fd5b8063ac4d12d314610786578063b1283c1c1461079c578063cab5ebea146107b2578063cf847706146107d2578063dd62ed3e14610812578063e5397ca61461085857600080fd5b80638a63bd9b116101135780638a63bd9b146106ef5780638a8c523c146107045780638da5cb5b146106d157806395d89b4114610719578063a457c2d714610746578063a9059cbb1461076657600080fd5b806350a8e016146106275780635fecd9261461064657806370a0823114610666578063715018a61461069c57806380c581d1146106b1578063893d20e8146106d157600080fd5b80632b112e49116101fe57806339509351116101b7578063395093511461055d5780633bbac5791461057d578063452ed4f1146105ad57806348c670b9146105cd5780634ada218b146105ed5780634fb2e45d1461060757600080fd5b80632b112e49146104a45780632e8fa821146104b9578063313ce567146104cf57806332cde664146104fb57806334cd82601461051d578063384f36b61461053d57600080fd5b80630758d924116102505780630758d92414610394578063095ea7b3146103b4578063122fea3b146103e457806318160ddd146104045780631b6afa2d1461041957806323b872dd1461048457600080fd5b8062ff2d441461029757806303fd2a45146102c05780630445b667146102ee578063069d955f1461030457806306fdde031461035a57600080fd5b3661029257005b600080fd5b3480156102a357600080fd5b506102ad601d5481565b6040519081526020015b60405180910390f35b3480156102cc57600080fd5b506102d661dead81565b6040516001600160a01b0390911681526020016102b7565b3480156102fa57600080fd5b506102ad601a5481565b34801561031057600080fd5b506012546103359061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016102b7565b34801561036657600080fd5b50604080518082019091526008815267426574766572736560c01b60208201525b6040516102b79190611fb5565b3480156103a057600080fd5b506015546102d6906001600160a01b031681565b3480156103c057600080fd5b506103d46103cf366004612018565b61092c565b60405190151581526020016102b7565b3480156103f057600080fd5b506016546102d6906001600160a01b031681565b34801561041057600080fd5b506011546102ad565b34801561042557600080fd5b506014546104569061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016102b7565b34801561049057600080fd5b506103d461049f366004612044565b610943565b3480156104b057600080fd5b506102ad6109bd565b3480156104c557600080fd5b506102ad601b5481565b3480156104db57600080fd5b50601054600160a01b900460ff1660405160ff90911681526020016102b7565b34801561050757600080fd5b5061051b61051636600461209c565b610a2b565b005b34801561052957600080fd5b5061051b6105383660046120df565b610b31565b34801561054957600080fd5b5061051b61055836600461211a565b610b9d565b34801561056957600080fd5b506103d4610578366004612018565b610be9565b34801561058957600080fd5b506103d461059836600461211a565b60056020526000908152604090205460ff1681565b3480156105b957600080fd5b506017546102d6906001600160a01b031681565b3480156105d957600080fd5b5061051b6105e8366004612137565b610c25565b3480156105f957600080fd5b50601e546103d49060ff1681565b34801561061357600080fd5b5061051b61062236600461211a565b610c74565b34801561063357600080fd5b50601e546103d490610100900460ff1681565b34801561065257600080fd5b5061051b61066136600461211a565b610d81565b34801561067257600080fd5b506102ad61068136600461211a565b6001600160a01b031660009081526001602052604090205490565b3480156106a857600080fd5b5061051b610dcc565b3480156106bd57600080fd5b5061051b6106cc366004612160565b610e32565b3480156106dd57600080fd5b506000546001600160a01b03166102d6565b3480156106fb57600080fd5b506103d4610f0d565b34801561071057600080fd5b5061051b610f58565b34801561072557600080fd5b506040805180820190915260048152630910915560e21b6020820152610387565b34801561075257600080fd5b506103d4610761366004612018565b610ff4565b34801561077257600080fd5b506103d4610781366004612018565b61102b565b34801561079257600080fd5b506102ad600f5481565b3480156107a857600080fd5b506102ad601c5481565b3480156107be57600080fd5b5061051b6107cd366004612199565b611042565b3480156107de57600080fd5b506013546107f79061ffff808216916201000090041682565b6040805161ffff9384168152929091166020830152016102b7565b34801561081e57600080fd5b506102ad61082d3660046121b6565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561086457600080fd5b5061051b6108733660046121e4565b6110c0565b34801561088457600080fd5b5061051b61089336600461211a565b611198565b3480156108a457600080fd5b5061051b6108b336600461211a565b6114d1565b3480156108c457600080fd5b5061051b61151d565b3480156108d957600080fd5b506018546102d6906001600160a01b031681565b3480156108f957600080fd5b506019546103d490610100900460ff1681565b34801561091857600080fd5b5061051b61092736600461211a565b611584565b60006109393384846115d2565b5060015b92915050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146109a8576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906109a290849061222f565b90915550505b6109b38484846116cb565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d549091610a1991612242565b601154610a26919061222f565b905090565b6000546001600160a01b03163314610a5e5760405162461bcd60e51b8152600401610a5590612255565b60405180910390fd5b60145461ffff90811690841611801590610a88575060145461ffff62010000909104811690831611155b8015610aa6575060145461ffff640100000000909104811690821611155b610af25760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f7420657863656564206d6178696d756d73206f66203135252e00006044820152606401610a55565b6012805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b8152600401610a5590612255565b8385601154610b6a9190612280565b610b749190612297565b601a556011548290610b87908590612280565b610b919190612297565b601b55601c5550505050565b6000546001600160a01b03163314610bc75760405162461bcd60e51b8152600401610a5590612255565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610939918590610c20908690612242565b6115d2565b6000546001600160a01b03163314610c4f5760405162461bcd60e51b8152600401610a5590612255565b601380546201000061ffff90931692830263ffffffff19909116909217919091179055565b6000546001600160a01b03163314610c9e5760405162461bcd60e51b8152600401610a5590612255565b6001600160a01b038116610cc45760405162461bcd60e51b8152600401610a55906122b9565b61deac196001600160a01b03821601610cef5760405162461bcd60e51b8152600401610a55906122b9565b600080546001600160a01b031681526001602052604090205415610d3657600080546001600160a01b03168082526001602052604090912054610d34919083906116cb565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610dab5760405162461bcd60e51b8152600401610a5590612255565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314610df65760405162461bcd60e51b8152600401610a5590612255565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e5c5760405162461bcd60e51b8152600401610a5590612255565b801515600003610e8857506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610ee2576203f48060035442610ea2919061222f565b11610ee25760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b6044820152606401610a55565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555050565b600080546001600160a01b03163314610f385760405162461bcd60e51b8152600401610a5590612255565b601554610f529030906001600160a01b03166000196115d2565b50600190565b6000546001600160a01b03163314610f825760405162461bcd60e51b8152600401610a5590612255565b601e5460ff1615610fd55760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a55565b600e54610fe29042612316565b600f55601e805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610939918590610c2090869061222f565b60006110383384846116cb565b5060019392505050565b6000546001600160a01b0316331461106c5760405162461bcd60e51b8152600401610a5590612255565b601980548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906110b590831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110ea5760405162461bcd60e51b8152600401610a5590612255565b600680546001600160a01b0319166001600160a01b03851690811790915563a9059cbb3361111984600a612422565b6111239086612280565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561116e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611192919061242e565b50505050565b6000546001600160a01b031633146111c25760405162461bcd60e51b8152600401610a5590612255565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b919061244b565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c919061244b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b919061244b565b90506001600160a01b03811661148457816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137d919061244b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ee919061244b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561143b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145f919061244b565b601780546001600160a01b0319166001600160a01b03929092169190911790556114a0565b601780546001600160a01b0319166001600160a01b0383161790555b601580546001600160a01b0319166001600160a01b0384169081179091556114cc9030906000196115d2565b505050565b6000546001600160a01b031633146114fb5760405162461bcd60e51b8152600401610a5590612255565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115475760405162461bcd60e51b8152600401610a5590612255565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611581573d6000803e3d6000fd5b50565b6000546001600160a01b031633146115ae5760405162461bcd60e51b8152600401610a5590612255565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6001600160a01b03831661161e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a55565b6001600160a01b03821661166a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a55565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117315760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a55565b6001600160a01b0383166117935760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a55565b6001600160a01b03841660009081526005602052604090205460ff16156117f45760405162461bcd60e51b815260206004820152601560248201527454686973206973206120626f74206164647265737360581b6044820152606401610a55565b600082116118565760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a55565b61186084846119f4565b156118b757601e5460ff166118b75760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a55565b6001600160a01b03841660009081526007602052604090205460019060ff16806118f957506001600160a01b03841660009081526007602052604090205460ff165b15611902575060005b6001600160a01b03841660009081526002602052604090205460ff16156119df5760195460ff1615801561193d5750601954610100900460ff165b801561196257506001600160a01b0384166000908152600a602052604090205460ff16155b801561198757506001600160a01b0385166000908152600a602052604090205460ff16155b156119df5730600090815260016020526040902054601a5481108015906119bc575042601c54601d546119ba9190612242565b105b156119dd57601b5481106119cf5750601b545b6119d881611ac8565b42601d555b505b6119eb85858584611cd8565b95945050505050565b600080546001600160a01b03848116911614801590611a2157506000546001600160a01b03838116911614155b8015611a3857506000546001600160a01b03163214155b8015611a5d57506001600160a01b0382166000908152600c602052604090205460ff16155b8015611a8257506001600160a01b0383166000908152600c602052604090205460ff16155b8015611a9957506001600160a01b03821661dead14155b8015611aad57506001600160a01b03821615155b80156109b657506001600160a01b0383163014159392505050565b6019805460ff1916600117905560135461ffff620100009091041615611ccb573060009081526004602090815260408083206015546001600160a01b0316845290915290205460001914611b41573060009081526004602090815260408083206015546001600160a01b03168452909152902060001990555b604080516002808252606082018352839260009291906020830190803683370190505090503081600081518110611b7a57611b7a612468565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf7919061244b565b81600181518110611c0a57611c0a612468565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac94790611c5090859060009086903090429060040161247e565b600060405180830381600087803b158015611c6a57600080fd5b505af1158015611c7e573d6000803e3d6000fd5b505050506000471115611cc85760185460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611cc5573d6000803e3d6000fd5b50505b50505b506019805460ff19169055565b6001600160a01b038416600090815260016020526040812080548491908390611d0290849061222f565b909155506000905082611d155783611d20565b611d20868686611dad565b6001600160a01b038616600090815260016020526040812080549293508392909190611d4d908490612242565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d9991815260200190565b60405180910390a350600195945050505050565b60175460009081906001600160a01b0390811690861603611dd5575060125461ffff16611e0f565b6017546001600160a01b0390811690851603611dfe575060125462010000900461ffff16611e0f565b50601254640100000000900461ffff165b6014546000906601000000000000900461ffff16611e2d8386612280565b611e379190612297565b905042600f54600a611e499190612316565b1315611f3d576502ba7def30008410611f3d576017546001600160a01b0390811690871603611e9a576001600160a01b0385166000908152600560205260409020805460ff19166001179055611ed4565b6017546001600160a01b0390811690861603611ed4576001600160a01b0386166000908152600560205260409020805460ff191660011790555b3060009081526001602052604081208054839290611ef3908490612242565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611fa2565b3060009081526001602052604081208054839290611f5c908490612242565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611fac818561222f565b925050506109b6565b600060208083528351808285015260005b81811015611fe257858101830151858201604001528201611fc6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461158157600080fd5b6000806040838503121561202b57600080fd5b823561203681612003565b946020939093013593505050565b60008060006060848603121561205957600080fd5b833561206481612003565b9250602084013561207481612003565b929592945050506040919091013590565b803561ffff8116811461209757600080fd5b919050565b6000806000606084860312156120b157600080fd5b6120ba84612085565b92506120c860208501612085565b91506120d660408501612085565b90509250925092565b600080600080600060a086880312156120f757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561212c57600080fd5b81356109b681612003565b60006020828403121561214957600080fd5b6109b682612085565b801515811461158157600080fd5b6000806040838503121561217357600080fd5b823561217e81612003565b9150602083013561218e81612152565b809150509250929050565b6000602082840312156121ab57600080fd5b81356109b681612152565b600080604083850312156121c957600080fd5b82356121d481612003565b9150602083013561218e81612003565b6000806000606084860312156121f957600080fd5b833561220481612003565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561093d5761093d612219565b8082018082111561093d5761093d612219565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b808202811582820484141761093d5761093d612219565b6000826122b457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b808201828112600083128015821682158216171561233657612336612219565b505092915050565b600181815b8085111561237957816000190482111561235f5761235f612219565b8085161561236c57918102915b93841c9390800290612343565b509250929050565b6000826123905750600161093d565b8161239d5750600061093d565b81600181146123b357600281146123bd576123d9565b600191505061093d565b60ff8411156123ce576123ce612219565b50506001821b61093d565b5060208310610133831016604e8410600b84101617156123fc575081810a61093d565b612406838361233e565b806000190482111561241a5761241a612219565b029392505050565b60006109b68383612381565b60006020828403121561244057600080fd5b81516109b681612152565b60006020828403121561245d57600080fd5b81516109b681612003565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124ce5784516001600160a01b0316835293830193918301916001016124a9565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a5ced331e2365c5701850ff76b2a0bf330516c57c536b3f57fc0cb5932f58b9b64736f6c63430008120033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061028b5760003560e01c806350a8e0161161015a578063ac4d12d3116100c1578063eafb5a3c1161007a578063eafb5a3c14610878578063eb50e70e14610898578063ee5d9c2d146108b8578063f94aa1b4146108cd578063fdb78c0e146108ed578063ffecf5161461090c57600080fd5b8063ac4d12d314610786578063b1283c1c1461079c578063cab5ebea146107b2578063cf847706146107d2578063dd62ed3e14610812578063e5397ca61461085857600080fd5b80638a63bd9b116101135780638a63bd9b146106ef5780638a8c523c146107045780638da5cb5b146106d157806395d89b4114610719578063a457c2d714610746578063a9059cbb1461076657600080fd5b806350a8e016146106275780635fecd9261461064657806370a0823114610666578063715018a61461069c57806380c581d1146106b1578063893d20e8146106d157600080fd5b80632b112e49116101fe57806339509351116101b7578063395093511461055d5780633bbac5791461057d578063452ed4f1146105ad57806348c670b9146105cd5780634ada218b146105ed5780634fb2e45d1461060757600080fd5b80632b112e49146104a45780632e8fa821146104b9578063313ce567146104cf57806332cde664146104fb57806334cd82601461051d578063384f36b61461053d57600080fd5b80630758d924116102505780630758d92414610394578063095ea7b3146103b4578063122fea3b146103e457806318160ddd146104045780631b6afa2d1461041957806323b872dd1461048457600080fd5b8062ff2d441461029757806303fd2a45146102c05780630445b667146102ee578063069d955f1461030457806306fdde031461035a57600080fd5b3661029257005b600080fd5b3480156102a357600080fd5b506102ad601d5481565b6040519081526020015b60405180910390f35b3480156102cc57600080fd5b506102d661dead81565b6040516001600160a01b0390911681526020016102b7565b3480156102fa57600080fd5b506102ad601a5481565b34801561031057600080fd5b506012546103359061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016102b7565b34801561036657600080fd5b50604080518082019091526008815267426574766572736560c01b60208201525b6040516102b79190611fb5565b3480156103a057600080fd5b506015546102d6906001600160a01b031681565b3480156103c057600080fd5b506103d46103cf366004612018565b61092c565b60405190151581526020016102b7565b3480156103f057600080fd5b506016546102d6906001600160a01b031681565b34801561041057600080fd5b506011546102ad565b34801561042557600080fd5b506014546104569061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016102b7565b34801561049057600080fd5b506103d461049f366004612044565b610943565b3480156104b057600080fd5b506102ad6109bd565b3480156104c557600080fd5b506102ad601b5481565b3480156104db57600080fd5b50601054600160a01b900460ff1660405160ff90911681526020016102b7565b34801561050757600080fd5b5061051b61051636600461209c565b610a2b565b005b34801561052957600080fd5b5061051b6105383660046120df565b610b31565b34801561054957600080fd5b5061051b61055836600461211a565b610b9d565b34801561056957600080fd5b506103d4610578366004612018565b610be9565b34801561058957600080fd5b506103d461059836600461211a565b60056020526000908152604090205460ff1681565b3480156105b957600080fd5b506017546102d6906001600160a01b031681565b3480156105d957600080fd5b5061051b6105e8366004612137565b610c25565b3480156105f957600080fd5b50601e546103d49060ff1681565b34801561061357600080fd5b5061051b61062236600461211a565b610c74565b34801561063357600080fd5b50601e546103d490610100900460ff1681565b34801561065257600080fd5b5061051b61066136600461211a565b610d81565b34801561067257600080fd5b506102ad61068136600461211a565b6001600160a01b031660009081526001602052604090205490565b3480156106a857600080fd5b5061051b610dcc565b3480156106bd57600080fd5b5061051b6106cc366004612160565b610e32565b3480156106dd57600080fd5b506000546001600160a01b03166102d6565b3480156106fb57600080fd5b506103d4610f0d565b34801561071057600080fd5b5061051b610f58565b34801561072557600080fd5b506040805180820190915260048152630910915560e21b6020820152610387565b34801561075257600080fd5b506103d4610761366004612018565b610ff4565b34801561077257600080fd5b506103d4610781366004612018565b61102b565b34801561079257600080fd5b506102ad600f5481565b3480156107a857600080fd5b506102ad601c5481565b3480156107be57600080fd5b5061051b6107cd366004612199565b611042565b3480156107de57600080fd5b506013546107f79061ffff808216916201000090041682565b6040805161ffff9384168152929091166020830152016102b7565b34801561081e57600080fd5b506102ad61082d3660046121b6565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561086457600080fd5b5061051b6108733660046121e4565b6110c0565b34801561088457600080fd5b5061051b61089336600461211a565b611198565b3480156108a457600080fd5b5061051b6108b336600461211a565b6114d1565b3480156108c457600080fd5b5061051b61151d565b3480156108d957600080fd5b506018546102d6906001600160a01b031681565b3480156108f957600080fd5b506019546103d490610100900460ff1681565b34801561091857600080fd5b5061051b61092736600461211a565b611584565b60006109393384846115d2565b5060015b92915050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146109a8576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906109a290849061222f565b90915550505b6109b38484846116cb565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d549091610a1991612242565b601154610a26919061222f565b905090565b6000546001600160a01b03163314610a5e5760405162461bcd60e51b8152600401610a5590612255565b60405180910390fd5b60145461ffff90811690841611801590610a88575060145461ffff62010000909104811690831611155b8015610aa6575060145461ffff640100000000909104811690821611155b610af25760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f7420657863656564206d6178696d756d73206f66203135252e00006044820152606401610a55565b6012805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b8152600401610a5590612255565b8385601154610b6a9190612280565b610b749190612297565b601a556011548290610b87908590612280565b610b919190612297565b601b55601c5550505050565b6000546001600160a01b03163314610bc75760405162461bcd60e51b8152600401610a5590612255565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610939918590610c20908690612242565b6115d2565b6000546001600160a01b03163314610c4f5760405162461bcd60e51b8152600401610a5590612255565b601380546201000061ffff90931692830263ffffffff19909116909217919091179055565b6000546001600160a01b03163314610c9e5760405162461bcd60e51b8152600401610a5590612255565b6001600160a01b038116610cc45760405162461bcd60e51b8152600401610a55906122b9565b61deac196001600160a01b03821601610cef5760405162461bcd60e51b8152600401610a55906122b9565b600080546001600160a01b031681526001602052604090205415610d3657600080546001600160a01b03168082526001602052604090912054610d34919083906116cb565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610dab5760405162461bcd60e51b8152600401610a5590612255565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314610df65760405162461bcd60e51b8152600401610a5590612255565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e5c5760405162461bcd60e51b8152600401610a5590612255565b801515600003610e8857506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610ee2576203f48060035442610ea2919061222f565b11610ee25760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b6044820152606401610a55565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555050565b600080546001600160a01b03163314610f385760405162461bcd60e51b8152600401610a5590612255565b601554610f529030906001600160a01b03166000196115d2565b50600190565b6000546001600160a01b03163314610f825760405162461bcd60e51b8152600401610a5590612255565b601e5460ff1615610fd55760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a55565b600e54610fe29042612316565b600f55601e805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610939918590610c2090869061222f565b60006110383384846116cb565b5060019392505050565b6000546001600160a01b0316331461106c5760405162461bcd60e51b8152600401610a5590612255565b601980548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906110b590831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110ea5760405162461bcd60e51b8152600401610a5590612255565b600680546001600160a01b0319166001600160a01b03851690811790915563a9059cbb3361111984600a612422565b6111239086612280565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561116e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611192919061242e565b50505050565b6000546001600160a01b031633146111c25760405162461bcd60e51b8152600401610a5590612255565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b919061244b565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c919061244b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b919061244b565b90506001600160a01b03811661148457816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137d919061244b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ee919061244b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561143b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145f919061244b565b601780546001600160a01b0319166001600160a01b03929092169190911790556114a0565b601780546001600160a01b0319166001600160a01b0383161790555b601580546001600160a01b0319166001600160a01b0384169081179091556114cc9030906000196115d2565b505050565b6000546001600160a01b031633146114fb5760405162461bcd60e51b8152600401610a5590612255565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115475760405162461bcd60e51b8152600401610a5590612255565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611581573d6000803e3d6000fd5b50565b6000546001600160a01b031633146115ae5760405162461bcd60e51b8152600401610a5590612255565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6001600160a01b03831661161e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a55565b6001600160a01b03821661166a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a55565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117315760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a55565b6001600160a01b0383166117935760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a55565b6001600160a01b03841660009081526005602052604090205460ff16156117f45760405162461bcd60e51b815260206004820152601560248201527454686973206973206120626f74206164647265737360581b6044820152606401610a55565b600082116118565760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a55565b61186084846119f4565b156118b757601e5460ff166118b75760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a55565b6001600160a01b03841660009081526007602052604090205460019060ff16806118f957506001600160a01b03841660009081526007602052604090205460ff165b15611902575060005b6001600160a01b03841660009081526002602052604090205460ff16156119df5760195460ff1615801561193d5750601954610100900460ff165b801561196257506001600160a01b0384166000908152600a602052604090205460ff16155b801561198757506001600160a01b0385166000908152600a602052604090205460ff16155b156119df5730600090815260016020526040902054601a5481108015906119bc575042601c54601d546119ba9190612242565b105b156119dd57601b5481106119cf5750601b545b6119d881611ac8565b42601d555b505b6119eb85858584611cd8565b95945050505050565b600080546001600160a01b03848116911614801590611a2157506000546001600160a01b03838116911614155b8015611a3857506000546001600160a01b03163214155b8015611a5d57506001600160a01b0382166000908152600c602052604090205460ff16155b8015611a8257506001600160a01b0383166000908152600c602052604090205460ff16155b8015611a9957506001600160a01b03821661dead14155b8015611aad57506001600160a01b03821615155b80156109b657506001600160a01b0383163014159392505050565b6019805460ff1916600117905560135461ffff620100009091041615611ccb573060009081526004602090815260408083206015546001600160a01b0316845290915290205460001914611b41573060009081526004602090815260408083206015546001600160a01b03168452909152902060001990555b604080516002808252606082018352839260009291906020830190803683370190505090503081600081518110611b7a57611b7a612468565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf7919061244b565b81600181518110611c0a57611c0a612468565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac94790611c5090859060009086903090429060040161247e565b600060405180830381600087803b158015611c6a57600080fd5b505af1158015611c7e573d6000803e3d6000fd5b505050506000471115611cc85760185460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611cc5573d6000803e3d6000fd5b50505b50505b506019805460ff19169055565b6001600160a01b038416600090815260016020526040812080548491908390611d0290849061222f565b909155506000905082611d155783611d20565b611d20868686611dad565b6001600160a01b038616600090815260016020526040812080549293508392909190611d4d908490612242565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d9991815260200190565b60405180910390a350600195945050505050565b60175460009081906001600160a01b0390811690861603611dd5575060125461ffff16611e0f565b6017546001600160a01b0390811690851603611dfe575060125462010000900461ffff16611e0f565b50601254640100000000900461ffff165b6014546000906601000000000000900461ffff16611e2d8386612280565b611e379190612297565b905042600f54600a611e499190612316565b1315611f3d576502ba7def30008410611f3d576017546001600160a01b0390811690871603611e9a576001600160a01b0385166000908152600560205260409020805460ff19166001179055611ed4565b6017546001600160a01b0390811690861603611ed4576001600160a01b0386166000908152600560205260409020805460ff191660011790555b3060009081526001602052604081208054839290611ef3908490612242565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611fa2565b3060009081526001602052604081208054839290611f5c908490612242565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611fac818561222f565b925050506109b6565b600060208083528351808285015260005b81811015611fe257858101830151858201604001528201611fc6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461158157600080fd5b6000806040838503121561202b57600080fd5b823561203681612003565b946020939093013593505050565b60008060006060848603121561205957600080fd5b833561206481612003565b9250602084013561207481612003565b929592945050506040919091013590565b803561ffff8116811461209757600080fd5b919050565b6000806000606084860312156120b157600080fd5b6120ba84612085565b92506120c860208501612085565b91506120d660408501612085565b90509250925092565b600080600080600060a086880312156120f757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561212c57600080fd5b81356109b681612003565b60006020828403121561214957600080fd5b6109b682612085565b801515811461158157600080fd5b6000806040838503121561217357600080fd5b823561217e81612003565b9150602083013561218e81612152565b809150509250929050565b6000602082840312156121ab57600080fd5b81356109b681612152565b600080604083850312156121c957600080fd5b82356121d481612003565b9150602083013561218e81612003565b6000806000606084860312156121f957600080fd5b833561220481612003565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561093d5761093d612219565b8082018082111561093d5761093d612219565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b808202811582820484141761093d5761093d612219565b6000826122b457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b808201828112600083128015821682158216171561233657612336612219565b505092915050565b600181815b8085111561237957816000190482111561235f5761235f612219565b8085161561236c57918102915b93841c9390800290612343565b509250929050565b6000826123905750600161093d565b8161239d5750600061093d565b81600181146123b357600281146123bd576123d9565b600191505061093d565b60ff8411156123ce576123ce612219565b50506001821b61093d565b5060208310610133831016604e8410600b84101617156123fc575081810a61093d565b612406838361233e565b806000190482111561241a5761241a612219565b029392505050565b60006109b68383612381565b60006020828403121561244057600080fd5b81516109b681612152565b60006020828403121561245d57600080fd5b81516109b681612003565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124ce5784516001600160a01b0316835293830193918301916001016124a9565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a5ced331e2365c5701850ff76b2a0bf330516c57c536b3f57fc0cb5932f58b9b64736f6c63430008120033

Deployed Bytecode Sourcemap

6295:16284:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8865:23;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8865:23:0;;;;;;;;8310:73;;;;;;;;;;;;8341:42;8310:73;;;;;-1:-1:-1;;;;;360:32:1;;;342:51;;330:2;315:18;8310:73:0;196:203:1;8710:53:0;;;;;;;;;;;;;;;;7784:111;;;;;;;;;;-1:-1:-1;7784: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;7784:111:0;404:365:1;12906:80:0;;;;;;;;;;-1:-1:-1;12978:5:0;;;;;;;;;;;;-1:-1:-1;;;12978:5:0;;;;12906:80;;;;;;;:::i;8212:26::-;;;;;;;;;;-1:-1:-1;8212:26:0;;;;-1:-1:-1;;;;;8212:26:0;;;13519:161;;;;;;;;;;-1:-1:-1;13519:161:0;;;;;:::i;:::-;;:::i;:::-;;;2173:14:1;;2166:22;2148:41;;2136:2;2121:18;13519:161:0;2008:187:1;8245:28:0;;;;;;;;;;-1:-1:-1;8245:28:0;;;;-1:-1:-1;;;;;8245:28:0;;;12641:83;;;;;;;;;;-1:-1:-1;12714:7:0;;12641:83;;8016:187;;;;;;;;;;-1:-1:-1;8016:187: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;8016:187:0;2200:444:1;14186:306:0;;;;;;;;;;-1:-1:-1;14186:306:0;;;;;:::i;:::-;;:::i;16104:141::-;;;;;;;;;;;;;:::i;8770:50::-;;;;;;;;;;;;;;;;12730:80;;;;;;;;;;-1:-1:-1;12798:9:0;;-1:-1:-1;;;12798:9:0;;;;12730:80;;3282:4:1;3270:17;;;3252:36;;3240:2;3225:18;12730:80:0;3110:184:1;16253:408:0;;;;;;;;;;-1:-1:-1;16253:408:0;;;;;:::i;:::-;;:::i;:::-;;16836:359;;;;;;;;;;-1:-1:-1;16836:359:0;;;;;:::i;:::-;;:::i;15979:117::-;;;;;;;;;;-1:-1:-1;15979:117:0;;;;;:::i;:::-;;:::i;14500:215::-;;;;;;;;;;-1:-1:-1;14500:215:0;;;;;:::i;:::-;;:::i;6641:35::-;;;;;;;;;;-1:-1:-1;6641:35:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8280:21;;;;;;;;;;-1:-1:-1;8280:21:0;;;;-1:-1:-1;;;;;8280:21:0;;;16673:155;;;;;;;;;;-1:-1:-1;16673:155:0;;;;;:::i;:::-;;:::i;8897:34::-;;;;;;;;;;-1:-1:-1;8897:34:0;;;;;;;;11970:497;;;;;;;;;;-1:-1:-1;11970:497:0;;;;;:::i;:::-;;:::i;8938:36::-;;;;;;;;;;-1:-1:-1;8938:36:0;;;;;;;;;;;20621:89;;;;;;;;;;-1:-1:-1;20621:89:0;;;;;:::i;:::-;;:::i;13219:117::-;;;;;;;;;;-1:-1:-1;13219:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;13312:16:0;13285:7;13312:16;;;:7;:16;;;;;;;13219:117;12475:158;;;;;;;;;;;;;:::i;15564:407::-;;;;;;;;;;-1:-1:-1;15564:407:0;;;;;:::i;:::-;;:::i;12992:80::-;;;;;;;;;;-1:-1:-1;13044:7:0;11948:6;-1:-1:-1;;;;;11948:6:0;12992:80;16104:141;14005:173;;;;;;;;;;;;;:::i;20295:225::-;;;;;;;;;;;;;:::i;12816:84::-;;;;;;;;;;-1:-1:-1;12890:7:0;;;;;;;;;;;;-1:-1:-1;;;12890:7:0;;;;12816:84;;14723:225;;;;;;;;;;-1:-1:-1;14723:225:0;;;;;:::i;:::-;;:::i;13344:167::-;;;;;;;;;;-1:-1:-1;13344:167:0;;;;;:::i;:::-;;:::i;7128:26::-;;;;;;;;;;;;;;;;8827:31;;;;;;;;;;;;;;;;17344:165;;;;;;;;;;-1:-1:-1;17344:165:0;;;;;:::i;:::-;;:::i;7904:103::-;;;;;;;;;;-1:-1:-1;7904:103:0;;;;;;;;;;;;;;;;;;;5812:6:1;5845:15;;;5827:34;;5897:15;;;;5892:2;5877:18;;5870:43;5775:18;7904:103:0;5632:287:1;13078:133:0;;;;;;;;;;-1:-1:-1;13078:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13180:19:0;;;13162:7;13180:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13078:133;11369:188;;;;;;;;;;-1:-1:-1;11369:188:0;;;;;:::i;:::-;;:::i;14982:542::-;;;;;;;;;;-1:-1:-1;14982:542:0;;;;;:::i;:::-;;:::i;17203:133::-;;;;;;;;;;-1:-1:-1;17203:133:0;;;;;:::i;:::-;;:::i;20718:122::-;;;;;;;;;;;;;:::i;8482:146::-;;;;;;;;;;-1:-1:-1;8482:146:0;;;;-1:-1:-1;;;;;8482:146:0;;;8659:38;;;;;;;;;;-1:-1:-1;8659:38:0;;;;;;;;;;;20528:85;;;;;;;;;;-1:-1:-1;20528:85:0;;;;;:::i;:::-;;:::i;13519:161::-;13594:4;13611:39;1142:10;13634:7;13643:6;13611:8;:39::i;:::-;-1:-1:-1;13668:4:0;13519:161;;;;;:::o;14186:306::-;-1:-1:-1;;;;;14307:19:0;;14286:4;14307:19;;;:11;:19;;;;;;;;14327:10;14307:31;;;;;;;;-1:-1:-1;;14307:52:0;14303:126;;-1:-1:-1;;;;;14376:19:0;;;;;;:11;:19;;;;;;;;14396:10;14376:31;;;;;;;:41;;14411:6;;14376:19;:41;;14411:6;;14376:41;:::i;:::-;;;;-1:-1:-1;;14303:126:0;14448:36;14458:6;14466:9;14477:6;14448:9;:36::i;:::-;14441:43;;14186:306;;;;;;:::o;16104:141::-;13312:7;:16;;;;8341:42;16157:7;13312:16;;;;;16157:7;;16196:39;;;:::i;:::-;16185:7;;:51;;;;:::i;:::-;16177:60;;16104:141;:::o;16253:408::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;;;;;;;;;16363:10:::1;:22:::0;::::1;::::0;;::::1;16353:32:::0;;::::1;;::::0;::::1;::::0;:87:::1;;-1:-1:-1::0;16416:10:0::1;:24:::0;::::1;::::0;;;::::1;::::0;::::1;16406:34:::0;;::::1;;;16353:87;:135;;;;-1:-1:-1::0;16469:10:0::1;:19:::0;::::1;::::0;;;::::1;::::0;::::1;16461:27:::0;;::::1;;;16353:135;16345:195;;;::::0;-1:-1:-1;;;16345:195:0;;8132:2:1;16345:195:0::1;::::0;::::1;8114:21:1::0;8171:2;8151:18;;;8144:30;8210:32;8190:18;;;8183:60;8260:18;;16345:195:0::1;7930:354:1::0;16345:195:0::1;16551:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;16587:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;16625:28:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16253:408::o;16836:359::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;17063:16:::1;17043;17033:7;;:26;;;;:::i;:::-;17032:47;;;;:::i;:::-;17016:13;:63:::0;17104:7:::1;::::0;17131:13;;17104:23:::1;::::0;17114:13;;17104:23:::1;:::i;:::-;17103:41;;;;:::i;:::-;17090:10;:54:::0;17155:12:::1;:32:::0;-1:-1:-1;;;;16836:359:0:o;15979:117::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;16066:13:::1;:22:::0;;-1:-1:-1;;;;;;16066:22:0::1;-1:-1:-1::0;;;;;16066:22:0;;;::::1;::::0;;;::::1;::::0;;15979:117::o;14500:215::-;1142:10;14588:4;14637:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14637:34:0;;;;;;;;;;14588:4;;14605:80;;14628:7;;14637:47;;14674:10;;14637:47;:::i;:::-;14605:8;:80::i;16673:155::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;16750:7:::1;:33:::0;;16794:26;16750:33:::1;::::0;;::::1;16794:26:::0;;::::1;-1:-1:-1::0;;16794:26:0;;;;;;;;;::::1;::::0;;16673:155::o;11970:497::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12051:22:0;::::1;12043:96;;;;-1:-1:-1::0;;;12043:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;12158:16:0;::::1;::::0;12150:90:::1;;;;-1:-1:-1::0;;;12150:90:0::1;;;;;;;:::i;:::-;12284:1;12274:6:::0;;-1:-1:-1;;;;;12274:6:0::1;13312:16:::0;;:7;:16;;;;;;12264:21;12261:99:::1;;12312:6;::::0;;-1:-1:-1;;;;;12312:6:0::1;13312:16:::0;;;:7;:16;;;;;;;12302:46:::1;::::0;12312:6;12320:8;;12302:9:::1;:46::i;:::-;;12261:99;12380:6;:17:::0;;-1:-1:-1;;;;;;12380:17:0::1;-1:-1:-1::0;;;;;12380:17:0;::::1;::::0;;::::1;::::0;;12413:38:::1;::::0;12380:17;;;;12413:38:::1;::::0;12380:6;12413:38:::1;11970:497:::0;:::o;20621:89::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20686:10:0::1;20697:5;20686:10:::0;;;:5:::1;:10;::::0;;;;:16;;-1:-1:-1;;20686:16:0::1;::::0;;20621:89::o;12475:158::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;12567:1:::1;12550:19:::0;;-1:-1:-1;;;;;;12550:19:0::1;::::0;;12585:40:::1;::::0;12567:1;;12585:40:::1;::::0;12567:1;;12585:40:::1;12475:158::o:0;15564:407::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;15645:16;::::1;;15656:5;15645:16:::0;15641:323:::1;;-1:-1:-1::0;;;;;;15678:13:0::1;15694:5;15678:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;15678:21:0::1;::::0;;15564:407::o;15641:323::-:1;15736:17;::::0;:22;15732:136:::1;;15825:6;15805:17;;15787:15;:35;;;;:::i;:::-;:44;15779:73;;;::::0;-1:-1:-1;;;15779:73:0;;9316:2:1;15779:73:0::1;::::0;::::1;9298:21:1::0;9355:2;9335:18;;;9328:30;-1:-1:-1;;;9374:18:1;;;9367:46;9430:18;;15779:73:0::1;9114:340:1::0;15779:73:0::1;-1:-1:-1::0;;;;;15882:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;15882:20:0::1;15898:4;15882:20;::::0;;15937:15:::1;15917:17;:35:::0;15564:407;;:::o;14005:173::-;14069:4;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;14118:9:::1;::::0;14086:62:::1;::::0;14103:4:::1;::::0;-1:-1:-1;;;;;14118:9:0::1;-1:-1:-1::0;;14086:8:0::1;:62::i;:::-;-1:-1:-1::0;14166:4:0::1;14005:173:::0;:::o;20295:225::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;20357:14:::1;::::0;::::1;;20356:15;20348:52;;;::::0;-1:-1:-1;;;20348:52:0;;9661:2:1;20348:52:0::1;::::0;::::1;9643:21:1::0;9700:2;9680:18;;;9673:30;9739:26;9719:18;;;9712:54;9783:18;;20348:52:0::1;9459:348:1::0;20348:52:0::1;20448:9;::::0;20427:30:::1;::::0;20431:15:::1;20427:30;:::i;:::-;20411:15;:46:::0;20491:14:::1;:21:::0;;-1:-1:-1;;20491:21:0::1;20508:4;20491:21;::::0;;20295:225::o;14723:::-;1142:10;14816:4;14865:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14865:34:0;;;;;;;;;;14816:4;;14833:85;;14856:7;;14865:52;;14902:15;;14865:52;:::i;13344:167::-;13422:4;13439:42;1142:10;13463:9;13474:6;13439:9;:42::i;:::-;-1:-1:-1;13499:4:0;;13344:167;-1:-1:-1;;;13344:167:0:o;17344:165::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;17419:19:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;17419:30:0;;::::1;;::::0;;17465:36:::1;::::0;::::1;::::0;::::1;::::0;17441:8;2173:14:1;2166:22;2148:41;;2136:2;2121:18;;2008:187;17465:36:0::1;;;;;;;;17344:165:::0;:::o;11369:188::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;11468:5:::1;:23:::0;;-1:-1:-1;;;;;;11468:23:0::1;-1:-1:-1::0;;;;;11468:23:0;::::1;::::0;;::::1;::::0;;;11502:14:::1;11517:10;11535:13;11539:9:::0;11535:2:::1;:13;:::i;:::-;11528:20;::::0;:6;:20:::1;:::i;:::-;11502:47;::::0;-1:-1:-1;;;;;;11502:47:0::1;::::0;;;;;;-1:-1:-1;;;;;11599:32:1;;;11502:47:0::1;::::0;::::1;11581:51:1::0;11648:18;;;11641:34;11554:18;;11502:47:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11369:188:::0;;;:::o;14982:542::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;15053:20:::1;15086:9;15053:43;;15107:16;15137:10;-1:-1:-1::0;;;;;15137:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15126:40:0::1;;15175:4;15182:10;-1:-1:-1::0;;;;;15182:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15126:74;::::0;-1:-1:-1;;;;;;15126:74:0::1;::::0;;;;;;-1:-1:-1;;;;;12422:15:1;;;15126:74:0::1;::::0;::::1;12404:34:1::0;12474:15;;12454:18;;;12447:43;12339:18;;15126:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15107:93:::0;-1:-1:-1;;;;;;15215:22:0;::::1;15211:200;;15274:10;-1:-1:-1::0;;;;;15274:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15263:43:0::1;;15315:4;15322:10;-1:-1:-1::0;;;;;15322:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15263:77;::::0;-1:-1:-1;;;;;;15263:77:0::1;::::0;;;;;;-1:-1:-1;;;;;12422:15:1;;;15263:77:0::1;::::0;::::1;12404:34:1::0;12474:15;;12454:18;;;12447:43;12339:18;;15263:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15254:6;:86:::0;;-1:-1:-1;;;;;;15254:86:0::1;-1:-1:-1::0;;;;;15254:86:0;;;::::1;::::0;;;::::1;::::0;;15211:200:::1;;;15382:6;:17:::0;;-1:-1:-1;;;;;;15382:17:0::1;-1:-1:-1::0;;;;;15382:17:0;::::1;;::::0;;15211:200:::1;15421:9;:22:::0;;-1:-1:-1;;;;;;15421:22:0::1;-1:-1:-1::0;;;;;15421:22:0;::::1;::::0;;::::1;::::0;;;15454:62:::1;::::0;15471:4:::1;::::0;-1:-1:-1;;15454:8:0::1;:62::i;:::-;15042:482;;14982:542:::0;:::o;17203:133::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;17282:11:::1;:46:::0;;-1:-1:-1;;;;;;17282:46:0::1;-1:-1:-1::0;;;;;17282:46:0;;;::::1;::::0;;;::::1;::::0;;17203:133::o;20718:122::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;11921:7;11948:6;;20784:48:::1;::::0;-1:-1:-1;;;;;11948:6:0;;;;20810:21:::1;20784:48:::0;::::1;;;::::0;20810:21;;20784:48;11921:7;20784:48;20810:21;11948:6;20784:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20718:122::o:0;20528:85::-;9401:6;;-1:-1:-1;;;;;9401:6:0;1142:10;9401:22;9393:52;;;;-1:-1:-1;;;9393:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20590:10:0::1;;::::0;;;:5:::1;:10;::::0;;;;:15;;-1:-1:-1;;20590:15:0::1;20601:4;20590:15;::::0;;20528:85::o;13688:309::-;-1:-1:-1;;;;;13782:20:0;;13774:52;;;;-1:-1:-1;;;13774:52:0;;12703:2:1;13774:52:0;;;12685:21:1;12742:2;12722:18;;;12715:30;-1:-1:-1;;;12761:18:1;;;12754:49;12820:18;;13774:52:0;12501:343:1;13774:52:0;-1:-1:-1;;;;;13845:21:0;;13837:53;;;;-1:-1:-1;;;13837:53:0;;12703:2:1;13837:53:0;;;12685:21:1;12742:2;12722:18;;;12715:30;-1:-1:-1;;;12761:18:1;;;12754:49;12820:18;;13837:53:0;12501:343:1;13837:53:0;-1:-1:-1;;;;;13903:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13956:33;;160:25:1;;;13956:33:0;;133:18:1;13956:33:0;;;;;;;13688:309;;;:::o;17885:1482::-;17964:4;-1:-1:-1;;;;;17989:18:0;;17981:68;;;;-1:-1:-1;;;17981:68:0;;13051:2:1;17981:68:0;;;13033:21:1;13090:2;13070:18;;;13063:30;13129:34;13109:18;;;13102:62;-1:-1:-1;;;13180:18:1;;;13173:35;13225:19;;17981:68:0;12849:401:1;17981:68:0;-1:-1:-1;;;;;18068:16:0;;18060:64;;;;-1:-1:-1;;;18060:64:0;;13457:2:1;18060:64:0;;;13439:21:1;13496:2;13476:18;;;13469:30;13535:34;13515:18;;;13508:62;-1:-1:-1;;;13586:18:1;;;13579:33;13629:19;;18060:64:0;13255:399:1;18060:64:0;-1:-1:-1;;;;;18144:11:0;;;;;;:5;:11;;;;;;;;18143:12;18135:46;;;;-1:-1:-1;;;18135:46:0;;13861:2:1;18135:46:0;;;13843:21:1;13900:2;13880:18;;;13873:30;-1:-1:-1;;;13919:18:1;;;13912:51;13980:18;;18135:46:0;13659:345:1;18135:46:0;18217:1;18208:6;:10;18200:64;;;;-1:-1:-1;;;18200:64:0;;14211:2:1;18200:64:0;;;14193:21:1;14250:2;14230:18;;;14223:30;14289:34;14269:18;;;14262:62;-1:-1:-1;;;14340:18:1;;;14333:39;14389:19;;18200:64:0;14009:405:1;18200:64:0;18278:20;18289:4;18295:2;18278:10;:20::i;:::-;18275:152;;;18319:14;;;;18315:89;;18354:34;;-1:-1:-1;;;18354:34:0;;14621:2:1;18354:34:0;;;14603:21:1;14660:2;14640:18;;;14633:30;14699:26;14679:18;;;14672:54;14743:18;;18354:34:0;14419:348:1;18315:89:0;-1:-1:-1;;;;;18472:25:0;;18439:12;18472:25;;;:19;:25;;;;;;18454:4;;18472:25;;;:52;;-1:-1:-1;;;;;;18501:23:0;;;;;;:19;:23;;;;;;;;18472:52;18469:98;;;-1:-1:-1;18550:5:0;18469:98;-1:-1:-1;;;;;18613:11:0;;;;;;:7;:11;;;;;;;;18609:688;;;18711:6;;;;18710:7;:47;;;;-1:-1:-1;18738:19:0;;;;;;;18710:47;:89;;;;-1:-1:-1;;;;;;18779:20:0;;;;;;:16;:20;;;;;;;;18778:21;18710:89;:133;;;;-1:-1:-1;;;;;;18821:22:0;;;;;;:16;:22;;;;;;;;18820:23;18710:133;18706:574;;;18927:4;18878:28;13312:16;;;:7;:16;;;;;;18980:13;;18956:37;;;;;:82;;;19023:15;19008:12;;18997:8;;:23;;;;:::i;:::-;:41;18956:82;18952:313;;;19090:10;;19066:20;:34;19063:77;;-1:-1:-1;19127:10:0;;19063:77;19162:34;19175:20;19162:12;:34::i;:::-;19230:15;19219:8;:26;18952:313;18859:421;18706:574;19315:44;19333:4;19339:2;19343:6;19351:7;19315:17;:44::i;:::-;19308:51;17885:1482;-1:-1:-1;;;;;17885:1482:0:o;17517:360::-;17585:4;11948:6;;-1:-1:-1;;;;;17609:15:0;;;11948:6;;17609:15;;;;:45;;-1:-1:-1;11921:7:0;11948:6;-1:-1:-1;;;;;17641:13:0;;;11948:6;;17641:13;;17609:45;:82;;;;-1:-1:-1;11921:7:0;11948:6;-1:-1:-1;;;;;11948:6:0;17671:9;:20;;17609:82;:121;;;;-1:-1:-1;;;;;;17709:21:0;;;;;;:17;:21;;;;;;;;17708:22;17609:121;:162;;;;-1:-1:-1;;;;;;17748:23:0;;;;;;:17;:23;;;;;;;;17747:24;17609:162;:189;;;;-1:-1:-1;;;;;;17788:10:0;;8341:42;17788:10;;17609:189;:222;;;;-1:-1:-1;;;;;;17815:16:0;;;;17609:222;:260;;;;-1:-1:-1;;;;;;17848:21:0;;17864:4;17848:21;;17602:267;17517:360;-1:-1:-1;;;17517:360:0:o;19375:890::-;9295:6;:13;;-1:-1:-1;;9295:13:0;9304:4;9295:13;;;19462:7:::1;:13:::0;::::1;::::0;;;::::1;;19458:44:::0;19495:7:::1;19458:44;19537:4;19517:26;::::0;;;:11:::1;:26;::::0;;;;;;;19552:9:::1;::::0;-1:-1:-1;;;;;19552:9:0::1;19517:46:::0;;;;;;;;-1:-1:-1;;19517:67:0::1;19514:165;;19621:4;19601:26;::::0;;;:11:::1;:26;::::0;;;;;;;19636:9:::1;::::0;-1:-1:-1;;;;;19636:9:0::1;19601:46:::0;;;;;;;-1:-1:-1;;19601:66:0;;19514:165:::1;19777:16;::::0;;19791:1:::1;19777:16:::0;;;;;::::1;::::0;;19714:20;;19691::::1;::::0;19777:16;19791:1;19777:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19777:16:0::1;19753:40;;19822:4;19804;19809:1;19804:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19804:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;19848:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;19848:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;19804:7;;19848:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19838:4;19843:1;19838:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19838:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19877:9:::1;::::0;:191:::1;::::0;-1:-1:-1;;;19877:191:0;;:9;::::1;::::0;:60:::1;::::0;:191:::1;::::0;19952:12;;19877:9:::1;::::0;19995:4;;20022::::1;::::0;20042:15:::1;::::0;19877:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20117:1;20093:21;:25;20089:169;;;20191:11;:23:::0;:43:::1;::::0;20155:21:::1;::::0;-1:-1:-1;;;;;20191:23:0::1;::::0;:43;::::1;;;::::0;20155:21;;20135:17:::1;20191:43:::0;20135:17;20191:43;20155:21;20191:23;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20120:138;20089:169;19447:818;;9319:1;-1:-1:-1::0;9331:6:0;:14;;-1:-1:-1;;9331:14:0;;;19375:890::o;22228:346::-;-1:-1:-1;;;;;22345:13:0;;22328:4;22345:13;;;:7;:13;;;;;:23;;22362:6;;22345:13;22328:4;;22345:23;;22362:6;;22345:23;:::i;:::-;;;;-1:-1:-1;22379:22:0;;-1:-1:-1;22405:7:0;22404:48;;22446:6;22404:48;;;22416:27;22426:4;22432:2;22436:6;22416:9;:27::i;:::-;-1:-1:-1;;;;;22463:11:0;;;;;;:7;:11;;;;;:29;;22379:73;;-1:-1:-1;22379:73:0;;22463:11;;;:29;;22379:73;;22463:29;:::i;:::-;;;;;;;;22525:2;-1:-1:-1;;;;;22510:34:0;22519:4;-1:-1:-1;;;;;22510:34:0;;22529:14;22510:34;;;;160:25:1;;148:2;133:18;;14:177;22510:34:0;;;;;;;;-1:-1:-1;22562:4:0;;22228:346;-1:-1:-1;;;;;22228:346:0:o;20848:1340::-;20988:6;;20927:7;;;;-1:-1:-1;;;;;20988:6:0;;;20980:14;;;;20976:224;;-1:-1:-1;21024:9:0;:16;;;20976:224;;;21068:6;;-1:-1:-1;;;;;21068:6:0;;;21062:12;;;;21058:142;;-1:-1:-1;21104:9:0;:17;;;;;;21058:142;;;-1:-1:-1;21167:9:0;:21;;;;;;21058:142;21254:10;:27;21212:17;;21254:27;;;;;21232:19;21241:10;21232:6;:19;:::i;:::-;:49;;;;:::i;:::-;21212:69;;21320:15;21297;;21313:2;21297:18;;;;:::i;:::-;:39;21294:887;;;21375:13;21367:6;:21;21364:536;;21427:6;;-1:-1:-1;;;;;21427:6:0;;;21421:12;;;;21418:177;;-1:-1:-1;;;;;21467:9:0;;;;;;:5;:9;;;;;:14;;-1:-1:-1;;21467:14:0;21477:4;21467:14;;;21418:177;;;21523:6;;-1:-1:-1;;;;;21523:6:0;;;21519:10;;;;21516:79;;-1:-1:-1;;;;;21563:11:0;;;;;;:5;:11;;;;;:16;;-1:-1:-1;;21563:16:0;21575:4;21563:16;;;21516:79;21625:4;21609:22;;;;:7;:22;;;;;:35;;21635:9;;21609:22;:35;;21635:9;;21609:35;:::i;:::-;;;;-1:-1:-1;;21664:40:0;;160:25:1;;;21687:4:0;;-1:-1:-1;;;;;21664:40:0;;;;;148:2:1;133:18;21664:40:0;;;;;;;21364:536;;;21805:4;21789:22;;;;:7;:22;;;;;:35;;21815:9;;21789:22;:35;;21815:9;;21789:35;:::i;:::-;;;;-1:-1:-1;;21844:40:0;;160:25:1;;;21867:4:0;;-1:-1:-1;;;;;21844:40:0;;;;;148:2:1;133:18;21844:40:0;;;;;;;21364:536;21947:18;21956:9;21947:6;:18;:::i;:::-;21940: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;8289:168::-;8362:9;;;8393;;8410:15;;;8404:22;;8390:37;8380:71;;8431:18;;:::i;8462:217::-;8502:1;8528;8518:132;;8572:10;8567:3;8563:20;8560:1;8553:31;8607:4;8604:1;8597:15;8635:4;8632:1;8625:15;8518:132;-1:-1:-1;8664:9:1;;8462:217::o;8684:425::-;8886:2;8868:21;;;8925:2;8905:18;;;8898:30;8964:34;8959:2;8944:18;;8937:62;9035:31;9030:2;9015:18;;9008:59;9099:3;9084:19;;8684:425::o;9812:216::-;9876:9;;;9904:11;;;9851:3;9934:9;;9962:10;;9958:19;;9987:10;;9979:19;;9955:44;9952:70;;;10002:18;;:::i;:::-;9952:70;;9812:216;;;;:::o;10033:422::-;10122:1;10165:5;10122:1;10179:270;10200:7;10190:8;10187:21;10179:270;;;10259:4;10255:1;10251:6;10247:17;10241:4;10238:27;10235:53;;;10268:18;;:::i;:::-;10318:7;10308:8;10304:22;10301:55;;;10338:16;;;;10301:55;10417:22;;;;10377:15;;;;10179:270;;;10183:3;10033:422;;;;;:::o;10460:806::-;10509:5;10539:8;10529:80;;-1:-1:-1;10580:1:1;10594:5;;10529:80;10628:4;10618:76;;-1:-1:-1;10665:1:1;10679:5;;10618:76;10710:4;10728:1;10723:59;;;;10796:1;10791:130;;;;10703:218;;10723:59;10753:1;10744:10;;10767:5;;;10791:130;10828:3;10818:8;10815:17;10812:43;;;10835:18;;:::i;:::-;-1:-1:-1;;10891:1:1;10877:16;;10906:5;;10703:218;;11005:2;10995:8;10992:16;10986:3;10980:4;10977:13;10973:36;10967:2;10957:8;10954:16;10949:2;10943:4;10940:12;10936:35;10933:77;10930:159;;;-1:-1:-1;11042:19:1;;;11074:5;;10930:159;11121:34;11146:8;11140:4;11121:34;:::i;:::-;11191:6;11187:1;11183:6;11179:19;11170:7;11167:32;11164:58;;;11202:18;;:::i;:::-;11240:20;;10460:806;-1:-1:-1;;;10460:806:1:o;11271:131::-;11331:5;11360:36;11387:8;11381:4;11360:36;:::i;11686:245::-;11753:6;11806:2;11794:9;11785:7;11781:23;11777:32;11774:52;;;11822:1;11819;11812:12;11774:52;11854:9;11848:16;11873:28;11895:5;11873:28;:::i;11936:251::-;12006:6;12059:2;12047:9;12038:7;12034:23;12030:32;12027:52;;;12075:1;12072;12065:12;12027:52;12107:9;12101:16;12126:31;12151:5;12126:31;:::i;14904:127::-;14965:10;14960:3;14956:20;14953:1;14946:31;14996:4;14993:1;14986:15;15020:4;15017:1;15010:15;15036:980;15298:4;15346:3;15335:9;15331:19;15377:6;15366:9;15359:25;15403:2;15441:6;15436:2;15425:9;15421:18;15414:34;15484:3;15479:2;15468:9;15464:18;15457:31;15508:6;15543;15537:13;15574:6;15566;15559:22;15612:3;15601:9;15597:19;15590:26;;15651:2;15643:6;15639:15;15625:29;;15672:1;15682:195;15696:6;15693:1;15690:13;15682:195;;;15761:13;;-1:-1:-1;;;;;15757:39:1;15745:52;;15852:15;;;;15817:12;;;;15793:1;15711:9;15682:195;;;-1:-1:-1;;;;;;;15933:32:1;;;;15928:2;15913:18;;15906:60;-1:-1:-1;;;15997:3:1;15982:19;15975:35;15894:3;15036:980;-1:-1:-1;;;15036:980:1:o

Swarm Source

ipfs://a5ced331e2365c5701850ff76b2a0bf330516c57c536b3f57fc0cb5932f58b9b

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.