ETH Price: $3,465.98 (+5.69%)
Gas: 6 Gwei

Contract

0x492e09F49FE8D2fafBCC584C2BeFa5fBC06f94a6
 

Overview

ETH Balance

1.162941331115240301 ETH

Eth Value

$4,030.73 (@ $3,465.98/ETH)

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve188698062023-12-26 12:15:23202 days ago1703592923IN
0x492e09F4...BC06f94a6
0 ETH0.000531821.90923771
Approve179980082023-08-26 9:40:59324 days ago1693042859IN
0x492e09F4...BC06f94a6
0 ETH0.0003327213.70759318
Approve175036082023-06-18 2:10:23393 days ago1687054223IN
0x492e09F4...BC06f94a6
0 ETH0.0006280313.50696733
Approve171387172023-04-27 16:31:47445 days ago1682613107IN
0x492e09F4...BC06f94a6
0 ETH0.0018745340.31508777
Approve170938802023-04-21 9:28:11451 days ago1682069291IN
0x492e09F4...BC06f94a6
0 ETH0.0019354541.57176225
Approve169461072023-03-31 8:50:23472 days ago1680252623IN
0x492e09F4...BC06f94a6
0 ETH0.0006406926.39549561
Approve168605412023-03-19 8:20:23484 days ago1679214023IN
0x492e09F4...BC06f94a6
0 ETH0.0006071613.05819628
Approve168329012023-03-15 11:08:23488 days ago1678878503IN
0x492e09F4...BC06f94a6
0 ETH0.0010902523.44781458
Approve168227612023-03-14 0:54:47489 days ago1678755287IN
0x492e09F4...BC06f94a6
0 ETH0.0004870920.06749672
Approve166249892023-02-14 5:44:47517 days ago1676353487IN
0x492e09F4...BC06f94a6
0 ETH0.0008028617.26703439
Approve165901082023-02-09 8:48:35522 days ago1675932515IN
0x492e09F4...BC06f94a6
0 ETH0.0005245421.61029432
Approve165866942023-02-08 21:23:11523 days ago1675891391IN
0x492e09F4...BC06f94a6
0 ETH0.0016634535.77550264
Approve165530642023-02-04 4:33:47527 days ago1675485227IN
0x492e09F4...BC06f94a6
0 ETH0.0009471320.36991491
Approve165405802023-02-02 10:40:11529 days ago1675334411IN
0x492e09F4...BC06f94a6
0 ETH0.0009267119.93067893
Transfer165387632023-02-02 4:33:35529 days ago1675312415IN
0x492e09F4...BC06f94a6
0 ETH0.0019658719.89547491
Approve165012272023-01-27 22:47:23535 days ago1674859643IN
0x492e09F4...BC06f94a6
0 ETH0.0009023919.40756499
Approve164830692023-01-25 9:54:11537 days ago1674640451IN
0x492e09F4...BC06f94a6
0 ETH0.0007087415.24278316
Approve164723742023-01-23 22:04:59539 days ago1674511499IN
0x492e09F4...BC06f94a6
0 ETH0.0008390818.04599229
Approve164678782023-01-23 7:02:11539 days ago1674457331IN
0x492e09F4...BC06f94a6
0 ETH0.0006441513.85359889
Approve164549112023-01-21 11:35:11541 days ago1674300911IN
0x492e09F4...BC06f94a6
0 ETH0.0007383715.87997788
Approve164544352023-01-21 9:59:47541 days ago1674295187IN
0x492e09F4...BC06f94a6
0 ETH0.0007336815.77915626
Approve164494922023-01-20 17:24:35542 days ago1674235475IN
0x492e09F4...BC06f94a6
0 ETH0.0016876736.24965885
Approve164439432023-01-19 22:50:47543 days ago1674168647IN
0x492e09F4...BC06f94a6
0 ETH0.0008560418.410796
Approve164399992023-01-19 9:36:35543 days ago1674120995IN
0x492e09F4...BC06f94a6
0 ETH0.0006468113.91087323
Approve164139932023-01-15 18:29:11547 days ago1673807351IN
0x492e09F4...BC06f94a6
0 ETH0.000901919.37196396
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
170828382023-04-19 19:52:59453 days ago1681933979
0x492e09F4...BC06f94a6
0.01221186 ETH
170828382023-04-19 19:52:59453 days ago1681933979
0x492e09F4...BC06f94a6
0.01465423 ETH
164400052023-01-19 9:37:47543 days ago1674121067
0x492e09F4...BC06f94a6
0.01250652 ETH
164400052023-01-19 9:37:47543 days ago1674121067
0x492e09F4...BC06f94a6
0.01500782 ETH
163932532023-01-12 20:58:23550 days ago1673557103
0x492e09F4...BC06f94a6
0.01277702 ETH
163932532023-01-12 20:58:23550 days ago1673557103
0x492e09F4...BC06f94a6
0.01533243 ETH
163876132023-01-12 2:03:35550 days ago1673489015
0x492e09F4...BC06f94a6
0.02440931 ETH
163876132023-01-12 2:03:35550 days ago1673489015
0x492e09F4...BC06f94a6
0.02929118 ETH
163868062023-01-11 23:21:23551 days ago1673479283
0x492e09F4...BC06f94a6
0.03766852 ETH
163868062023-01-11 23:21:23551 days ago1673479283
0x492e09F4...BC06f94a6
0.04520223 ETH
163861272023-01-11 21:04:11551 days ago1673471051
0x492e09F4...BC06f94a6
0.03549413 ETH
163861272023-01-11 21:04:11551 days ago1673471051
0x492e09F4...BC06f94a6
0.04259296 ETH
163854062023-01-11 18:39:11551 days ago1673462351
0x492e09F4...BC06f94a6
0.09514286 ETH
163854062023-01-11 18:39:11551 days ago1673462351
0x492e09F4...BC06f94a6
0.11417144 ETH
163845662023-01-11 15:48:11551 days ago1673452091
0x492e09F4...BC06f94a6
0.07043295 ETH
163845662023-01-11 15:48:11551 days ago1673452091
0x492e09F4...BC06f94a6
0.08451954 ETH
163834142023-01-11 11:56:35551 days ago1673438195
0x492e09F4...BC06f94a6
0.09069064 ETH
163834142023-01-11 11:56:35551 days ago1673438195
0x492e09F4...BC06f94a6
0.10882877 ETH
163818662023-01-11 6:45:59551 days ago1673419559
0x492e09F4...BC06f94a6
0.08817493 ETH
163818662023-01-11 6:45:59551 days ago1673419559
0x492e09F4...BC06f94a6
0.10580992 ETH
163810192023-01-11 3:55:59551 days ago1673409359
0x492e09F4...BC06f94a6
0.11701717 ETH
163810192023-01-11 3:55:59551 days ago1673409359
0x492e09F4...BC06f94a6
0.14042061 ETH
163801262023-01-11 0:56:35551 days ago1673398595
0x492e09F4...BC06f94a6
0.22870273 ETH
163801262023-01-11 0:56:35551 days ago1673398595
0x492e09F4...BC06f94a6
0.27444328 ETH
163791462023-01-10 21:37:59552 days ago1673386679
0x492e09F4...BC06f94a6
0.20257487 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FOMO

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED


pragma solidity ^0.8.14;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface InterfaceLP {
    function sync() external;
}

contract FOMO is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "FOMO";
    string constant _symbol = "FOMO";
    uint8 constant _decimals = 18; 

    uint256 _totalSupply = 1 * 10**12 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(1).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(1).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    bool public blacklistMode = true;
    mapping (address => bool) public isblacklisted;


    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 2;
    uint256 private devFee          = 0;
    uint256 private teamFee         = 0; 
    uint256 private burnFee         = 0;
    uint256 public totalFee        = teamFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellMultiplier = 2000;
    uint256 buyMultiplier = 2600;
    uint256 transferMultiplier = 100; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private teamFeeReceiver;
    address private burnFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 20 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[devFeeReceiver] = true;
            
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[devFeeReceiver] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x946E0f217349F53962b1a19A2B0369E29Ccdd3F9;
        devFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

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

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

        return _transferFrom(sender, recipient, amount);
    }

        function setMaxWallet(uint256 maxWallPercent) external onlyOwner {
         require(_maxWalletToken >= _totalSupply / 1000); //no less than .1%
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

    function setMaxTx(uint256 maxTXPercent) external onlyOwner {
         require(_maxTxAmount >= _totalSupply / 1000); //anti honeypot no less than .1%
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

    function setTxLimitAbsolute(uint256 amount) external onlyOwner {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
           }
        
                      
        if(blacklistMode){
            require(!isblacklisted[sender],"blacklisted");    
        }

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        // Checks max transaction limit
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
                    
         //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(burnTokens > 0){
            emit Transfer(sender, burnFeeReceiver, burnTokens);    
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner { // to marketing
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

     function manualSwap(uint256 amountPercentage) external onlyOwner {
        uint256 tokensInContract = balanceOf(address(this));
        uint256 tokenstosell = tokensInContract.mul(amountPercentage).div(100);
        _basicTransfer(address(this),msg.sender,tokenstosell);
    
    }

    function removeLimits() external onlyOwner { 
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

    function manualSend() external onlyOwner { 
        require(isTxLimitExempt[msg.sender]);
        payable(msg.sender).transfer(address(this).balance);

    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public returns (bool) {
        require(isTxLimitExempt[msg.sender]);
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function setPercents(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;    
          
    }

    function enableTrading() public onlyOwner {
        TradingOpen = true;
    }

        
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }

   
    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isblacklisted[addresses[i]] = status;
        }
    }
    
    function feeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setBuyTax(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/2, "Fees cannot be more than 50%"); //antihoneypot
    }

    function setTaxWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function setSwapandLiquify(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTarget(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }




event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"feeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isblacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapandLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimitAbsolute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326012600a620006e7565b620000439064e8d4a51000620006f8565b6005556200007d6064620000696001600554620004b760201b6200131b1790919060201c565b6200054e60201b6200139d1790919060201c565b600655620000a36064620000696001600554620004b760201b6200131b1790919060201c565b600755600a805460ff19166001908117909155600e8190556002600f8190556000601081905560118190556012819055918291620000e290836200071a565b620000ee91906200071a565b620000fa91906200071a565b6200010691906200071a565b601355606460148181556107d0601555610a286016556017829055601d819055601e919091556021805461ffff60a01b1916600160a81b1790556005546103e891620001539190620006f8565b6200015f919062000735565b6022553480156200016f57600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200022f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000255919062000758565b600280546001600160a01b0319166001600160a01b03928316179055601f546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da919062000758565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000352919062000758565b602180546001600160a01b039283166001600160a01b0319918216811783556020805483169091178155306000818152600983526040808220601f54881683528452808220600019905533808352600c8552818320805460ff199081166001908117909255601a80548b1686528486208054831684179055838652600d8852848620805483168417905598548a168552838520805482168317905588548a1685528385208054821683179055601980548b168652848620805483168417905595855283852080549091169091179055601880548716821790558354861673946e0f217349f53962b1a19a2b0369e29ccdd3f917909355855485168317909555601b8054851683179055600354601c80549095169616959095179092556005548285526008825283852081905592519283529092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620007db565b600082600003620004cb5750600062000548565b6000620004d98385620006f8565b905082620004e8858362000735565b14620005455760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200054583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200059860201b60201c565b60008183620005bc5760405162461bcd60e51b81526004016200053c919062000783565b506000620005cb848662000735565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200062b5781600019048211156200060f576200060f620005d4565b808516156200061d57918102915b93841c9390800290620005ef565b509250929050565b600082620006445750600162000548565b81620006535750600062000548565b81600181146200066c5760028114620006775762000697565b600191505062000548565b60ff8411156200068b576200068b620005d4565b50506001821b62000548565b5060208310610133831016604e8410600b8410161715620006bc575081810a62000548565b620006c88383620005ea565b8060001904821115620006df57620006df620005d4565b029392505050565b60006200054560ff84168362000633565b6000816000190483118215151615620007155762000715620005d4565b500290565b60008219821115620007305762000730620005d4565b500190565b6000826200075357634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200076b57600080fd5b81516001600160a01b03811681146200054557600080fd5b600060208083528351808285015260005b81811015620007b25785810183015185820160400152820162000794565b81811115620007c5576000604083870101525b50601f01601f1916929092016040019392505050565b6124fa80620007eb6000396000f3fe6080604052600436106102815760003560e01c80637d1db4a51161014f578063b70143c9116100c1578063ed6a59651161007a578063ed6a59651461078a578063efe8a45e146107ba578063f2fde38b146107da578063f4293890146107fa578063f84ba65d1461080f578063f887ea401461082f57600080fd5b8063b70143c9146106a4578063bc337182146106c4578063be7c81ad146106e4578063d405ae8f14610704578063d51ed1c814610724578063dd62ed3e1461074457600080fd5b80638da5cb5b116101135780638da5cb5b146106065780638e2eee841461062457806395d89b41146102b6578063a8aa1b3114610644578063a9059cbb14610664578063b2bdfa7b1461068457600080fd5b80637d1db4a51461056f57806383f9d9fa14610585578063893d20e8146105a5578063896648c1146105d75780638a8c523c146105f157600080fd5b80632b112e49116101f35780636ddd1713116101ac5780636ddd1713146104b857806370a08231146104d9578063715018a61461050f578063751039fc1461052457806377b54bad1461053957806378109e541461055957600080fd5b80632b112e4914610407578063313ce5671461041c5780634363c48614610438578063571ac8b0146104585780635d0044ca146104785780635e562f3b1461049857600080fd5b80631161ae39116102455780631161ae391461035c57806318160ddd1461037c5780631d0f2c99146103915780631da1db5e146103b15780631df4ccfc146103d157806323b872dd146103e757600080fd5b80630445b6671461028d57806306fdde03146102b657806308fd3d05146102e9578063095ea7b31461031a578063100882dc1461033a57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a360225481565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b506040805180820182526004815263464f4d4f60e01b602082015290516102ad9190611fab565b3480156102f557600080fd5b5060215461030a90600160a01b900460ff1681565b60405190151581526020016102ad565b34801561032657600080fd5b5061030a61033536600461201c565b61084f565b34801561034657600080fd5b5061035a610355366004612046565b6108bc565b005b34801561036857600080fd5b5061030a610377366004612089565b61098b565b34801561038857600080fd5b506005546102a3565b34801561039d57600080fd5b5061035a6103ac366004612089565b61099f565b3480156103bd57600080fd5b5061035a6103cc3660046120ab565b6109d4565b3480156103dd57600080fd5b506102a360135481565b3480156103f357600080fd5b5061030a6104023660046120c4565b610a52565b34801561041357600080fd5b506102a3610b14565b34801561042857600080fd5b50604051601281526020016102ad565b34801561044457600080fd5b5061035a61045336600461210e565b610b66565b34801561046457600080fd5b5061030a610473366004612145565b610bbb565b34801561048457600080fd5b5061035a6104933660046120ab565b610bc9565b3480156104a457600080fd5b5061035a6104b3366004612160565b610c32565b3480156104c457600080fd5b5060215461030a90600160a81b900460ff1681565b3480156104e557600080fd5b506102a36104f4366004612145565b6001600160a01b031660009081526008602052604090205490565b34801561051b57600080fd5b5061035a610c6f565b34801561053057600080fd5b5061035a610ce3565b34801561054557600080fd5b5061030a61055436600461201c565b610d1a565b34801561056557600080fd5b506102a360075481565b34801561057b57600080fd5b506102a360065481565b34801561059157600080fd5b5061035a6105a03660046120ab565b610e1a565b3480156105b157600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102ad565b3480156105e357600080fd5b50600a5461030a9060ff1681565b3480156105fd57600080fd5b5061035a610e65565b34801561061257600080fd5b506000546001600160a01b03166105bf565b34801561063057600080fd5b5061035a61063f36600461217d565b610ea4565b34801561065057600080fd5b506021546105bf906001600160a01b031681565b34801561067057600080fd5b5061030a61067f36600461201c565b610f43565b34801561069057600080fd5b506000546105bf906001600160a01b031681565b3480156106b057600080fd5b5061035a6106bf3660046120ab565b610f50565b3480156106d057600080fd5b5061035a6106df3660046120ab565b610fad565b3480156106f057600080fd5b5061035a6106ff366004612203565b611016565b34801561071057600080fd5b5061035a61071f366004612268565b61109f565b34801561073057600080fd5b506102a361073f3660046120ab565b6110eb565b34801561075057600080fd5b506102a361075f366004612286565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561079657600080fd5b5061030a6107a5366004612145565b600b6020526000908152604090205460ff1681565b3480156107c657600080fd5b5061035a6107d53660046122b9565b61112c565b3480156107e657600080fd5b5061035a6107f5366004612145565b611167565b34801561080657600080fd5b5061035a611251565b34801561081b57600080fd5b5061035a61082a36600461210e565b6112c6565b34801561083b57600080fd5b50601f546105bf906001600160a01b031681565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108aa9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108ef5760405162461bcd60e51b81526004016108e6906122e5565b60405180910390fd5b600e8690556011859055600f849055601083905560128290556109208261091a858188818c8c6113df565b906113df565b6013556014819055610933600282612330565b601354106109835760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530250000000060448201526064016108e6565b505050505050565b600082610997836110eb565b119392505050565b6000546001600160a01b031633146109c95760405162461bcd60e51b81526004016108e6906122e5565b601d91909155601e55565b6000546001600160a01b031633146109fe5760405162461bcd60e51b81526004016108e6906122e5565b60195447906001600160a01b03166108fc6064610a1b8585612352565b610a259190612330565b6040518115909202916000818181858888f19350505050158015610a4d573d6000803e3d6000fd5b505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610aff576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610ada91849061143e565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610b0a848484611478565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610b61906003546001600160a01b0316600090815260086020526040902054610b5b9060055490611840565b90611840565b905090565b6000546001600160a01b03163314610b905760405162461bcd60e51b81526004016108e6906122e5565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006108b68260001961084f565b6000546001600160a01b03163314610bf35760405162461bcd60e51b81526004016108e6906122e5565b6103e8600554610c039190612330565b6007541015610c1157600080fd5b6103e881600554610c229190612352565b610c2c9190612330565b60075550565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b81526004016108e6906122e5565b600a805460ff1916911515919091179055565b6000546001600160a01b03163314610c995760405162461bcd60e51b81526004016108e6906122e5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d0d5760405162461bcd60e51b81526004016108e6906122e5565b6005546007819055600655565b336000908152600d602052604081205460ff16610d3657600080fd5b81600003610da9576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da69190612371565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0d919061238a565b6000546001600160a01b03163314610e445760405162461bcd60e51b81526004016108e6906122e5565b6103e8600554610e549190612330565b811015610e6057600080fd5b600655565b6000546001600160a01b03163314610e8f5760405162461bcd60e51b81526004016108e6906122e5565b6021805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610ece5760405162461bcd60e51b81526004016108e6906122e5565b60005b82811015610f3d5781600b6000868685818110610ef057610ef06123a7565b9050602002016020810190610f059190612145565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610f36816123bd565b9050610ed1565b50505050565b6000610b0d338484611478565b6000546001600160a01b03163314610f7a5760405162461bcd60e51b81526004016108e6906122e5565b3060009081526008602052604081205490610fa06064610f9a848661131b565b9061139d565b9050610f3d303383611882565b6000546001600160a01b03163314610fd75760405162461bcd60e51b81526004016108e6906122e5565b6103e8600554610fe79190612330565b6006541015610ff557600080fd5b6103e8816005546110069190612352565b6110109190612330565b60065550565b6000546001600160a01b031633146110405760405162461bcd60e51b81526004016108e6906122e5565b601880546001600160a01b03199081166001600160a01b039788161790915560198054821695871695909517909455601a8054851693861693909317909255601c80548416918516919091179055601b80549092169216919091179055565b6000546001600160a01b031633146110c95760405162461bcd60e51b81526004016108e6906122e5565b60218054921515600160a81b0260ff60a81b1990931692909217909155602255565b60006108b66110f8610b14565b6021546001600160a01b0316600090815260086020526040902054610f9a90611125906002905b9061131b565b859061131b565b6000546001600160a01b031633146111565760405162461bcd60e51b81526004016108e6906122e5565b601591909155601691909155601755565b6000546001600160a01b031633146111915760405162461bcd60e51b81526004016108e6906122e5565b6001600160a01b0381166111f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461127b5760405162461bcd60e51b81526004016108e6906122e5565b336000908152600d602052604090205460ff1661129757600080fd5b60405133904780156108fc02916000818181858888f193505050501580156112c3573d6000803e3d6000fd5b50565b6000546001600160a01b031633146112f05760405162461bcd60e51b81526004016108e6906122e5565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b60008260000361132d575060006108b6565b60006113398385612352565b9050826113468583612330565b14610b0d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108e6565b6000610b0d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611956565b6000806113ec83856123d6565b905083811015610b0d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108e6565b600081848411156114625760405162461bcd60e51b81526004016108e69190611fab565b50600061146f84866123ee565b95945050505050565b60235460009060ff161561149857611491848484611882565b9050610b0d565b6001600160a01b03841660009081526001602052604090205460ff161580156114da57506001600160a01b03831660009081526001602052604090205460ff16155b1561152f57602154600160a01b900460ff1661152f5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108e6565b600a5460ff1615611591576001600160a01b0384166000908152600b602052604090205460ff16156115915760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b60448201526064016108e6565b6001600160a01b03841660009081526001602052604090205460ff161580156115c357506001600160a01b0383163014155b80156115dd57506003546001600160a01b03848116911614155b80156115f757506021546001600160a01b03848116911614155b80156116115750601c546001600160a01b03848116911614155b801561162b57506019546001600160a01b03848116911614155b801561165057506001600160a01b0383166000908152600d602052604090205460ff16155b156116f1576001600160a01b03831660009081526008602052604090205460075461167b84836123d6565b11156116ef5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016108e6565b505b6116fb8483611984565b6117036119f1565b1561171057611710611a47565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461176291849061143e565b6001600160a01b038516600090815260086020908152604080832093909355600c90529081205460ff16806117af57506001600160a01b0384166000908152600c602052604090205460ff165b6117c3576117be858486611e2e565b6117c5565b825b6001600160a01b0385166000908152600860205260409020549091506117eb90826113df565b6001600160a01b0380861660008181526008602052604090819020939093559151908716906000805160206124a58339815191529061182d9085815260200190565b60405180910390a3506001949350505050565b6000610b0d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061143e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546118d391849061143e565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461190290836113df565b6001600160a01b0380851660008181526008602052604090819020939093559151908616906000805160206124a5833981519152906119449086815260200190565b60405180910390a35060019392505050565b600081836119775760405162461bcd60e51b81526004016108e69190611fab565b50600061146f8486612330565b600654811115806119ad57506001600160a01b0382166000908152600d602052604090205460ff165b6119ed5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108e6565b5050565b6021546000906001600160a01b03163314801590611a12575060235460ff16155b8015611a275750602154600160a81b900460ff165b8015610b6157505060225430600090815260086020526040902054101590565b6023805460ff19166001179055601d54601e54600091611a669161098b565b611a7257600e54611a75565b60005b90506000611a996002610f9a601354610f9a8660225461131b90919063ffffffff16565b90506000611ab28260225461184090919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611aec57611aec6123a7565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611b1d57611b1d6123a7565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b81524792919091169063791ac94790611b67908690600090879030904290600401612405565b600060405180830381600087803b158015611b8157600080fd5b505af1158015611b95573d6000803e3d6000fd5b505050506000611bae824761184090919063ffffffff16565b90506000611bc9611bc088600261139d565b60135490611840565b90506000611bde6002610f9a8481878d61131b565b90506000611bfb83610f9a600f548761131b90919063ffffffff16565b90506000611c1884610f9a6011548861131b90919063ffffffff16565b90506000611c3585610f9a6010548961131b90919063ffffffff16565b6019546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611c87576040519150601f19603f3d011682016040523d82523d6000602084013e611c8c565b606091505b5050601a546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611cdc576040519150601f19603f3d011682016040523d82523d6000602084013e611ce1565b606091505b5050601b546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611d31576040519150601f19603f3d011682016040523d82523d6000602084013e611d36565b606091505b5060009250508b159050611e1657601f5460185460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611db4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611dd99190612476565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601754602154600091906001600160a01b0390811690841603611e545750601554611e6f565b6021546001600160a01b0390811690861603611e6f57506016545b6000611e9c6014546064611e839190612352565b610f9a8461111f6013548a61131b90919063ffffffff16565b90506000611ebb601354610f9a6012548561131b90919063ffffffff16565b90506000611ec98383611840565b30600090815260086020526040902054909150611ee690826113df565b3060009081526008602052604080822092909255601c546001600160a01b031681522054611f1490836113df565b601c546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b16916000805160206124a5833981519152910160405180910390a38115611f9557601c546040518381526001600160a01b03918216918a16906000805160206124a58339815191529060200160405180910390a35b611f9f8784611840565b98975050505050505050565b600060208083528351808285015260005b81811015611fd857858101830151858201604001528201611fbc565b81811115611fea576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461201757600080fd5b919050565b6000806040838503121561202f57600080fd5b61203883612000565b946020939093013593505050565b60008060008060008060c0878903121561205f57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561209c57600080fd5b50508035926020909101359150565b6000602082840312156120bd57600080fd5b5035919050565b6000806000606084860312156120d957600080fd5b6120e284612000565b92506120f060208501612000565b9150604084013590509250925092565b80151581146112c357600080fd5b6000806040838503121561212157600080fd5b61212a83612000565b9150602083013561213a81612100565b809150509250929050565b60006020828403121561215757600080fd5b610b0d82612000565b60006020828403121561217257600080fd5b8135610b0d81612100565b60008060006040848603121561219257600080fd5b833567ffffffffffffffff808211156121aa57600080fd5b818601915086601f8301126121be57600080fd5b8135818111156121cd57600080fd5b8760208260051b85010111156121e257600080fd5b602092830195509350508401356121f881612100565b809150509250925092565b600080600080600060a0868803121561221b57600080fd5b61222486612000565b945061223260208701612000565b935061224060408701612000565b925061224e60608701612000565b915061225c60808701612000565b90509295509295909350565b6000806040838503121561227b57600080fd5b823561203881612100565b6000806040838503121561229957600080fd5b6122a283612000565b91506122b060208401612000565b90509250929050565b6000806000606084860312156122ce57600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261234d57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561236c5761236c61231a565b500290565b60006020828403121561238357600080fd5b5051919050565b60006020828403121561239c57600080fd5b8151610b0d81612100565b634e487b7160e01b600052603260045260246000fd5b6000600182016123cf576123cf61231a565b5060010190565b600082198211156123e9576123e961231a565b500190565b6000828210156124005761240061231a565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124555784516001600160a01b031683529383019391830191600101612430565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561248b57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220924722b3603ab20fd73c25d6e7e8d937969f1ec34e98a61eb6ebe62657ac47c864736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80637d1db4a51161014f578063b70143c9116100c1578063ed6a59651161007a578063ed6a59651461078a578063efe8a45e146107ba578063f2fde38b146107da578063f4293890146107fa578063f84ba65d1461080f578063f887ea401461082f57600080fd5b8063b70143c9146106a4578063bc337182146106c4578063be7c81ad146106e4578063d405ae8f14610704578063d51ed1c814610724578063dd62ed3e1461074457600080fd5b80638da5cb5b116101135780638da5cb5b146106065780638e2eee841461062457806395d89b41146102b6578063a8aa1b3114610644578063a9059cbb14610664578063b2bdfa7b1461068457600080fd5b80637d1db4a51461056f57806383f9d9fa14610585578063893d20e8146105a5578063896648c1146105d75780638a8c523c146105f157600080fd5b80632b112e49116101f35780636ddd1713116101ac5780636ddd1713146104b857806370a08231146104d9578063715018a61461050f578063751039fc1461052457806377b54bad1461053957806378109e541461055957600080fd5b80632b112e4914610407578063313ce5671461041c5780634363c48614610438578063571ac8b0146104585780635d0044ca146104785780635e562f3b1461049857600080fd5b80631161ae39116102455780631161ae391461035c57806318160ddd1461037c5780631d0f2c99146103915780631da1db5e146103b15780631df4ccfc146103d157806323b872dd146103e757600080fd5b80630445b6671461028d57806306fdde03146102b657806308fd3d05146102e9578063095ea7b31461031a578063100882dc1461033a57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a360225481565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b506040805180820182526004815263464f4d4f60e01b602082015290516102ad9190611fab565b3480156102f557600080fd5b5060215461030a90600160a01b900460ff1681565b60405190151581526020016102ad565b34801561032657600080fd5b5061030a61033536600461201c565b61084f565b34801561034657600080fd5b5061035a610355366004612046565b6108bc565b005b34801561036857600080fd5b5061030a610377366004612089565b61098b565b34801561038857600080fd5b506005546102a3565b34801561039d57600080fd5b5061035a6103ac366004612089565b61099f565b3480156103bd57600080fd5b5061035a6103cc3660046120ab565b6109d4565b3480156103dd57600080fd5b506102a360135481565b3480156103f357600080fd5b5061030a6104023660046120c4565b610a52565b34801561041357600080fd5b506102a3610b14565b34801561042857600080fd5b50604051601281526020016102ad565b34801561044457600080fd5b5061035a61045336600461210e565b610b66565b34801561046457600080fd5b5061030a610473366004612145565b610bbb565b34801561048457600080fd5b5061035a6104933660046120ab565b610bc9565b3480156104a457600080fd5b5061035a6104b3366004612160565b610c32565b3480156104c457600080fd5b5060215461030a90600160a81b900460ff1681565b3480156104e557600080fd5b506102a36104f4366004612145565b6001600160a01b031660009081526008602052604090205490565b34801561051b57600080fd5b5061035a610c6f565b34801561053057600080fd5b5061035a610ce3565b34801561054557600080fd5b5061030a61055436600461201c565b610d1a565b34801561056557600080fd5b506102a360075481565b34801561057b57600080fd5b506102a360065481565b34801561059157600080fd5b5061035a6105a03660046120ab565b610e1a565b3480156105b157600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102ad565b3480156105e357600080fd5b50600a5461030a9060ff1681565b3480156105fd57600080fd5b5061035a610e65565b34801561061257600080fd5b506000546001600160a01b03166105bf565b34801561063057600080fd5b5061035a61063f36600461217d565b610ea4565b34801561065057600080fd5b506021546105bf906001600160a01b031681565b34801561067057600080fd5b5061030a61067f36600461201c565b610f43565b34801561069057600080fd5b506000546105bf906001600160a01b031681565b3480156106b057600080fd5b5061035a6106bf3660046120ab565b610f50565b3480156106d057600080fd5b5061035a6106df3660046120ab565b610fad565b3480156106f057600080fd5b5061035a6106ff366004612203565b611016565b34801561071057600080fd5b5061035a61071f366004612268565b61109f565b34801561073057600080fd5b506102a361073f3660046120ab565b6110eb565b34801561075057600080fd5b506102a361075f366004612286565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561079657600080fd5b5061030a6107a5366004612145565b600b6020526000908152604090205460ff1681565b3480156107c657600080fd5b5061035a6107d53660046122b9565b61112c565b3480156107e657600080fd5b5061035a6107f5366004612145565b611167565b34801561080657600080fd5b5061035a611251565b34801561081b57600080fd5b5061035a61082a36600461210e565b6112c6565b34801561083b57600080fd5b50601f546105bf906001600160a01b031681565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108aa9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108ef5760405162461bcd60e51b81526004016108e6906122e5565b60405180910390fd5b600e8690556011859055600f849055601083905560128290556109208261091a858188818c8c6113df565b906113df565b6013556014819055610933600282612330565b601354106109835760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530250000000060448201526064016108e6565b505050505050565b600082610997836110eb565b119392505050565b6000546001600160a01b031633146109c95760405162461bcd60e51b81526004016108e6906122e5565b601d91909155601e55565b6000546001600160a01b031633146109fe5760405162461bcd60e51b81526004016108e6906122e5565b60195447906001600160a01b03166108fc6064610a1b8585612352565b610a259190612330565b6040518115909202916000818181858888f19350505050158015610a4d573d6000803e3d6000fd5b505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610aff576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610ada91849061143e565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610b0a848484611478565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610b61906003546001600160a01b0316600090815260086020526040902054610b5b9060055490611840565b90611840565b905090565b6000546001600160a01b03163314610b905760405162461bcd60e51b81526004016108e6906122e5565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006108b68260001961084f565b6000546001600160a01b03163314610bf35760405162461bcd60e51b81526004016108e6906122e5565b6103e8600554610c039190612330565b6007541015610c1157600080fd5b6103e881600554610c229190612352565b610c2c9190612330565b60075550565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b81526004016108e6906122e5565b600a805460ff1916911515919091179055565b6000546001600160a01b03163314610c995760405162461bcd60e51b81526004016108e6906122e5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d0d5760405162461bcd60e51b81526004016108e6906122e5565b6005546007819055600655565b336000908152600d602052604081205460ff16610d3657600080fd5b81600003610da9576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da69190612371565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0d919061238a565b6000546001600160a01b03163314610e445760405162461bcd60e51b81526004016108e6906122e5565b6103e8600554610e549190612330565b811015610e6057600080fd5b600655565b6000546001600160a01b03163314610e8f5760405162461bcd60e51b81526004016108e6906122e5565b6021805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610ece5760405162461bcd60e51b81526004016108e6906122e5565b60005b82811015610f3d5781600b6000868685818110610ef057610ef06123a7565b9050602002016020810190610f059190612145565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610f36816123bd565b9050610ed1565b50505050565b6000610b0d338484611478565b6000546001600160a01b03163314610f7a5760405162461bcd60e51b81526004016108e6906122e5565b3060009081526008602052604081205490610fa06064610f9a848661131b565b9061139d565b9050610f3d303383611882565b6000546001600160a01b03163314610fd75760405162461bcd60e51b81526004016108e6906122e5565b6103e8600554610fe79190612330565b6006541015610ff557600080fd5b6103e8816005546110069190612352565b6110109190612330565b60065550565b6000546001600160a01b031633146110405760405162461bcd60e51b81526004016108e6906122e5565b601880546001600160a01b03199081166001600160a01b039788161790915560198054821695871695909517909455601a8054851693861693909317909255601c80548416918516919091179055601b80549092169216919091179055565b6000546001600160a01b031633146110c95760405162461bcd60e51b81526004016108e6906122e5565b60218054921515600160a81b0260ff60a81b1990931692909217909155602255565b60006108b66110f8610b14565b6021546001600160a01b0316600090815260086020526040902054610f9a90611125906002905b9061131b565b859061131b565b6000546001600160a01b031633146111565760405162461bcd60e51b81526004016108e6906122e5565b601591909155601691909155601755565b6000546001600160a01b031633146111915760405162461bcd60e51b81526004016108e6906122e5565b6001600160a01b0381166111f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461127b5760405162461bcd60e51b81526004016108e6906122e5565b336000908152600d602052604090205460ff1661129757600080fd5b60405133904780156108fc02916000818181858888f193505050501580156112c3573d6000803e3d6000fd5b50565b6000546001600160a01b031633146112f05760405162461bcd60e51b81526004016108e6906122e5565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b60008260000361132d575060006108b6565b60006113398385612352565b9050826113468583612330565b14610b0d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108e6565b6000610b0d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611956565b6000806113ec83856123d6565b905083811015610b0d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108e6565b600081848411156114625760405162461bcd60e51b81526004016108e69190611fab565b50600061146f84866123ee565b95945050505050565b60235460009060ff161561149857611491848484611882565b9050610b0d565b6001600160a01b03841660009081526001602052604090205460ff161580156114da57506001600160a01b03831660009081526001602052604090205460ff16155b1561152f57602154600160a01b900460ff1661152f5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108e6565b600a5460ff1615611591576001600160a01b0384166000908152600b602052604090205460ff16156115915760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b60448201526064016108e6565b6001600160a01b03841660009081526001602052604090205460ff161580156115c357506001600160a01b0383163014155b80156115dd57506003546001600160a01b03848116911614155b80156115f757506021546001600160a01b03848116911614155b80156116115750601c546001600160a01b03848116911614155b801561162b57506019546001600160a01b03848116911614155b801561165057506001600160a01b0383166000908152600d602052604090205460ff16155b156116f1576001600160a01b03831660009081526008602052604090205460075461167b84836123d6565b11156116ef5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016108e6565b505b6116fb8483611984565b6117036119f1565b1561171057611710611a47565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461176291849061143e565b6001600160a01b038516600090815260086020908152604080832093909355600c90529081205460ff16806117af57506001600160a01b0384166000908152600c602052604090205460ff165b6117c3576117be858486611e2e565b6117c5565b825b6001600160a01b0385166000908152600860205260409020549091506117eb90826113df565b6001600160a01b0380861660008181526008602052604090819020939093559151908716906000805160206124a58339815191529061182d9085815260200190565b60405180910390a3506001949350505050565b6000610b0d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061143e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546118d391849061143e565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461190290836113df565b6001600160a01b0380851660008181526008602052604090819020939093559151908616906000805160206124a5833981519152906119449086815260200190565b60405180910390a35060019392505050565b600081836119775760405162461bcd60e51b81526004016108e69190611fab565b50600061146f8486612330565b600654811115806119ad57506001600160a01b0382166000908152600d602052604090205460ff165b6119ed5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108e6565b5050565b6021546000906001600160a01b03163314801590611a12575060235460ff16155b8015611a275750602154600160a81b900460ff165b8015610b6157505060225430600090815260086020526040902054101590565b6023805460ff19166001179055601d54601e54600091611a669161098b565b611a7257600e54611a75565b60005b90506000611a996002610f9a601354610f9a8660225461131b90919063ffffffff16565b90506000611ab28260225461184090919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611aec57611aec6123a7565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611b1d57611b1d6123a7565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b81524792919091169063791ac94790611b67908690600090879030904290600401612405565b600060405180830381600087803b158015611b8157600080fd5b505af1158015611b95573d6000803e3d6000fd5b505050506000611bae824761184090919063ffffffff16565b90506000611bc9611bc088600261139d565b60135490611840565b90506000611bde6002610f9a8481878d61131b565b90506000611bfb83610f9a600f548761131b90919063ffffffff16565b90506000611c1884610f9a6011548861131b90919063ffffffff16565b90506000611c3585610f9a6010548961131b90919063ffffffff16565b6019546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611c87576040519150601f19603f3d011682016040523d82523d6000602084013e611c8c565b606091505b5050601a546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611cdc576040519150601f19603f3d011682016040523d82523d6000602084013e611ce1565b606091505b5050601b546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611d31576040519150601f19603f3d011682016040523d82523d6000602084013e611d36565b606091505b5060009250508b159050611e1657601f5460185460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611db4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611dd99190612476565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601754602154600091906001600160a01b0390811690841603611e545750601554611e6f565b6021546001600160a01b0390811690861603611e6f57506016545b6000611e9c6014546064611e839190612352565b610f9a8461111f6013548a61131b90919063ffffffff16565b90506000611ebb601354610f9a6012548561131b90919063ffffffff16565b90506000611ec98383611840565b30600090815260086020526040902054909150611ee690826113df565b3060009081526008602052604080822092909255601c546001600160a01b031681522054611f1490836113df565b601c546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b16916000805160206124a5833981519152910160405180910390a38115611f9557601c546040518381526001600160a01b03918216918a16906000805160206124a58339815191529060200160405180910390a35b611f9f8784611840565b98975050505050505050565b600060208083528351808285015260005b81811015611fd857858101830151858201604001528201611fbc565b81811115611fea576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461201757600080fd5b919050565b6000806040838503121561202f57600080fd5b61203883612000565b946020939093013593505050565b60008060008060008060c0878903121561205f57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561209c57600080fd5b50508035926020909101359150565b6000602082840312156120bd57600080fd5b5035919050565b6000806000606084860312156120d957600080fd5b6120e284612000565b92506120f060208501612000565b9150604084013590509250925092565b80151581146112c357600080fd5b6000806040838503121561212157600080fd5b61212a83612000565b9150602083013561213a81612100565b809150509250929050565b60006020828403121561215757600080fd5b610b0d82612000565b60006020828403121561217257600080fd5b8135610b0d81612100565b60008060006040848603121561219257600080fd5b833567ffffffffffffffff808211156121aa57600080fd5b818601915086601f8301126121be57600080fd5b8135818111156121cd57600080fd5b8760208260051b85010111156121e257600080fd5b602092830195509350508401356121f881612100565b809150509250925092565b600080600080600060a0868803121561221b57600080fd5b61222486612000565b945061223260208701612000565b935061224060408701612000565b925061224e60608701612000565b915061225c60808701612000565b90509295509295909350565b6000806040838503121561227b57600080fd5b823561203881612100565b6000806040838503121561229957600080fd5b6122a283612000565b91506122b060208401612000565b90509250929050565b6000806000606084860312156122ce57600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261234d57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561236c5761236c61231a565b500290565b60006020828403121561238357600080fd5b5051919050565b60006020828403121561239c57600080fd5b8151610b0d81612100565b634e487b7160e01b600052603260045260246000fd5b6000600182016123cf576123cf61231a565b5060010190565b600082198211156123e9576123e961231a565b500190565b6000828210156124005761240061231a565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124555784516001600160a01b031683529383019391830191600101612430565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561248b57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220924722b3603ab20fd73c25d6e7e8d937969f1ec34e98a61eb6ebe62657ac47c864736f6c634300080e0033

Deployed Bytecode Sourcemap

4981:14307:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6758:55;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6758:55:0;;;;;;;;8249:80;;;;;;;;;;-1:-1:-1;8321:5:0;;;;;;;;;;;-1:-1:-1;;;8321:5:0;;;;8249:80;;;;8321:5;8249:80;:::i;6677:31::-;;;;;;;;;;-1:-1:-1;6677:31:0;;;;-1:-1:-1;;;6677:31:0;;;;;;;;;963:14:1;;956:22;938:41;;926:2;911:18;6677:31:0;798:187:1;8671:216:0;;;;;;;;;;-1:-1:-1;8671:216:0;;;;;:::i;:::-;;:::i;17377:565::-;;;;;;;;;;-1:-1:-1;17377:565:0;;;;;:::i;:::-;;:::i;:::-;;19064:150;;;;;;;;;;-1:-1:-1;19064:150:0;;;;;:::i;:::-;;:::i;7979:88::-;;;;;;;;;;-1:-1:-1;8052:12:0;;7979:88;;18554:173;;;;;;;;;;-1:-1:-1;18554:173:0;;;;;:::i;:::-;;:::i;13439:233::-;;;;;;;;;;-1:-1:-1;13439:233:0;;;;;:::i;:::-;;:::i;6034:89::-;;;;;;;;;;;;;;;;9189:370;;;;;;;;;;-1:-1:-1;9189:370:0;;;;;:::i;:::-;;:::i;18739:142::-;;;;;;;;;;;;;:::i;8073:80::-;;;;;;;;;;-1:-1:-1;8073:80:0;;5313:2;2868:36:1;;2856:2;2841:18;8073:80:0;2726:184:1;17120:114:0;;;;;;;;;;-1:-1:-1;17120:114:0;;;;;:::i;:::-;;:::i;8895:122::-;;;;;;;;;;-1:-1:-1;8895:122:0;;;;;:::i;:::-;;:::i;9571:237::-;;;;;;;;;;-1:-1:-1;9571:237:0;;;;;:::i;:::-;;:::i;16786:99::-;;;;;;;;;;-1:-1:-1;16786:99:0;;;;;:::i;:::-;;:::i;6721:30::-;;;;;;;;;;-1:-1:-1;6721:30:0;;;;-1:-1:-1;;;6721:30:0;;;;;;8419:105;;;;;;;;;;-1:-1:-1;8419:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8503:18:0;8485:7;8503:18;;;:9;:18;;;;;;;8419:105;3038:148;;;;;;;;;;;;;:::i;13975:133::-;;;;;;;;;;;;;:::i;14285:308::-;;;;;;;;;;-1:-1:-1;14285:308:0;;;;;:::i;:::-;;:::i;5448:61::-;;;;;;;;;;;;;;;;5383:58;;;;;;;;;;;;;;;;10043:158;;;;;;;;;;-1:-1:-1;10043:158:0;;;;;:::i;:::-;;:::i;8335:78::-;;;;;;;;;;-1:-1:-1;8387:7:0;2889:6;-1:-1:-1;;;;;2889:6:0;8335:78;;;-1:-1:-1;;;;;3959:32:1;;;3941:51;;3929:2;3914:18;8335:78:0;3795:203:1;5633:32:0;;;;;;;;;;-1:-1:-1;5633:32:0;;;;;;;;14820:79;;;;;;;;;;;;;:::i;2824:::-;;;;;;;;;;-1:-1:-1;2862:7:0;2889:6;-1:-1:-1;;;;;2889:6:0;2824:79;;16898:210;;;;;;;;;;-1:-1:-1;16898:210:0;;;;;:::i;:::-;;:::i;6645:19::-;;;;;;;;;;-1:-1:-1;6645:19:0;;;;-1:-1:-1;;;;;6645:19:0;;;9025:156;;;;;;;;;;-1:-1:-1;9025:156:0;;;;;:::i;:::-;;:::i;2444:21::-;;;;;;;;;;-1:-1:-1;2444:21:0;;;;-1:-1:-1;;;;;2444:21:0;;;13681:286;;;;;;;;;;-1:-1:-1;13681:286:0;;;;;:::i;:::-;;:::i;9816:219::-;;;;;;;;;;-1:-1:-1;9816:219:0;;;;;:::i;:::-;;:::i;17950:435::-;;;;;;;;;;-1:-1:-1;17950:435:0;;;;;:::i;:::-;;:::i;18393:153::-;;;;;;;;;;-1:-1:-1;18393:153:0;;;;;:::i;:::-;;:::i;18889:167::-;;;;;;;;;;-1:-1:-1;18889:167:0;;;;;:::i;:::-;;:::i;8530:133::-;;;;;;;;;;-1:-1:-1;8530:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8632:19:0;;;8614:7;8632:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8530:133;5672:46;;;;;;;;;;-1:-1:-1;5672:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14601:211;;;;;;;;;;-1:-1:-1;14601:211:0;;;;;:::i;:::-;;:::i;3194:244::-;;;;;;;;;;-1:-1:-1;3194:244:0;;;;;:::i;:::-;;:::i;14116:161::-;;;;;;;;;;;;;:::i;17242:127::-;;;;;;;;;;-1:-1:-1;17242:127:0;;;;;:::i;:::-;;:::i;6575:24::-;;;;;;;;;;-1:-1:-1;6575:24:0;;;;-1:-1:-1;;;;;6575:24:0;;;8671:216;8775:10;8746:4;8763:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8763:32:0;;;;;;;;;;:41;;;8820:37;8746:4;;8763:32;;8820:37;;;;8798:6;160:25:1;;148:2;133:18;;14:177;8820:37:0;;;;;;;;-1:-1:-1;8875:4:0;8671:216;;;;;:::o;17377:565::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;;;;;;;;;17550:12:::1;:28:::0;;;17589:7:::1;:18:::0;;;17618:12:::1;:28:::0;;;17657:6:::1;:16:::0;;;17684:7:::1;:18:::0;;;17724:73:::1;17694:8:::0;17724:59:::1;17666:7:::0;17724:59;17633:13;17724:59;17565:13;17599:8;17724:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:73::-;17713:8;:84:::0;17808:14:::1;:32:::0;;;17870:16:::1;17885:1;17825:15:::0;17870:16:::1;:::i;:::-;17859:8;;:27;17851:68;;;::::0;-1:-1:-1;;;17851:68:0;;7290:2:1;17851:68:0::1;::::0;::::1;7272:21:1::0;7329:2;7309:18;;;7302:30;7368;7348:18;;;7341:58;7416:18;;17851:68:0::1;7088:352:1::0;17851:68:0::1;17377:565:::0;;;;;;:::o;19064:150::-;19144:4;19200:6;19168:29;19188:8;19168:19;:29::i;:::-;:38;;19064:150;-1:-1:-1;;;19064:150:0:o;18554:173::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;18642:15:::1;:25:::0;;;;18678:26:::1;:41:::0;18554:173::o;13439:233::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;13598:20:::1;::::0;13558:21:::1;::::0;-1:-1:-1;;;;;13598:20:0::1;13590:74;13660:3;13629:28;13641:16:::0;13558:21;13629:28:::1;:::i;:::-;:34;;;;:::i;:::-;13590:74;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13511:161;13439:233:::0;:::o;9189:370::-;-1:-1:-1;;;;;9309:19:0;;9289:4;9309:19;;;:11;:19;;;;;;;;9329:10;9309:31;;;;;;;;-1:-1:-1;;9309:52:0;9306:186;;9411:69;;;;;;;;;;;-1:-1:-1;;;9411:69:0;;;;;;;;-1:-1:-1;;;;;9411:19:0;;-1:-1:-1;9411:19:0;;;:11;:19;;;;;9431:10;9411:31;;;;;;;;;;:69;;9447:6;;9411:35;:69::i;:::-;-1:-1:-1;;;;;9377:19:0;;;;;;:11;:19;;;;;;;;9397:10;9377:31;;;;;;;:103;9306:186;9511:40;9525:6;9533:9;9544:6;9511:13;:40::i;:::-;9504:47;;9189:370;;;;;;:::o;18739:142::-;18867:4;;-1:-1:-1;;;;;18867:4:0;18792:7;8503:18;;;:9;:18;;;;;;18819:54;;18846:4;;-1:-1:-1;;;;;18846:4:0;8485:7;8503:18;;;:9;:18;;;;;;18819:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18812:61;;18739:142;:::o;17120:114::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17198:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;17198:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17120:114::o;8895:122::-;8950:4;8974:35;8982:7;-1:-1:-1;;8974:7:0;:35::i;9571:237::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;9690:4:::1;9675:12;;:19;;;;:::i;:::-;9656:15;;:38;;9648:47;;;::::0;::::1;;9778:4;9759:14;9744:12;;:29;;;;:::i;:::-;9743:39;;;;:::i;:::-;9725:15;:57:::0;-1:-1:-1;9571:237:0:o;16786:99::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;16854:13:::1;:23:::0;;-1:-1:-1;;16854:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16786:99::o;3038:148::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;3145:1:::1;3129:6:::0;;3108:40:::1;::::0;-1:-1:-1;;;;;3129:6:0;;::::1;::::0;3108:40:::1;::::0;3145:1;;3108:40:::1;3176:1;3159:19:::0;;-1:-1:-1;;;;;;3159:19:0::1;::::0;;3038:148::o;13975:133::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;14048:12:::1;::::0;14030:15:::1;:30:::0;;;14071:12:::1;:27:::0;13975:133::o;14285:308::-;14405:10;14364:4;14389:27;;;:15;:27;;;;;;;;14381:36;;;;;;14428:6;14438:1;14428:11;14425:95;;14464:44;;-1:-1:-1;;;14464:44:0;;14502:4;14464:44;;;3941:51:1;-1:-1:-1;;;;;14464:29:0;;;;;3914:18:1;;14464:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14455:53;;14425:95;14537:48;;-1:-1:-1;;;14537:48:0;;14566:10;14537:48;;;7981:51:1;8048:18;;;8041:34;;;-1:-1:-1;;;;;14537:28:0;;;;;7954:18:1;;14537:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10043:158::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;10150:4:::1;10135:12;;:19;;;;:::i;:::-;10125:6;:29;;10117:38;;;::::0;::::1;;10166:12;:21:::0;10043:158::o;14820:79::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;14873:11:::1;:18:::0;;-1:-1:-1;;;;14873:18:0::1;-1:-1:-1::0;;;14873:18:0::1;::::0;;14820:79::o;16898:210::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;17000:9:::1;16995:106;17011:20:::0;;::::1;16995:106;;;17083:6;17053:13;:27;17067:9;;17077:1;17067:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17053:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17053:27:0;:36;;-1:-1:-1;;17053:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17033:3:::1;::::0;::::1;:::i;:::-;;;16995:106;;;;16898:210:::0;;;:::o;9025:156::-;9105:4;9129:44;9143:10;9155:9;9166:6;9129:13;:44::i;13681:286::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;13802:4:::1;13757:24;8503:18:::0;;;:9;:18;;;;;;;13842:47:::1;13885:3;13842:38;8503:18:::0;13863:16;13842:20:::1;:38::i;:::-;:42:::0;::::1;:47::i;:::-;13819:70;;13900:53;13923:4;13929:10;13940:12;13900:14;:53::i;9816:219::-:0;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;9926:4:::1;9911:12;;:19;;;;:::i;:::-;9895:12;;:35;;9887:44;;;::::0;::::1;;10023:4;10006:12;9991;;:27;;;;:::i;:::-;9990:37;;;;:::i;:::-;9975:12;:52:::0;-1:-1:-1;9816:219:0:o;17950:435::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;18143:21:::1;:46:::0;;-1:-1:-1;;;;;;18143:46:0;;::::1;-1:-1:-1::0;;;;;18143:46:0;;::::1;;::::0;;;18200:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18255:14:::1;:32:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18298:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;18343:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;17950:435::o;18393:153::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;18482:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;18482:22:0::1;-1:-1:-1::0;;;;18482:22:0;;::::1;::::0;;;::::1;::::0;;;18515:13:::1;:23:::0;18393:153::o;18889:167::-;18957:7;18984:64;19025:22;:20;:22::i;:::-;19007:4;;-1:-1:-1;;;;;19007:4:0;8485:7;8503:18;;;:9;:18;;;;;;18984:36;;18997:22;;19017:1;;18997:15;:19;;:22::i;:::-;18984:8;;:12;:36::i;14601:211::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;14697:14:::1;:22:::0;;;;14730:13:::1;:20:::0;;;;14761:18:::1;:27:::0;14601:211::o;3194:244::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3283:22:0;::::1;3275:73;;;::::0;-1:-1:-1;;;3275:73:0;;8810:2:1;3275:73:0::1;::::0;::::1;8792:21:1::0;8849:2;8829:18;;;8822:30;8888:34;8868:18;;;8861:62;-1:-1:-1;;;8939:18:1;;;8932:36;8985:19;;3275:73:0::1;8608:402:1::0;3275:73:0::1;3385:6;::::0;;3364:38:::1;::::0;-1:-1:-1;;;;;3364:38:0;;::::1;::::0;3385:6;::::1;::::0;3364:38:::1;::::0;::::1;3413:6;:17:::0;;-1:-1:-1;;;;;;3413:17:0::1;-1:-1:-1::0;;;;;3413:17:0;;;::::1;::::0;;;::::1;::::0;;3194:244::o;14116:161::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;14193:10:::1;14177:27;::::0;;;:15:::1;:27;::::0;;;;;::::1;;14169:36;;;::::0;::::1;;14216:51;::::0;14224:10:::1;::::0;14245:21:::1;14216:51:::0;::::1;;;::::0;::::1;::::0;;;14245:21;14224:10;14216:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14116:161::o:0;17242:127::-;2951:6;;-1:-1:-1;;;;;2951:6:0;2261:10;2951:22;2943:67;;;;-1:-1:-1;;;2943:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17329:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;17329:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17242:127::o;623:250::-;681:7;705:1;710;705:6;701:47;;-1:-1:-1;735:1:0;728:8;;701:47;760:9;772:5;776:1;772;:5;:::i;:::-;760:17;-1:-1:-1;805:1:0;796:5;800:1;760:17;796:5;:::i;:::-;:10;788:56;;;;-1:-1:-1;;;788:56:0;;9217:2:1;788:56:0;;;9199:21:1;9256:2;9236:18;;;9229:30;9295:34;9275:18;;;9268:62;-1:-1:-1;;;9346:18:1;;;9339:31;9387:19;;788:56:0;9015:397:1;879:132:0;937:7;964:39;968:1;971;964:39;;;;;;;;;;;;;;;;;:3;:39::i;96:181::-;154:7;;186:5;190:1;186;:5;:::i;:::-;174:17;;215:1;210;:6;;202:46;;;;-1:-1:-1;;;202:46:0;;9752:2:1;202:46:0;;;9734:21:1;9791:2;9771:18;;;9764:30;9830:29;9810:18;;;9803:57;9877:18;;202:46:0;9550:351:1;425:192:0;511:7;547:12;539:6;;;;531:29;;;;-1:-1:-1;;;531:29:0;;;;;;;;:::i;:::-;-1:-1:-1;571:9:0;583:5;587:1;583;:5;:::i;:::-;571:17;425:192;-1:-1:-1;;;;;425:192:0:o;10209:1429::-;10321:6;;10301:4;;10321:6;;10318:63;;;10337:41;10352:6;10360:9;10371:6;10337:14;:41::i;:::-;10330:48;;;;10318:63;-1:-1:-1;;;;;10397:22:0;;;;;;:14;:22;;;;;;;;10396:23;:53;;;;-1:-1:-1;;;;;;10424:25:0;;;;;;:14;:25;;;;;;;;10423:26;10396:53;10393:140;;;10473:11;;-1:-1:-1;;;10473:11:0;;;;10465:43;;;;-1:-1:-1;;;10465:43:0;;10238:2:1;10465:43:0;;;10220:21:1;10277:2;10257:18;;;10250:30;-1:-1:-1;;;10296:18:1;;;10289:50;10356:18;;10465:43:0;10036:344:1;10465:43:0;10580:13;;;;10577:93;;;-1:-1:-1;;;;;10618:21:0;;;;;;:13;:21;;;;;;;;10617:22;10609:45;;;;-1:-1:-1;;;10609:45:0;;10587:2:1;10609:45:0;;;10569:21:1;10626:2;10606:18;;;10599:30;-1:-1:-1;;;10645:18:1;;;10638:41;10696:18;;10609:45:0;10385:335:1;10609:45:0;-1:-1:-1;;;;;10687:22:0;;;;;;:14;:22;;;;;;;;10686:23;:53;;;;-1:-1:-1;;;;;;10713:26:0;;10734:4;10713:26;;10686:53;:84;;;;-1:-1:-1;10765:4:0;;-1:-1:-1;;;;;10744:26:0;;;10765:4;;10744:26;;10686:84;:105;;;;-1:-1:-1;10787:4:0;;-1:-1:-1;;;;;10774:17:0;;;10787:4;;10774:17;;10686:105;:137;;;;-1:-1:-1;10808:15:0;;-1:-1:-1;;;;;10795:28:0;;;10808:15;;10795:28;;10686:137;:174;;;;-1:-1:-1;10840:20:0;;-1:-1:-1;;;;;10827:33:0;;;10840:20;;10827:33;;10686:174;:205;;;;-1:-1:-1;;;;;;10865:26:0;;;;;;:15;:26;;;;;;;;10864:27;10686:205;10682:397;;;-1:-1:-1;;;;;8503:18:0;;10907;8503;;;:9;:18;;;;;;10996:15;;10972:19;10985:6;8503:18;10972:19;:::i;:::-;10971:40;;10963:114;;;;-1:-1:-1;;;10963:114:0;;10927:2:1;10963:114:0;;;10909:21:1;10966:2;10946:18;;;10939:30;11005:34;10985:18;;;10978:62;11076:32;11056:18;;;11049:60;11126:19;;10963:114:0;10725:426:1;10963:114:0;10892:187;10682:397;11132:28;11145:6;11153;11132:12;:28::i;:::-;11177:16;:14;:16::i;:::-;11174:35;;;11196:10;:8;:10::i;:::-;11289:53;;;;;;;;;;;-1:-1:-1;;;11289:53:0;;;;;;;;-1:-1:-1;;;;;11289:17:0;;-1:-1:-1;11289:17:0;;;:9;:17;;;;;;;;:53;;11311:6;;11289:21;:53::i;:::-;-1:-1:-1;;;;;11269:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11381:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11404:22:0;;;;;;:11;:22;;;;;;;;11381:45;11380:93;;11439:34;11447:6;11455;11463:9;11439:7;:34::i;:::-;11380:93;;;11430:6;11380:93;-1:-1:-1;;;;;11507:20:0;;;;;;:9;:20;;;;;;11355:118;;-1:-1:-1;11507:40:0;;11355:118;11507:24;:40::i;:::-;-1:-1:-1;;;;;11484:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11565:43;;;;;;-1:-1:-1;;;;;;;;;;;11565:43:0;;;11593:14;160:25:1;;148:2;133:18;;14:177;11565:43:0;;;;;;;;-1:-1:-1;11626:4:0;;10209:1429;-1:-1:-1;;;;10209:1429:0:o;283:136::-;341:7;368:43;372:1;375;368:43;;;;;;;;;;;;;;;;;:3;:43::i;11650:330::-;11780:53;;;;;;;;;;;-1:-1:-1;;;11780:53:0;;;;;;;;-1:-1:-1;;;;;11780:17:0;;11743:4;11780:17;;;:9;:17;;;;;;;:53;;11802:6;;11780:21;:53::i;:::-;-1:-1:-1;;;;;11760:17:0;;;;;;;:9;:17;;;;;;:73;;;;11867:20;;;;;;;:32;;11892:6;11867:24;:32::i;:::-;-1:-1:-1;;;;;11844:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11915:35;;;;;;-1:-1:-1;;;;;;;;;;;11915:35:0;;;11943:6;160:25:1;;148:2;133:18;;14:177;11915:35:0;;;;;;;;-1:-1:-1;11968:4:0;11650:330;;;;;:::o;1017:189::-;1103:7;1138:12;1131:5;1123:28;;;;-1:-1:-1;;;1123:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1162:9:0;1174:5;1178:1;1174;:5;:::i;11988:166::-;12085:12;;12075:6;:22;;:49;;;-1:-1:-1;;;;;;12101:23:0;;;;;;:15;:23;;;;;;;;12075:49;12067:79;;;;-1:-1:-1;;;12067:79:0;;11358:2:1;12067:79:0;;;11340:21:1;11397:2;11377:18;;;11370:30;-1:-1:-1;;;11416:18:1;;;11409:47;11473:18;;12067:79:0;11156:341:1;12067:79:0;11988:166;;:::o;13234:197::-;13321:4;;13283;;-1:-1:-1;;;;;13321:4:0;13307:10;:18;;;;:38;;-1:-1:-1;13339:6:0;;;;13338:7;13307:38;:62;;;;-1:-1:-1;13358:11:0;;-1:-1:-1;;;13358:11:0;;;;13307:62;:116;;;;-1:-1:-1;;13410:13:0;;13400:4;13382:24;;;;:9;:24;;;;;;:41;;;13234:197::o;14917:1861::-;6861:6;:13;;-1:-1:-1;;6861:13:0;6870:4;6861:13;;;15012:15:::1;::::0;15029:26:::1;::::0;6861:6;;14996:60:::1;::::0;:15:::1;:60::i;:::-;:79;;15063:12;;14996:79;;;15059:1;14996:79;14966:109;;15086:23;15112:59;15169:1;15112:52;15155:8;;15112:38;15130:19;15112:13;;:17;;:38;;;;:::i;:59::-;15086:85;;15182:20;15205:34;15223:15;15205:13;;:17;;:34;;;;:::i;:::-;15276:16;::::0;;15290:1:::1;15276:16:::0;;;;;::::1;::::0;;15182:57;;-1:-1:-1;15252:21:0::1;::::0;15276:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15276:16:0::1;15252:40;;15321:4;15303;15308:1;15303:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15303:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15347:4:::1;::::0;15337:7;;15347:4;::::1;::::0;15337;;15347;;15337:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15337:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15422:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;15422:188:0;;15388:21:::1;::::0;15422:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15494:12;;15364:21:::1;::::0;15537:4;;15564::::1;::::0;15584:15:::1;::::0;15422:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15623:17;15643:40;15669:13;15643:21;:25;;:40;;;;:::i;:::-;15623:60:::0;-1:-1:-1;15696:19:0::1;15718:40;15731:26;:19:::0;15755:1:::1;15731:23;:26::i;:::-;15718:8;::::0;;:12:::1;:40::i;:::-;15696:62:::0;-1:-1:-1;15779:26:0::1;15808:58;15864:1;15808:51;15696:62:::0;15808:51;:9;15822:19;15808:13:::1;:34::i;:58::-;15779:87;;15877:26;15906:44;15938:11;15906:27;15920:12;;15906:9;:13;;:27;;;;:::i;:44::-;15877:73;;15961:21;15985:39;16012:11;15985:22;15999:7;;15985:9;:13;;:22;;;;:::i;:39::-;15961:63;;16035:20;16058:38;16084:11;16058:21;16072:6;;16058:9;:13;;:21;;;;:::i;:38::-;16138:20;::::0;16130:65:::1;::::0;16035:61;;-1:-1:-1;16110:15:0::1;::::0;-1:-1:-1;;;;;16138:20:0;;::::1;::::0;16172:18;;16110:15;16130:65;16110:15;16130:65;16172:18;16138:20;16130:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16230:14:0::1;::::0;16222:53:::1;::::0;16109:86;;-1:-1:-1;;;;;;16230:14:0::1;::::0;16258:12;;16222:53:::1;::::0;;;16258:12;16230:14;16222:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16310:15:0::1;::::0;16302:55:::1;::::0;16206:69;;-1:-1:-1;;;;;;16310:15:0::1;::::0;16339:13;;16302:55:::1;::::0;;;16339:13;16310:15;16302:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16391:5:0::1;::::0;-1:-1:-1;;16412:19:0;;;-1:-1:-1;16409:362:0::1;;16447:6;::::0;16621:21:::1;::::0;16447:244:::1;::::0;-1:-1:-1;;;16447:244:0;;16523:4:::1;16447:244;::::0;::::1;13170:34:1::0;13220:18;;;13213:34;;;16447:6:0::1;13263:18:1::0;;;13256:34;;;13306:18;;;13299:34;-1:-1:-1;;;;;16621:21:0;;::::1;13349:19:1::0;;;13342:44;16661:15:0::1;13402:19:1::0;;;13395:35;16447:6:0;::::1;::::0;:22:::1;::::0;16477:18;;13104:19:1;;16447:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16711:48:0::1;::::0;;13926:25:1;;;13982:2;13967:18;;13960:34;;;16711:48:0::1;::::0;-1:-1:-1;13899:18:1;16711:48:0::1;;;;;;;16409:362;-1:-1:-1::0;;6879:6:0;:14;;-1:-1:-1;;6879:14:0;;;-1:-1:-1;;;;;;;;;;14917:1861:0:o;12284:942::-;12421:18;;12468:4;;12370:7;;12421:18;-1:-1:-1;;;;;12468:4:0;;;12455:17;;;;12452:154;;-1:-1:-1;12502:14:0;;12452:154;;;12547:4;;-1:-1:-1;;;;;12547:4:0;;;12537:14;;;;12534:72;;-1:-1:-1;12581:13:0;;12534:72;12618:17;12638:62;12679:14;;12696:3;12679:20;;;;:::i;:::-;12638:36;12663:10;12638:20;12649:8;;12638:6;:10;;:20;;;;:::i;:62::-;12618:82;;12711:18;12732:36;12759:8;;12732:22;12746:7;;12732:9;:13;;:22;;;;:::i;:36::-;12711:57;-1:-1:-1;12779:22:0;12804:25;:9;12711:57;12804:13;:25::i;:::-;12887:4;12869:24;;;;:9;:24;;;;;;12779:50;;-1:-1:-1;12869:44:0;;12779:50;12869:28;:44::i;:::-;12860:4;12842:24;;;;:9;:24;;;;;;:71;;;;12963:15;;-1:-1:-1;;;;;12963:15:0;12953:26;;;;:42;;12984:10;12953:30;:42::i;:::-;12934:15;;-1:-1:-1;;;;;12934:15:0;;;12924:26;;;;:9;:26;;;;;;;;;:71;;;;13011:47;160:25:1;;;13036:4:0;;13011:47;;;;-1:-1:-1;;;;;;;;;;;13011:47:0;133:18:1;13011:47:0;;;;;;;13082:14;;13079:99;;13134:15;;13117:45;;160:25:1;;;-1:-1:-1;;;;;13134:15:0;;;;13117:45;;;-1:-1:-1;;;;;;;;;;;13117:45:0;148:2:1;133:18;13117:45:0;;;;;;;13079:99;13197:21;:6;13208:9;13197:10;:21::i;:::-;13190:28;12284:942;-1:-1:-1;;;;;;;;12284:942:0:o;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;990:173::-;1058:20;;-1:-1:-1;;;;;1107:31:1;;1097:42;;1087:70;;1153:1;1150;1143:12;1087:70;990:173;;;:::o;1168:254::-;1236:6;1244;1297:2;1285:9;1276:7;1272:23;1268:32;1265:52;;;1313:1;1310;1303:12;1265:52;1336:29;1355:9;1336:29;:::i;:::-;1326:39;1412:2;1397:18;;;;1384:32;;-1:-1:-1;;;1168:254:1:o;1427:523::-;1531:6;1539;1547;1555;1563;1571;1624:3;1612:9;1603:7;1599:23;1595:33;1592:53;;;1641:1;1638;1631:12;1592:53;-1:-1:-1;;1664:23:1;;;1734:2;1719:18;;1706:32;;-1:-1:-1;1785:2:1;1770:18;;1757:32;;1836:2;1821:18;;1808:32;;-1:-1:-1;1887:3:1;1872:19;;1859:33;;-1:-1:-1;1939:3:1;1924:19;1911:33;;-1:-1:-1;1427:523:1;-1:-1:-1;1427:523:1:o;1955:248::-;2023:6;2031;2084:2;2072:9;2063:7;2059:23;2055:32;2052:52;;;2100:1;2097;2090:12;2052:52;-1:-1:-1;;2123:23:1;;;2193:2;2178:18;;;2165:32;;-1:-1:-1;1955:248:1:o;2208:180::-;2267:6;2320:2;2308:9;2299:7;2295:23;2291:32;2288:52;;;2336:1;2333;2326:12;2288:52;-1:-1:-1;2359:23:1;;2208:180;-1:-1:-1;2208:180:1:o;2393:328::-;2470:6;2478;2486;2539:2;2527:9;2518:7;2514:23;2510:32;2507:52;;;2555:1;2552;2545:12;2507:52;2578:29;2597:9;2578:29;:::i;:::-;2568:39;;2626:38;2660:2;2649:9;2645:18;2626:38;:::i;:::-;2616:48;;2711:2;2700:9;2696:18;2683:32;2673:42;;2393:328;;;;;:::o;2915:118::-;3001:5;2994:13;2987:21;2980:5;2977:32;2967:60;;3023:1;3020;3013:12;3038:315;3103:6;3111;3164:2;3152:9;3143:7;3139:23;3135:32;3132:52;;;3180:1;3177;3170:12;3132:52;3203:29;3222:9;3203:29;:::i;:::-;3193:39;;3282:2;3271:9;3267:18;3254:32;3295:28;3317:5;3295:28;:::i;:::-;3342:5;3332:15;;;3038:315;;;;;:::o;3358:186::-;3417:6;3470:2;3458:9;3449:7;3445:23;3441:32;3438:52;;;3486:1;3483;3476:12;3438:52;3509:29;3528:9;3509:29;:::i;3549:241::-;3605:6;3658:2;3646:9;3637:7;3633:23;3629:32;3626:52;;;3674:1;3671;3664:12;3626:52;3713:9;3700:23;3732:28;3754:5;3732:28;:::i;4003:750::-;4095:6;4103;4111;4164:2;4152:9;4143:7;4139:23;4135:32;4132:52;;;4180:1;4177;4170:12;4132:52;4220:9;4207:23;4249:18;4290:2;4282:6;4279:14;4276:34;;;4306:1;4303;4296:12;4276:34;4344:6;4333:9;4329:22;4319:32;;4389:7;4382:4;4378:2;4374:13;4370:27;4360:55;;4411:1;4408;4401:12;4360:55;4451:2;4438:16;4477:2;4469:6;4466:14;4463:34;;;4493:1;4490;4483:12;4463:34;4548:7;4541:4;4531:6;4528:1;4524:14;4520:2;4516:23;4512:34;4509:47;4506:67;;;4569:1;4566;4559:12;4506:67;4600:4;4592:13;;;;-1:-1:-1;4624:6:1;-1:-1:-1;;4665:20:1;;4652:34;4695:28;4652:34;4695:28;:::i;:::-;4742:5;4732:15;;;4003:750;;;;;:::o;4758:484::-;4853:6;4861;4869;4877;4885;4938:3;4926:9;4917:7;4913:23;4909:33;4906:53;;;4955:1;4952;4945:12;4906:53;4978:29;4997:9;4978:29;:::i;:::-;4968:39;;5026:38;5060:2;5049:9;5045:18;5026:38;:::i;:::-;5016:48;;5083:38;5117:2;5106:9;5102:18;5083:38;:::i;:::-;5073:48;;5140:38;5174:2;5163:9;5159:18;5140:38;:::i;:::-;5130:48;;5197:39;5231:3;5220:9;5216:19;5197:39;:::i;:::-;5187:49;;4758:484;;;;;;;;:::o;5247:309::-;5312:6;5320;5373:2;5361:9;5352:7;5348:23;5344:32;5341:52;;;5389:1;5386;5379:12;5341:52;5428:9;5415:23;5447:28;5469:5;5447:28;:::i;5561:260::-;5629:6;5637;5690:2;5678:9;5669:7;5665:23;5661:32;5658:52;;;5706:1;5703;5696:12;5658:52;5729:29;5748:9;5729:29;:::i;:::-;5719:39;;5777:38;5811:2;5800:9;5796:18;5777:38;:::i;:::-;5767:48;;5561:260;;;;;:::o;5826:316::-;5903:6;5911;5919;5972:2;5960:9;5951:7;5947:23;5943:32;5940:52;;;5988:1;5985;5978:12;5940:52;-1:-1:-1;;6011:23:1;;;6081:2;6066:18;;6053:32;;-1:-1:-1;6132:2:1;6117:18;;;6104:32;;5826:316;-1:-1:-1;5826:316:1:o;6373:356::-;6575:2;6557:21;;;6594:18;;;6587:30;6653:34;6648:2;6633:18;;6626:62;6720:2;6705:18;;6373:356::o;6734:127::-;6795:10;6790:3;6786:20;6783:1;6776:31;6826:4;6823:1;6816:15;6850:4;6847:1;6840:15;6866:217;6906:1;6932;6922:132;;6976:10;6971:3;6967:20;6964:1;6957:31;7011:4;7008:1;7001:15;7039:4;7036:1;7029:15;6922:132;-1:-1:-1;7068:9:1;;6866:217::o;7445:168::-;7485:7;7551:1;7547;7543:6;7539:14;7536:1;7533:21;7528:1;7521:9;7514:17;7510:45;7507:71;;;7558:18;;:::i;:::-;-1:-1:-1;7598:9:1;;7445:168::o;7618:184::-;7688:6;7741:2;7729:9;7720:7;7716:23;7712:32;7709:52;;;7757:1;7754;7747:12;7709:52;-1:-1:-1;7780:16:1;;7618:184;-1:-1:-1;7618:184:1:o;8086:245::-;8153:6;8206:2;8194:9;8185:7;8181:23;8177:32;8174:52;;;8222:1;8219;8212:12;8174:52;8254:9;8248:16;8273:28;8295:5;8273:28;:::i;8336:127::-;8397:10;8392:3;8388:20;8385:1;8378:31;8428:4;8425:1;8418:15;8452:4;8449:1;8442:15;8468:135;8507:3;8528:17;;;8525:43;;8548:18;;:::i;:::-;-1:-1:-1;8595:1:1;8584:13;;8468:135::o;9417:128::-;9457:3;9488:1;9484:6;9481:1;9478:13;9475:39;;;9494:18;;:::i;:::-;-1:-1:-1;9530:9:1;;9417:128::o;9906:125::-;9946:4;9974:1;9971;9968:8;9965:34;;;9979:18;;:::i;:::-;-1:-1:-1;10016:9:1;;9906:125::o;11634:980::-;11896:4;11944:3;11933:9;11929:19;11975:6;11964:9;11957:25;12001:2;12039:6;12034:2;12023:9;12019:18;12012:34;12082:3;12077:2;12066:9;12062:18;12055:31;12106:6;12141;12135:13;12172:6;12164;12157:22;12210:3;12199:9;12195:19;12188:26;;12249:2;12241:6;12237:15;12223:29;;12270:1;12280:195;12294:6;12291:1;12288:13;12280:195;;;12359:13;;-1:-1:-1;;;;;12355:39:1;12343:52;;12450:15;;;;12415:12;;;;12391:1;12309:9;12280:195;;;-1:-1:-1;;;;;;;12531:32:1;;;;12526:2;12511:18;;12504:60;-1:-1:-1;;;12595:3:1;12580:19;12573:35;12492:3;11634:980;-1:-1:-1;;;11634:980:1:o;13441:306::-;13529:6;13537;13545;13598:2;13586:9;13577:7;13573:23;13569:32;13566:52;;;13614:1;13611;13604:12;13566:52;13643:9;13637:16;13627:26;;13693:2;13682:9;13678:18;13672:25;13662:35;;13737:2;13726:9;13722:18;13716:25;13706:35;;13441:306;;;;;:::o

Swarm Source

ipfs://924722b3603ab20fd73c25d6e7e8d937969f1ec34e98a61eb6ebe62657ac47c8

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.