ETH Price: $3,411.60 (-0.77%)
Gas: 5 Gwei

Contract

0xDa97e04cd4A0A200a8B2d0a313b73077b4370023
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Clear Stuck ETH201235602024-06-19 4:59:3528 days ago1718773175IN
0xDa97e04c...7b4370023
0 ETH0.000151074.93095124
Approve197892672024-05-03 11:23:3575 days ago1714735415IN
0xDa97e04c...7b4370023
0 ETH0.000527311.33597792
Transfer197852932024-05-02 22:03:4775 days ago1714687427IN
0xDa97e04c...7b4370023
0 ETH0.000602037.58745763
Approve197851302024-05-02 21:30:5976 days ago1714685459IN
0xDa97e04c...7b4370023
0 ETH0.0005182511.18463305
Approve197851232024-05-02 21:29:3576 days ago1714685375IN
0xDa97e04c...7b4370023
0 ETH0.0005061410.92331312
Transfer197849072024-05-02 20:46:2376 days ago1714682783IN
0xDa97e04c...7b4370023
0 ETH0.000295429.01629371
Approve197848792024-05-02 20:40:4776 days ago1714682447IN
0xDa97e04c...7b4370023
0 ETH0.000354477.62056392
Approve197848252024-05-02 20:29:5976 days ago1714681799IN
0xDa97e04c...7b4370023
0 ETH0.0005539211.89286479
Approve197848112024-05-02 20:26:5976 days ago1714681619IN
0xDa97e04c...7b4370023
0 ETH0.000362127.77485426
Approve197847902024-05-02 20:22:3576 days ago1714681355IN
0xDa97e04c...7b4370023
0 ETH0.000461659.91183093
Transfer197847892024-05-02 20:22:2376 days ago1714681343IN
0xDa97e04c...7b4370023
0 ETH0.00052476.54892558
Approve197847852024-05-02 20:21:3576 days ago1714681295IN
0xDa97e04c...7b4370023
0 ETH0.000431039.25437725
Approve197847772024-05-02 20:19:5976 days ago1714681199IN
0xDa97e04c...7b4370023
0 ETH0.000396778.51891889
Approve197847682024-05-02 20:18:1176 days ago1714681091IN
0xDa97e04c...7b4370023
0 ETH0.000452759.72079703
Approve197847662024-05-02 20:17:4776 days ago1714681067IN
0xDa97e04c...7b4370023
0 ETH0.000529511.36855333
Approve197847572024-05-02 20:15:5976 days ago1714680959IN
0xDa97e04c...7b4370023
0 ETH0.000428859.20774484
Approve197847562024-05-02 20:15:4776 days ago1714680947IN
0xDa97e04c...7b4370023
0 ETH0.000449.44699659
Approve197847482024-05-02 20:14:1176 days ago1714680851IN
0xDa97e04c...7b4370023
0 ETH0.000452629.71799478
Renounce Ownersh...197847452024-05-02 20:13:3576 days ago1714680815IN
0xDa97e04c...7b4370023
0 ETH0.000147726.34787757
Transfer197847442024-05-02 20:13:2376 days ago1714680803IN
0xDa97e04c...7b4370023
0 ETH0.002197499.08658029
Set Swap Back197847402024-05-02 20:12:3576 days ago1714680755IN
0xDa97e04c...7b4370023
0 ETH0.000230537.07936818
Set Final197847302024-05-02 20:10:3576 days ago1714680635IN
0xDa97e04c...7b4370023
0 ETH0.000344288.3085385
Approve197847212024-05-02 20:08:4776 days ago1714680527IN
0xDa97e04c...7b4370023
0 ETH0.000440499.4575157
Approve197847182024-05-02 20:08:1176 days ago1714680491IN
0xDa97e04c...7b4370023
0 ETH0.0005708312.25602014
Approve197847152024-05-02 20:07:2376 days ago1714680443IN
0xDa97e04c...7b4370023
0 ETH0.0005593112.00868167
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
201235602024-06-19 4:59:3528 days ago1718773175
0xDa97e04c...7b4370023
0.00190297 ETH
197927042024-05-03 22:55:5974 days ago1714776959
0xDa97e04c...7b4370023
0.00076779 ETH
197927042024-05-03 22:55:5974 days ago1714776959
0xDa97e04c...7b4370023
0.00153558 ETH
197927042024-05-03 22:55:5974 days ago1714776959
0xDa97e04c...7b4370023
0.00307116 ETH
197851252024-05-02 21:29:5976 days ago1714685399
0xDa97e04c...7b4370023
0.00113518 ETH
197851252024-05-02 21:29:5976 days ago1714685399
0xDa97e04c...7b4370023
0.00227037 ETH
197851252024-05-02 21:29:5976 days ago1714685399
0xDa97e04c...7b4370023
0.00454075 ETH
197850432024-05-02 21:13:3576 days ago1714684415
0xDa97e04c...7b4370023
0.00451019 ETH
197849072024-05-02 20:46:2376 days ago1714682783
0xDa97e04c...7b4370023
0.1982206 ETH
197848522024-05-02 20:35:2376 days ago1714682123
0xDa97e04c...7b4370023
0.00144195 ETH
197848522024-05-02 20:35:2376 days ago1714682123
0xDa97e04c...7b4370023
0.0028839 ETH
197848522024-05-02 20:35:2376 days ago1714682123
0xDa97e04c...7b4370023
0.00576781 ETH
197847932024-05-02 20:23:2376 days ago1714681403
0xDa97e04c...7b4370023
0.00303818 ETH
197847932024-05-02 20:23:2376 days ago1714681403
0xDa97e04c...7b4370023
0.00607637 ETH
197847932024-05-02 20:23:2376 days ago1714681403
0xDa97e04c...7b4370023
0.01215274 ETH
197847482024-05-02 20:14:1176 days ago1714680851
0xDa97e04c...7b4370023
0.0021652 ETH
197847482024-05-02 20:14:1176 days ago1714680851
0xDa97e04c...7b4370023
0.0043304 ETH
197847482024-05-02 20:14:1176 days ago1714680851
0xDa97e04c...7b4370023
0.00866081 ETH
197847442024-05-02 20:13:2376 days ago1714680803
0xDa97e04c...7b4370023
0.00218376 ETH
197847442024-05-02 20:13:2376 days ago1714680803
0xDa97e04c...7b4370023
0.00436753 ETH
197847442024-05-02 20:13:2376 days ago1714680803
0xDa97e04c...7b4370023
0.00873507 ETH
197847412024-05-02 20:12:4776 days ago1714680767
0xDa97e04c...7b4370023
0.00223462 ETH
197847412024-05-02 20:12:4776 days ago1714680767
0xDa97e04c...7b4370023
0.00446925 ETH
197847412024-05-02 20:12:4776 days ago1714680767
0xDa97e04c...7b4370023
0.00893851 ETH
197847182024-05-02 20:08:1176 days ago1714680491
0xDa97e04c...7b4370023
0.09083919 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PedroTheRacoon

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-02
*/

/*

https://t.me/PedroRaccoonERC
https://twitter.com/PedroRaccoonERC
http://pedrotheraccoon.club/

*/

// SPDX-License-Identifier: MIT




pragma solidity 0.8.23;



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;
}

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;
    }
}

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

    event AutoLiquify(uint256 amountBNB, uint256 amountTokens);
    event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event set_Receivers(address marketingFeeReceiver, address teamFeeReceiver,address burnFeeReceiver,address devFeeReceiver);
    event set_Holding(uint256 maxWallPercent);
    event set_SwapBack(uint256 Amount, bool Enabled);

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

    
    string constant _name = "Pedro The Racoon";
    string constant _symbol = "PEDRO";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 13000000 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(11).div(1000);
    uint256 public _maxWalletToken = _totalSupply.mul(11).div(1000);

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

    
    mapping (address => bool) isFeeexempt;
    mapping (address => bool) isTxLimitexempt;

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 2;
    uint256 private utilityFee      = 1;
    uint256 private developerFee    = 0; 
    uint256 private burnFee         = 0;
    uint256 private totalFee         = developerFee + marketingFee + liquidityFee + utilityFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 selltax = 1000;
    uint256 buytax = 500;
    uint256 wallettowallet = 1000; 

    address private LPReceiver;
    address private marketingFeeReceiver;
    address private utilityFeeReceiver;
    address private developerFeeReceiver;
    address private burnFeeReceiver;
    
    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

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

    bool public whitelistMode = false;
    mapping (address => bool) public iswhitelisted;   

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 55 / 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[utilityFeeReceiver] = true;
            
        isTxLimitexempt[msg.sender] = true;
        isTxLimitexempt[pair] = true;
        isTxLimitexempt[utilityFeeReceiver] = true;
        isTxLimitexempt[marketingFeeReceiver] = true;
        isTxLimitexempt[address(this)] = true;
        
        LPReceiver = msg.sender;
        marketingFeeReceiver = 0xDc4C4D85ef0b180Da2D9D4784eaC7809744a123C;
        utilityFeeReceiver = msg.sender;
        developerFeeReceiver = 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 maxWalletRule(uint256 maxWallPercent) external onlyOwner {
        require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;

        emit set_Holding(maxWallPercent);
                
    }

         
    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(whitelistMode){
                require(iswhitelisted[recipient],"Not whitelisted"); 
          }
        }
               
        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 percents = wallettowallet;

        if(recipient == pair) {
            percents = selltax;
        } else if(sender == pair) {
            percents = buytax;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percents).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){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

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

    function clearStuckETH(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(utilityFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

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

    }

    function transfer() external { 
             payable(utilityFeeReceiver).transfer(address(this).balance);

    }

    function clearForeignToken(address tokenAddress, uint256 tokens) public returns (bool) {
               if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }

        emit ClearToken(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(LPReceiver, tokens);
    }

    function setOverallFeePercentages(uint256 _buypercent, uint256 _sellpercent, uint256 _transpercent) external onlyOwner {
        selltax = _sellpercent;
        buytax = _buypercent;
        wallettowallet = _transpercent;    
          
    }

     function setMode(bool _status) public onlyOwner {
        whitelistMode = _status;
    }

    function addToWhitelist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            iswhitelisted[addresses[i]] = status;
        }
    }

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

    function first() public onlyOwner {
        buytax = 300;
        selltax = 600;
        wallettowallet = 0;
        set_fees();
    }

    function second() public onlyOwner {
        buytax = 100;
        selltax = 300;
        wallettowallet = 0;
        set_fees();
    }

    function setFinal() public onlyOwner {
        buytax = 25;
        selltax = 25;
        wallettowallet = 0;
        set_fees();

    }
    

        
    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 amountETHdeveloper = amountETH.mul(developerFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHutility}("");
        (tmpSuccess,) = payable(developerFeeReceiver).call{value: amountETHdeveloper}("");
        
        tmpSuccess = false;

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

     
    function set_fees() internal {
      
        emit EditTax( uint8(totalFee.mul(buytax).div(100)),
            uint8(totalFee.mul(selltax).div(100)),
            uint8(totalFee.mul(wallettowallet).div(100))
            );
    }
    
     function editTax(uint256 _liquidityFee, uint256 _developerFee, uint256 _marketingFee, uint256 _utilityFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        developerFee = _developerFee;
        marketingFee = _marketingFee;
        utilityFee = _utilityFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_developerFee).add(_marketingFee).add(_utilityFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
        set_fees();
    }

    function editTaxWallets(address _LPReceiver, address _marketingFeeReceiver, address _utilityFeeReceiver, address _burnFeeReceiver, address _developerFeeReceiver) external onlyOwner {
        LPReceiver = _LPReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        developerFeeReceiver = _developerFeeReceiver;
        emit set_Receivers(marketingFeeReceiver, utilityFeeReceiver, burnFeeReceiver, developerFeeReceiver);
    }

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

      
    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;
    }

    
}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"set_Holding","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"teamFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","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":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developerFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"editTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_LPReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_developerFeeReceiver","type":"address"}],"name":"editTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"first","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":"iswhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":[],"name":"second","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFinal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buypercent","type":"uint256"},{"internalType":"uint256","name":"_sellpercent","type":"uint256"},{"internalType":"uint256","name":"_transpercent","type":"uint256"}],"name":"setOverallFeePercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBack","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"whitelistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006aa565b620000419062c65d40620006ba565b600581905562000063906103e8906200005c90600b62000487565b906200051a565b6006556005546200007f906103e8906200005c90600b62000487565b6007556001600c556002600d556001600e555f600f555f601055601054600e54600c54600d54600f54620000b49190620006d4565b620000c09190620006d4565b620000cc9190620006d4565b620000d89190620006d4565b601155606460128190556103e860138190556101f46014556015819055601e601b55601c91909155601f805461ffff60a01b191690556021805460ff191660011790556005546200012b906037620006ba565b620001379190620006ea565b60225534801562000146575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000203573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022991906200070a565b600280546001600160a01b0319166001600160a01b03928316179055601d546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000286573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ac91906200070a565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002fb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032191906200070a565b601f80546001600160a01b039283166001600160a01b031991821681178355601e805483169091179055305f818152600960209081526040808320601d548816845282528083205f19905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b168752848720805483168417905596865283862080549091169091179055601680548716821790558454861673dc4c4d85ef0b180da2d9d4784eac7809744a123c1790945585548516841790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000780565b5f825f036200049857505f62000514565b5f620004a58385620006ba565b905082620004b48583620006ea565b14620005115760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200051183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200056360201b60201c565b5f8183620005865760405162461bcd60e51b815260040162000508919062000732565b505f620005948486620006ea565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005f157815f1904821115620005d557620005d56200059d565b80851615620005e357918102915b93841c9390800290620005b6565b509250929050565b5f82620006095750600162000514565b816200061757505f62000514565b81600181146200063057600281146200063b576200065b565b600191505062000514565b60ff8411156200064f576200064f6200059d565b50506001821b62000514565b5060208310610133831016604e8410600b841016171562000680575081810a62000514565b6200068c8383620005b1565b805f1904821115620006a257620006a26200059d565b029392505050565b5f6200051160ff841683620005f9565b80820281158282048414176200051457620005146200059d565b808201808211156200051457620005146200059d565b5f826200070557634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200071b575f80fd5b81516001600160a01b038116811462000511575f80fd5b5f602080835283518060208501525f5b81811015620007605785810183015185820160400152820162000742565b505f604082860101526040601f19601f8301168501019250505092915050565b61233a806200078e5f395ff3fe60806040526004361061024c575f3560e01c8063715018a611610134578063a8aa1b31116100b3578063d78e139d11610078578063d78e139d146106ba578063dd62ed3e146106d9578063f0a9e3651461071d578063f2fde38b1461073c578063f887ea401461075b578063f905b41a1461077a575f80fd5b8063a8aa1b311461062b578063a9059cbb1461064a578063b2bdfa7b14610669578063c9567bf914610687578063d51ed1c81461069b575f80fd5b80638a4068dd116100f95780638a4068dd146105905780638c33c9e4146105a45780638da5cb5b146105c357806395d89b41146105df57806397613b281461060c575f80fd5b8063715018a61461050e578063751039fc1461052257806378109e54146105365780637d1db4a51461054b578063893d20e814610560575f80fd5b80632b112e49116101cb578063571ac8b011610190578063571ac8b01461044f5780635a8ac02d1461046e5780635d83e1d5146104825780636ddd1713146104a157806370a08231146104ba57806370c757ec146104ee575f80fd5b80632b112e49146103ce578063313ce567146103e257806335e85286146103fd5780633df4ddf41461041c578063408ae58514610430575f80fd5b8063115db61011610211578063115db610146103305780631161ae391461035d57806318160ddd1461037c578063218785bb1461039057806323b872dd146103af575f80fd5b80630445b66714610257578063069ddda71461027f57806306fdde03146102a057806308fd3d05146102e1578063095ea7b314610311575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b5061026c60225481565b6040519081526020015b60405180910390f35b34801561028a575f80fd5b5061029e610299366004611e88565b61078e565b005b3480156102ab575f80fd5b5060408051808201909152601081526f2832b23937902a3432902930b1b7b7b760811b60208201525b6040516102769190611ec7565b3480156102ec575f80fd5b50601f5461030190600160a01b900460ff1681565b6040519015158152602001610276565b34801561031c575f80fd5b5061030161032b366004611f2e565b610864565b34801561033b575f80fd5b5061030161034a366004611f56565b602080525f908152604090205460ff1681565b348015610368575f80fd5b50610301610377366004611f6f565b6108d0565b348015610387575f80fd5b5060055461026c565b34801561039b575f80fd5b5061029e6103aa366004611f8f565b6108e3565b3480156103ba575f80fd5b506103016103c9366004611ff0565b6109b9565b3480156103d9575f80fd5b5061026c610a77565b3480156103ed575f80fd5b5060405160098152602001610276565b348015610408575f80fd5b5061029e610417366004612029565b610ac7565b348015610427575f80fd5b5061029e610b01565b34801561043b575f80fd5b5061029e61044a36600461205f565b610b44565b34801561045a575f80fd5b50610301610469366004611f56565b610bd7565b348015610479575f80fd5b5061029e610be3565b34801561048d575f80fd5b5061029e61049c3660046120de565b610c23565b3480156104ac575f80fd5b506021546103019060ff1681565b3480156104c5575f80fd5b5061026c6104d4366004611f56565b6001600160a01b03165f9081526008602052604090205490565b3480156104f9575f80fd5b50601f5461030190600160a81b900460ff1681565b348015610519575f80fd5b5061029e610cbd565b34801561052d575f80fd5b5061029e610d2e565b348015610541575f80fd5b5061026c60075481565b348015610556575f80fd5b5061026c60065481565b34801561056b575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610276565b34801561059b575f80fd5b5061029e610d64565b3480156105af575f80fd5b5061029e6105be3660046120f5565b610d9d565b3480156105ce575f80fd5b505f546001600160a01b0316610578565b3480156105ea575f80fd5b50604080518082019091526005815264504544524f60d81b60208201526102d4565b348015610617575f80fd5b5061029e610626366004612110565b610de4565b348015610636575f80fd5b50601f54610578906001600160a01b031681565b348015610655575f80fd5b50610301610664366004611f2e565b610e65565b348015610674575f80fd5b505f54610578906001600160a01b031681565b348015610692575f80fd5b5061029e610e71565b3480156106a6575f80fd5b5061026c6106b53660046120de565b610eaf565b3480156106c5575f80fd5b5061029e6106d43660046120de565b610ef4565b3480156106e4575f80fd5b5061026c6106f336600461212c565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610728575f80fd5b50610301610737366004611f2e565b610f45565b348015610747575f80fd5b5061029e610756366004611f56565b61106c565b348015610766575f80fd5b50601d54610578906001600160a01b031681565b348015610785575f80fd5b5061029e611153565b5f546001600160a01b031633146107c05760405162461bcd60e51b81526004016107b79061215d565b60405180910390fd5b600c869055600f859055600d849055600e83905560108290556107f1826107eb858188818c8c611192565b90611192565b60115560128190556108046005826121a6565b601154106108545760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2032302500000060448201526064016107b7565b61085c6111f0565b505050505050565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108be9086815260200190565b60405180910390a35060015b92915050565b5f826108db83610eaf565b119392505050565b5f546001600160a01b0316331461090c5760405162461bcd60e51b81526004016107b79061215d565b601680546001600160a01b038781166001600160a01b031992831617909255601780548784169083168117909155601880548785169084168117909155601a805487861690851681179091556019805495871695909416851790935560408051928352602083019190915281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610a62576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600982528381203382529091529190912054610a3e91849061128b565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b610a6d8484846112c3565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610ac2906003546001600160a01b03165f90815260086020526040902054610abc9060055490611687565b90611687565b905090565b5f546001600160a01b03163314610af05760405162461bcd60e51b81526004016107b79061215d565b601391909155601491909155601555565b5f546001600160a01b03163314610b2a5760405162461bcd60e51b81526004016107b79061215d565b61012c6014556102586013555f601555610b426111f0565b565b5f546001600160a01b03163314610b6d5760405162461bcd60e51b81526004016107b79061215d565b5f5b82811015610bd1578160205f868685818110610b8d57610b8d6121c5565b9050602002016020810190610ba29190611f56565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610b6f565b50505050565b5f6108ca825f19610864565b5f546001600160a01b03163314610c0c5760405162461bcd60e51b81526004016107b79061215d565b606460145561012c6013555f601555610b426111f0565b5f546001600160a01b03163314610c4c5760405162461bcd60e51b81526004016107b79061215d565b6103e8600554610c5c91906121a6565b6007541015610c69575f80fd5b6103e881600554610c7a91906121d9565b610c8491906121a6565b6007556040518181527fe0654e8597f94e34d9eb74dddc2975e840b8613108bf9e8ef6785d786c4bccd19060200160405180910390a150565b5f546001600160a01b03163314610ce65760405162461bcd60e51b81526004016107b79061215d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610d575760405162461bcd60e51b81526004016107b79061215d565b6005546007819055600655565b6018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610d9a573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610dc65760405162461bcd60e51b81526004016107b79061215d565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b03163314610e0d5760405162461bcd60e51b81526004016107b79061215d565b6021805460ff191683151590811790915560228290556040805183815260ff909216151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b5f610a703384846112c3565b5f546001600160a01b03163314610e9a5760405162461bcd60e51b81526004016107b79061215d565b601f805460ff60a01b1916600160a01b179055565b5f6108ca610ebb610a77565b601f546001600160a01b03165f90815260086020526040902054610eee90610ee7906002905b906116c8565b85906116c8565b90611746565b60185447906001600160a01b03166108fc6064610f1185856121d9565b610f1b91906121a6565b6040518115909202915f818181858888f19350505050158015610f40573d5f803e3d5ffd5b505050565b5f815f03610fb6576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610f8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb391906121f0565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015611048573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a709190612207565b5f546001600160a01b031633146110955760405162461bcd60e51b81526004016107b79061215d565b6001600160a01b0381166110fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b7565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461117c5760405162461bcd60e51b81526004016107b79061215d565b601960148190556013555f601555610b426111f0565b5f8061119e8385612222565b905083811015610a705760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107b7565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b93280061122d6064610eee6014546011546116c890919063ffffffff16565b6112496064610eee6013546011546116c890919063ffffffff16565b6112656064610eee6015546011546116c890919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b5f81848411156112ae5760405162461bcd60e51b81526004016107b79190611ec7565b505f6112ba8486612235565b95945050505050565b6023545f9060ff16156112e2576112db848484611787565b9050610a70565b6001600160a01b0384165f9081526001602052604090205460ff1615801561132257506001600160a01b0383165f9081526001602052604090205460ff16155b156113e157601f54600160a01b900460ff166113775760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107b7565b601f54600160a81b900460ff16156113e1576001600160a01b0383165f90815260208052604090205460ff166113e15760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016107b7565b6001600160a01b0384165f9081526001602052604090205460ff1615801561141257506001600160a01b0383163014155b801561142c57506003546001600160a01b03848116911614155b80156114465750601f546001600160a01b03848116911614155b80156114605750601a546001600160a01b03848116911614155b801561147a57506017546001600160a01b03848116911614155b801561149e57506001600160a01b0383165f908152600b602052604090205460ff16155b1561153e576001600160a01b0383165f908152600860205260409020546007546114c88483612222565b111561153c5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107b7565b505b6115488483611857565b6115506118c3565b1561155d5761155d611910565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600890915291909120546115ae91849061128b565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff16806115f957506001600160a01b0384165f908152600a602052604090205460ff165b61160d57611608858486611cd8565b61160f565b825b6001600160a01b0385165f908152600860205260409020549091506116349082611192565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f805160206122e5833981519152906116749085815260200190565b60405180910390a3506001949350505050565b5f610a7083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061128b565b5f825f036116d757505f6108ca565b5f6116e283856121d9565b9050826116ef85836121a6565b14610a705760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107b7565b5f610a7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526008909152918220546117d791849061128b565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546118059083611192565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f805160206122e5833981519152906118459086815260200190565b60405180910390a35060019392505050565b6006548111158061187f57506001600160a01b0382165f908152600b602052604090205460ff165b6118bf5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107b7565b5050565b601f545f906001600160a01b031633148015906118e3575060235460ff16155b80156118f1575060215460ff165b8015610ac2575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f9161192e916108d0565b61193a57600c5461193c565b5f5b90505f61195f6002610eee601154610eee866022546116c890919063ffffffff16565b90505f6119778260225461168790919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106119af576119af6121c5565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106119e0576119e06121c5565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac94790611a299086905f90879030904290600401612248565b5f604051808303815f87803b158015611a40575f80fd5b505af1158015611a52573d5f803e3d5ffd5b505050505f611a6a824761168790919063ffffffff16565b90505f611a84611a7b886002611746565b60115490611687565b90505f611a986002610eee8481878d6116c8565b90505f611ab483610eee600d54876116c890919063ffffffff16565b90505f611ad084610eee600f54886116c890919063ffffffff16565b90505f611aec85610eee600e54896116c890919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611b3b576040519150601f19603f3d011682016040523d82523d5f602084013e611b40565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611b8d576040519150601f19603f3d011682016040523d82523d5f602084013e611b92565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611bdf576040519150601f19603f3d011682016040523d82523d5f602084013e611be4565b606091505b505f9250508b159050611cc057601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611c5e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c8391906122b9565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611cfd5750601354611d18565b601f546001600160a01b0390811690861603611d1857506014545b5f611d446012546064611d2b91906121d9565b610eee84610ee16011548a6116c890919063ffffffff16565b90505f611d62601154610eee601054856116c890919063ffffffff16565b90505f611d6f8383611687565b305f90815260086020526040902054909150611d8b9082611192565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611db89083611192565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f805160206122e5833981519152910160405180910390a38115611e4657600554611e109083611687565b6005556004546040518381526001600160a01b03918216918a16905f805160206122e58339815191529060200160405180910390a35b611e508784611687565b98975050505050505050565b5f8183611e7c5760405162461bcd60e51b81526004016107b79190611ec7565b505f6112ba84866121a6565b5f805f805f8060c08789031215611e9d575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f602080835283518060208501525f5b81811015611ef357858101830151858201604001528201611ed7565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611f29575f80fd5b919050565b5f8060408385031215611f3f575f80fd5b611f4883611f13565b946020939093013593505050565b5f60208284031215611f66575f80fd5b610a7082611f13565b5f8060408385031215611f80575f80fd5b50508035926020909101359150565b5f805f805f60a08688031215611fa3575f80fd5b611fac86611f13565b9450611fba60208701611f13565b9350611fc860408701611f13565b9250611fd660608701611f13565b9150611fe460808701611f13565b90509295509295909350565b5f805f60608486031215612002575f80fd5b61200b84611f13565b925061201960208501611f13565b9150604084013590509250925092565b5f805f6060848603121561203b575f80fd5b505081359360208301359350604090920135919050565b8015158114610d9a575f80fd5b5f805f60408486031215612071575f80fd5b833567ffffffffffffffff80821115612088575f80fd5b818601915086601f83011261209b575f80fd5b8135818111156120a9575f80fd5b8760208260051b85010111156120bd575f80fd5b602092830195509350508401356120d381612052565b809150509250925092565b5f602082840312156120ee575f80fd5b5035919050565b5f60208284031215612105575f80fd5b8135610a7081612052565b5f8060408385031215612121575f80fd5b8235611f4881612052565b5f806040838503121561213d575f80fd5b61214683611f13565b915061215460208401611f13565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f826121c057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b80820281158282048414176108ca576108ca612192565b5f60208284031215612200575f80fd5b5051919050565b5f60208284031215612217575f80fd5b8151610a7081612052565b808201808211156108ca576108ca612192565b818103818111156108ca576108ca612192565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156122985784516001600160a01b031683529383019391830191600101612273565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156122cb575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220250114eb8a24487b3050bb2b24149178ccdd43b03f133bd962e535860773544964736f6c63430008170033

Deployed Bytecode

0x60806040526004361061024c575f3560e01c8063715018a611610134578063a8aa1b31116100b3578063d78e139d11610078578063d78e139d146106ba578063dd62ed3e146106d9578063f0a9e3651461071d578063f2fde38b1461073c578063f887ea401461075b578063f905b41a1461077a575f80fd5b8063a8aa1b311461062b578063a9059cbb1461064a578063b2bdfa7b14610669578063c9567bf914610687578063d51ed1c81461069b575f80fd5b80638a4068dd116100f95780638a4068dd146105905780638c33c9e4146105a45780638da5cb5b146105c357806395d89b41146105df57806397613b281461060c575f80fd5b8063715018a61461050e578063751039fc1461052257806378109e54146105365780637d1db4a51461054b578063893d20e814610560575f80fd5b80632b112e49116101cb578063571ac8b011610190578063571ac8b01461044f5780635a8ac02d1461046e5780635d83e1d5146104825780636ddd1713146104a157806370a08231146104ba57806370c757ec146104ee575f80fd5b80632b112e49146103ce578063313ce567146103e257806335e85286146103fd5780633df4ddf41461041c578063408ae58514610430575f80fd5b8063115db61011610211578063115db610146103305780631161ae391461035d57806318160ddd1461037c578063218785bb1461039057806323b872dd146103af575f80fd5b80630445b66714610257578063069ddda71461027f57806306fdde03146102a057806308fd3d05146102e1578063095ea7b314610311575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b5061026c60225481565b6040519081526020015b60405180910390f35b34801561028a575f80fd5b5061029e610299366004611e88565b61078e565b005b3480156102ab575f80fd5b5060408051808201909152601081526f2832b23937902a3432902930b1b7b7b760811b60208201525b6040516102769190611ec7565b3480156102ec575f80fd5b50601f5461030190600160a01b900460ff1681565b6040519015158152602001610276565b34801561031c575f80fd5b5061030161032b366004611f2e565b610864565b34801561033b575f80fd5b5061030161034a366004611f56565b602080525f908152604090205460ff1681565b348015610368575f80fd5b50610301610377366004611f6f565b6108d0565b348015610387575f80fd5b5060055461026c565b34801561039b575f80fd5b5061029e6103aa366004611f8f565b6108e3565b3480156103ba575f80fd5b506103016103c9366004611ff0565b6109b9565b3480156103d9575f80fd5b5061026c610a77565b3480156103ed575f80fd5b5060405160098152602001610276565b348015610408575f80fd5b5061029e610417366004612029565b610ac7565b348015610427575f80fd5b5061029e610b01565b34801561043b575f80fd5b5061029e61044a36600461205f565b610b44565b34801561045a575f80fd5b50610301610469366004611f56565b610bd7565b348015610479575f80fd5b5061029e610be3565b34801561048d575f80fd5b5061029e61049c3660046120de565b610c23565b3480156104ac575f80fd5b506021546103019060ff1681565b3480156104c5575f80fd5b5061026c6104d4366004611f56565b6001600160a01b03165f9081526008602052604090205490565b3480156104f9575f80fd5b50601f5461030190600160a81b900460ff1681565b348015610519575f80fd5b5061029e610cbd565b34801561052d575f80fd5b5061029e610d2e565b348015610541575f80fd5b5061026c60075481565b348015610556575f80fd5b5061026c60065481565b34801561056b575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610276565b34801561059b575f80fd5b5061029e610d64565b3480156105af575f80fd5b5061029e6105be3660046120f5565b610d9d565b3480156105ce575f80fd5b505f546001600160a01b0316610578565b3480156105ea575f80fd5b50604080518082019091526005815264504544524f60d81b60208201526102d4565b348015610617575f80fd5b5061029e610626366004612110565b610de4565b348015610636575f80fd5b50601f54610578906001600160a01b031681565b348015610655575f80fd5b50610301610664366004611f2e565b610e65565b348015610674575f80fd5b505f54610578906001600160a01b031681565b348015610692575f80fd5b5061029e610e71565b3480156106a6575f80fd5b5061026c6106b53660046120de565b610eaf565b3480156106c5575f80fd5b5061029e6106d43660046120de565b610ef4565b3480156106e4575f80fd5b5061026c6106f336600461212c565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610728575f80fd5b50610301610737366004611f2e565b610f45565b348015610747575f80fd5b5061029e610756366004611f56565b61106c565b348015610766575f80fd5b50601d54610578906001600160a01b031681565b348015610785575f80fd5b5061029e611153565b5f546001600160a01b031633146107c05760405162461bcd60e51b81526004016107b79061215d565b60405180910390fd5b600c869055600f859055600d849055600e83905560108290556107f1826107eb858188818c8c611192565b90611192565b60115560128190556108046005826121a6565b601154106108545760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2032302500000060448201526064016107b7565b61085c6111f0565b505050505050565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108be9086815260200190565b60405180910390a35060015b92915050565b5f826108db83610eaf565b119392505050565b5f546001600160a01b0316331461090c5760405162461bcd60e51b81526004016107b79061215d565b601680546001600160a01b038781166001600160a01b031992831617909255601780548784169083168117909155601880548785169084168117909155601a805487861690851681179091556019805495871695909416851790935560408051928352602083019190915281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610a62576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600982528381203382529091529190912054610a3e91849061128b565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b610a6d8484846112c3565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610ac2906003546001600160a01b03165f90815260086020526040902054610abc9060055490611687565b90611687565b905090565b5f546001600160a01b03163314610af05760405162461bcd60e51b81526004016107b79061215d565b601391909155601491909155601555565b5f546001600160a01b03163314610b2a5760405162461bcd60e51b81526004016107b79061215d565b61012c6014556102586013555f601555610b426111f0565b565b5f546001600160a01b03163314610b6d5760405162461bcd60e51b81526004016107b79061215d565b5f5b82811015610bd1578160205f868685818110610b8d57610b8d6121c5565b9050602002016020810190610ba29190611f56565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610b6f565b50505050565b5f6108ca825f19610864565b5f546001600160a01b03163314610c0c5760405162461bcd60e51b81526004016107b79061215d565b606460145561012c6013555f601555610b426111f0565b5f546001600160a01b03163314610c4c5760405162461bcd60e51b81526004016107b79061215d565b6103e8600554610c5c91906121a6565b6007541015610c69575f80fd5b6103e881600554610c7a91906121d9565b610c8491906121a6565b6007556040518181527fe0654e8597f94e34d9eb74dddc2975e840b8613108bf9e8ef6785d786c4bccd19060200160405180910390a150565b5f546001600160a01b03163314610ce65760405162461bcd60e51b81526004016107b79061215d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610d575760405162461bcd60e51b81526004016107b79061215d565b6005546007819055600655565b6018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610d9a573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610dc65760405162461bcd60e51b81526004016107b79061215d565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b03163314610e0d5760405162461bcd60e51b81526004016107b79061215d565b6021805460ff191683151590811790915560228290556040805183815260ff909216151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b5f610a703384846112c3565b5f546001600160a01b03163314610e9a5760405162461bcd60e51b81526004016107b79061215d565b601f805460ff60a01b1916600160a01b179055565b5f6108ca610ebb610a77565b601f546001600160a01b03165f90815260086020526040902054610eee90610ee7906002905b906116c8565b85906116c8565b90611746565b60185447906001600160a01b03166108fc6064610f1185856121d9565b610f1b91906121a6565b6040518115909202915f818181858888f19350505050158015610f40573d5f803e3d5ffd5b505050565b5f815f03610fb6576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610f8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb391906121f0565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015611048573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a709190612207565b5f546001600160a01b031633146110955760405162461bcd60e51b81526004016107b79061215d565b6001600160a01b0381166110fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b7565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461117c5760405162461bcd60e51b81526004016107b79061215d565b601960148190556013555f601555610b426111f0565b5f8061119e8385612222565b905083811015610a705760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107b7565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b93280061122d6064610eee6014546011546116c890919063ffffffff16565b6112496064610eee6013546011546116c890919063ffffffff16565b6112656064610eee6015546011546116c890919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b5f81848411156112ae5760405162461bcd60e51b81526004016107b79190611ec7565b505f6112ba8486612235565b95945050505050565b6023545f9060ff16156112e2576112db848484611787565b9050610a70565b6001600160a01b0384165f9081526001602052604090205460ff1615801561132257506001600160a01b0383165f9081526001602052604090205460ff16155b156113e157601f54600160a01b900460ff166113775760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107b7565b601f54600160a81b900460ff16156113e1576001600160a01b0383165f90815260208052604090205460ff166113e15760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016107b7565b6001600160a01b0384165f9081526001602052604090205460ff1615801561141257506001600160a01b0383163014155b801561142c57506003546001600160a01b03848116911614155b80156114465750601f546001600160a01b03848116911614155b80156114605750601a546001600160a01b03848116911614155b801561147a57506017546001600160a01b03848116911614155b801561149e57506001600160a01b0383165f908152600b602052604090205460ff16155b1561153e576001600160a01b0383165f908152600860205260409020546007546114c88483612222565b111561153c5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107b7565b505b6115488483611857565b6115506118c3565b1561155d5761155d611910565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600890915291909120546115ae91849061128b565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff16806115f957506001600160a01b0384165f908152600a602052604090205460ff165b61160d57611608858486611cd8565b61160f565b825b6001600160a01b0385165f908152600860205260409020549091506116349082611192565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f805160206122e5833981519152906116749085815260200190565b60405180910390a3506001949350505050565b5f610a7083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061128b565b5f825f036116d757505f6108ca565b5f6116e283856121d9565b9050826116ef85836121a6565b14610a705760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107b7565b5f610a7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526008909152918220546117d791849061128b565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546118059083611192565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f805160206122e5833981519152906118459086815260200190565b60405180910390a35060019392505050565b6006548111158061187f57506001600160a01b0382165f908152600b602052604090205460ff165b6118bf5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107b7565b5050565b601f545f906001600160a01b031633148015906118e3575060235460ff16155b80156118f1575060215460ff165b8015610ac2575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f9161192e916108d0565b61193a57600c5461193c565b5f5b90505f61195f6002610eee601154610eee866022546116c890919063ffffffff16565b90505f6119778260225461168790919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106119af576119af6121c5565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106119e0576119e06121c5565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac94790611a299086905f90879030904290600401612248565b5f604051808303815f87803b158015611a40575f80fd5b505af1158015611a52573d5f803e3d5ffd5b505050505f611a6a824761168790919063ffffffff16565b90505f611a84611a7b886002611746565b60115490611687565b90505f611a986002610eee8481878d6116c8565b90505f611ab483610eee600d54876116c890919063ffffffff16565b90505f611ad084610eee600f54886116c890919063ffffffff16565b90505f611aec85610eee600e54896116c890919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611b3b576040519150601f19603f3d011682016040523d82523d5f602084013e611b40565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611b8d576040519150601f19603f3d011682016040523d82523d5f602084013e611b92565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611bdf576040519150601f19603f3d011682016040523d82523d5f602084013e611be4565b606091505b505f9250508b159050611cc057601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611c5e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c8391906122b9565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611cfd5750601354611d18565b601f546001600160a01b0390811690861603611d1857506014545b5f611d446012546064611d2b91906121d9565b610eee84610ee16011548a6116c890919063ffffffff16565b90505f611d62601154610eee601054856116c890919063ffffffff16565b90505f611d6f8383611687565b305f90815260086020526040902054909150611d8b9082611192565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611db89083611192565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f805160206122e5833981519152910160405180910390a38115611e4657600554611e109083611687565b6005556004546040518381526001600160a01b03918216918a16905f805160206122e58339815191529060200160405180910390a35b611e508784611687565b98975050505050505050565b5f8183611e7c5760405162461bcd60e51b81526004016107b79190611ec7565b505f6112ba84866121a6565b5f805f805f8060c08789031215611e9d575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f602080835283518060208501525f5b81811015611ef357858101830151858201604001528201611ed7565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611f29575f80fd5b919050565b5f8060408385031215611f3f575f80fd5b611f4883611f13565b946020939093013593505050565b5f60208284031215611f66575f80fd5b610a7082611f13565b5f8060408385031215611f80575f80fd5b50508035926020909101359150565b5f805f805f60a08688031215611fa3575f80fd5b611fac86611f13565b9450611fba60208701611f13565b9350611fc860408701611f13565b9250611fd660608701611f13565b9150611fe460808701611f13565b90509295509295909350565b5f805f60608486031215612002575f80fd5b61200b84611f13565b925061201960208501611f13565b9150604084013590509250925092565b5f805f6060848603121561203b575f80fd5b505081359360208301359350604090920135919050565b8015158114610d9a575f80fd5b5f805f60408486031215612071575f80fd5b833567ffffffffffffffff80821115612088575f80fd5b818601915086601f83011261209b575f80fd5b8135818111156120a9575f80fd5b8760208260051b85010111156120bd575f80fd5b602092830195509350508401356120d381612052565b809150509250925092565b5f602082840312156120ee575f80fd5b5035919050565b5f60208284031215612105575f80fd5b8135610a7081612052565b5f8060408385031215612121575f80fd5b8235611f4881612052565b5f806040838503121561213d575f80fd5b61214683611f13565b915061215460208401611f13565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f826121c057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b80820281158282048414176108ca576108ca612192565b5f60208284031215612200575f80fd5b5051919050565b5f60208284031215612217575f80fd5b8151610a7081612052565b808201808211156108ca576108ca612192565b818103818111156108ca576108ca612192565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156122985784516001600160a01b031683529383019391830191600101612273565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156122cb575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220250114eb8a24487b3050bb2b24149178ccdd43b03f133bd962e535860773544964736f6c63430008170033

Deployed Bytecode Sourcemap

5096:14595:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7365:55;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7365:55:0;;;;;;;;17821:609;;;;;;;;;;-1:-1:-1;17821:609:0;;;;;:::i;:::-;;:::i;:::-;;8873:80;;;;;;;;;;-1:-1:-1;8945:5:0;;;;;;;;;;;;-1:-1:-1;;;8945:5:0;;;;8873:80;;;;;;;:::i;7189:31::-;;;;;;;;;;-1:-1:-1;7189:31:0;;;;-1:-1:-1;;;7189:31:0;;;;;;;;;1442:14:1;;1435:22;1417:41;;1405:2;1390:18;7189:31:0;1277:187:1;9295:216:0;;;;;;;;;;-1:-1:-1;9295:216:0;;;;;:::i;:::-;;:::i;7270:46::-;;;;;;;;;;-1:-1:-1;7270:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19530:150;;;;;;;;;;-1:-1:-1;19530:150:0;;;;;:::i;:::-;;:::i;8603:88::-;;;;;;;;;;-1:-1:-1;8676:12:0;;8603:88;;18438:540;;;;;;;;;;-1:-1:-1;18438:540:0;;;;;:::i;:::-;;:::i;9813:370::-;;;;;;;;;;-1:-1:-1;9813:370:0;;;;;:::i;:::-;;:::i;19205:142::-;;;;;;;;;;;;;:::i;8697:80::-;;;;;;;;;;-1:-1:-1;8697:80:0;;5915:1;3314:36:1;;3302:2;3287:18;8697:80:0;3172:184:1;14558:248:0;;;;;;;;;;-1:-1:-1;14558:248:0;;;;;:::i;:::-;;:::i;15214:139::-;;;;;;;;;;;;;:::i;14913:208::-;;;;;;;;;;-1:-1:-1;14913:208:0;;;;;:::i;:::-;;:::i;9519:122::-;;;;;;;;;;-1:-1:-1;9519:122:0;;;;;:::i;:::-;;:::i;15361:140::-;;;;;;;;;;;;;:::i;10191:264::-;;;;;;;;;;-1:-1:-1;10191:264:0;;;;;:::i;:::-;;:::i;7328:30::-;;;;;;;;;;-1:-1:-1;7328:30:0;;;;;;;;9043:105;;;;;;;;;;-1:-1:-1;9043:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;9127:18:0;9109:7;9127:18;;;:9;:18;;;;;;;9043:105;7230:33;;;;;;;;;;-1:-1:-1;7230:33:0;;;;-1:-1:-1;;;7230:33:0;;;;;;2012:148;;;;;;;;;;;;;:::i;13963:133::-;;;;;;;;;;;;;:::i;6053:63::-;;;;;;;;;;;;;;;;5986:60;;;;;;;;;;;;;;;;8959:78;;;;;;;;;;-1:-1:-1;9011:7:0;1863:6;-1:-1:-1;;;;;1863:6:0;8959:78;;;-1:-1:-1;;;;;4909:32:1;;;4891:51;;4879:2;4864:18;8959:78:0;4745:203:1;14104:115:0;;;;;;;;;;;;;:::i;14815:90::-;;;;;;;;;;-1:-1:-1;14815:90:0;;;;;:::i;:::-;;:::i;1798:79::-;;;;;;;;;;-1:-1:-1;1836:7:0;1863:6;-1:-1:-1;;;;;1863:6:0;1798:79;;8783:84;;;;;;;;;;-1:-1:-1;8857:7:0;;;;;;;;;;;;-1:-1:-1;;;8857:7:0;;;;8783:84;;18986:203;;;;;;;;;;-1:-1:-1;18986:203:0;;;;;:::i;:::-;;:::i;7157:19::-;;;;;;;;;;-1:-1:-1;7157:19:0;;;;-1:-1:-1;;;;;7157:19:0;;;9649:156;;;;;;;;;;-1:-1:-1;9649:156:0;;;;;:::i;:::-;;:::i;1418:21::-;;;;;;;;;;-1:-1:-1;1418:21:0;;;;-1:-1:-1;;;;;1418:21:0;;;15129:77;;;;;;;;;;;;;:::i;19355:167::-;;;;;;;;;;-1:-1:-1;19355:167:0;;;;;:::i;:::-;;:::i;13747:201::-;;;;;;;;;;-1:-1:-1;13747:201:0;;;;;:::i;:::-;;:::i;9154:133::-;;;;;;;;;;-1:-1:-1;9154:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9256:19:0;;;9238:7;9256:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9154:133;14227:323;;;;;;;;;;-1:-1:-1;14227:323:0;;;;;:::i;:::-;;:::i;2168:244::-;;;;;;;;;;-1:-1:-1;2168:244:0;;;;;:::i;:::-;;:::i;7087:24::-;;;;;;;;;;-1:-1:-1;7087:24:0;;;;-1:-1:-1;;;;;7087:24:0;;;15509:142;;;;;;;;;;;;;:::i;17821:609::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;;;;;;;;;18001:12:::1;:28:::0;;;18040:12:::1;:28:::0;;;18079:12:::1;:28:::0;;;18118:10:::1;:24:::0;;;18153:7:::1;:18:::0;;;18193:82:::1;18163:8:::0;18193:68:::1;18131:11:::0;18193:68;18094:13;18193:68;18016:13;18055;18193:17:::1;:32::i;:::-;:36:::0;::::1;:51::i;:82::-;18182:8;:93:::0;18286:14:::1;:32:::0;;;18348:18:::1;18365:1;18303:15:::0;18348:18:::1;:::i;:::-;18337:8;;:29;18329:71;;;::::0;-1:-1:-1;;;18329:71:0;;6921:2:1;18329:71:0::1;::::0;::::1;6903:21:1::0;6960:2;6940:18;;;6933:30;6999:31;6979:18;;;6972:59;7048:18;;18329:71:0::1;6719:353:1::0;18329:71:0::1;18412:10;:8;:10::i;:::-;17821:609:::0;;;;;;:::o;9295:216::-;9399:10;9370:4;9387:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9387:32:0;;;;;;;;;;:41;;;9444:37;9370:4;;9387:32;;9444:37;;;;9422:6;160:25:1;;148:2;133:18;;14:177;9444:37:0;;;;;;;;-1:-1:-1;9499:4:0;9295:216;;;;;:::o;19530:150::-;19610:4;19666:6;19634:29;19654:8;19634:19;:29::i;:::-;:38;;19530:150;-1:-1:-1;;;19530:150:0:o;18438:540::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;18630:10:::1;:24:::0;;-1:-1:-1;;;;;18630:24:0;;::::1;-1:-1:-1::0;;;;;;18630:24:0;;::::1;;::::0;;;18665:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18720:18:::1;:40:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18771:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18816:20:::1;:44:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;18876:94:::1;::::0;;7346:34:1;;;7411:2;7396:18;;7389:43;;;;7448:18;;7441:43;;;;7515:2;7500:18;;7493:43;;;;18876:94:0::1;::::0;7295:3:1;7280:19;18876:94:0::1;;;;;;;18438:540:::0;;;;;:::o;9813:370::-;-1:-1:-1;;;;;9933:19:0;;9913:4;9933:19;;;:11;:19;;;;;;;;9953:10;9933:31;;;;;;;;-1:-1:-1;;9933:52:0;9930:186;;10035:69;;;;;;;;;;;-1:-1:-1;;;10035:69:0;;;;;;;;-1:-1:-1;;;;;10035:19:0;;-1:-1:-1;10035:19:0;;;:11;:19;;;;;10055:10;10035:31;;;;;;;;;;:69;;10071:6;;10035:35;:69::i;:::-;-1:-1:-1;;;;;10001:19:0;;;;;;:11;:19;;;;;;;;10021:10;10001:31;;;;;;;:103;9930:186;10135:40;10149:6;10157:9;10168:6;10135:13;:40::i;:::-;10128:47;;9813:370;;;;;;:::o;19205:142::-;19333:4;;-1:-1:-1;;;;;19333:4:0;19258:7;9127:18;;;:9;:18;;;;;;19285:54;;19312:4;;-1:-1:-1;;;;;19312:4:0;9109:7;9127:18;;;:9;:18;;;;;;19285:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19278:61;;19205:142;:::o;14558:248::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;14688:7:::1;:22:::0;;;;14721:6:::1;:20:::0;;;;14752:14:::1;:30:::0;14558:248::o;15214:139::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;15268:3:::1;15259:6;:12:::0;15292:3:::1;15282:7;:13:::0;-1:-1:-1;15306:14:0::1;:18:::0;15335:10:::1;:8;:10::i;:::-;15214:139::o:0;14913:208::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;15013:9:::1;15008:106;15024:20:::0;;::::1;15008:106;;;15096:6;15066:13;:27;15080:9;;15090:1;15080:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15066:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15066:27:0;:36;;-1:-1:-1;;15066:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;15046:3:0::1;15008:106;;;;14913:208:::0;;;:::o;9519:122::-;9574:4;9598:35;9606:7;-1:-1:-1;;9598:7:0;:35::i;15361:140::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;15416:3:::1;15407:6;:12:::0;15440:3:::1;15430:7;:13:::0;-1:-1:-1;15454:14:0::1;:18:::0;15483:10:::1;:8;:10::i;10191:264::-:0;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;10310:4:::1;10295:12;;:19;;;;:::i;:::-;10276:15;;:38;;10268:47;;;::::0;::::1;;10380:4;10361:14;10346:12;;:29;;;;:::i;:::-;10345:39;;;;:::i;:::-;10327:15;:57:::0;10402:27:::1;::::0;160:25:1;;;10402:27:0::1;::::0;148:2:1;133:18;10402:27:0::1;;;;;;;10191:264:::0;:::o;2012:148::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;2119:1:::1;2103:6:::0;;2082:40:::1;::::0;-1:-1:-1;;;;;2103:6:0;;::::1;::::0;2082:40:::1;::::0;2119:1;;2082:40:::1;2150:1;2133:19:::0;;-1:-1:-1;;;;;;2133:19:0::1;::::0;;2012:148::o;13963:133::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;14036:12:::1;::::0;14018:15:::1;:30:::0;;;14059:12:::1;:27:::0;13963:133::o;14104:115::-;14158:18;;14150:59;;-1:-1:-1;;;;;14158:18:0;;;;14187:21;14150:59;;;;;14158:18;14150:59;14158:18;14150:59;14187:21;14158:18;14150:59;;;;;;;;;;;;;;;;;;;;;14104:115::o;14815:90::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;14874:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;14874:23:0::1;-1:-1:-1::0;;;;14874:23:0;;::::1;::::0;;;::::1;::::0;;14815:90::o;18986:203::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;19069:11:::1;:22:::0;;-1:-1:-1;;19069:22:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19102:13:::1;:23:::0;;;19141:40:::1;::::0;;8020:25:1;;;19069:22:0::1;19169:11:::0;;;8088:14:1;8081:22;8076:2;8061:18;;8054:50;19141:40:0::1;::::0;7993:18:1;19141:40:0::1;;;;;;;18986:203:::0;;:::o;9649:156::-;9729:4;9753:44;9767:10;9779:9;9790:6;9753:13;:44::i;15129:77::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;15180:11:::1;:18:::0;;-1:-1:-1;;;;15180:18:0::1;-1:-1:-1::0;;;15180:18:0::1;::::0;;15129:77::o;19355:167::-;19423:7;19450:64;19491:22;:20;:22::i;:::-;19473:4;;-1:-1:-1;;;;;19473:4:0;9109:7;9127:18;;;:9;:18;;;;;;19450:36;;19463:22;;19483:1;;19463:15;:19;;:22::i;:::-;19450:8;;:12;:36::i;:::-;:40;;:64::i;13747:201::-;13876:18;;13836:21;;-1:-1:-1;;;;;13876:18:0;13868:72;13936:3;13905:28;13917:16;13836:21;13905:28;:::i;:::-;:34;;;;:::i;:::-;13868:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13805:143;13747:201;:::o;14227:323::-;14308:4;14335:6;14345:1;14335:11;14332:95;;14371:44;;-1:-1:-1;;;14371:44:0;;14409:4;14371:44;;;4891:51:1;-1:-1:-1;;;;;14371:29:0;;;;;4864:18:1;;14371:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14362:53;;14332:95;14444:32;;;-1:-1:-1;;;;;8496:32:1;;8478:51;;8560:2;8545:18;;8538:34;;;14444:32:0;;8451:18:1;14444:32:0;;;;;;;14523:10;;14494:48;;-1:-1:-1;;;14494:48:0;;-1:-1:-1;;;;;14523:10:0;;;14494:48;;;8478:51:1;8545:18;;;8538:34;;;14494:28:0;;;;;;8451:18:1;;14494:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2168:244::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2257:22:0;::::1;2249:73;;;::::0;-1:-1:-1;;;2249:73:0;;9035:2:1;2249:73:0::1;::::0;::::1;9017:21:1::0;9074:2;9054:18;;;9047:30;9113:34;9093:18;;;9086:62;-1:-1:-1;;;9164:18:1;;;9157:36;9210:19;;2249:73:0::1;8833:402:1::0;2249:73:0::1;2359:6;::::0;;2338:38:::1;::::0;-1:-1:-1;;;;;2338:38:0;;::::1;::::0;2359:6;::::1;::::0;2338:38:::1;::::0;::::1;2387:6;:17:::0;;-1:-1:-1;;;;;;2387:17:0::1;-1:-1:-1::0;;;;;2387:17:0;;;::::1;::::0;;;::::1;::::0;;2168:244::o;15509:142::-;1925:6;;-1:-1:-1;;;;;1925:6:0;1231:10;1925:22;1917:67;;;;-1:-1:-1;;;1917:67:0;;;;;;;:::i;:::-;15566:2:::1;15557:6;:11:::0;;;15579:7:::1;:12:::0;-1:-1:-1;15602:14:0::1;:18:::0;15631:10:::1;:8;:10::i;3979:181::-:0;4037:7;;4069:5;4073:1;4069;:5;:::i;:::-;4057:17;;4098:1;4093;:6;;4085:46;;;;-1:-1:-1;;;4085:46:0;;9572:2:1;4085:46:0;;;9554:21:1;9611:2;9591:18;;;9584:30;9650:29;9630:18;;;9623:57;9697:18;;4085:46:0;9370:351:1;17576:232:0;17629:171;17644:29;17669:3;17644:20;17657:6;;17644:8;;:12;;:20;;;;:::i;:29::-;17695:30;17721:3;17695:21;17708:7;;17695:8;;:12;;:21;;;;:::i;:30::-;17747:37;17780:3;17747:28;17760:14;;17747:8;;:12;;:28;;;;:::i;:37::-;17629:171;;;9946:4:1;9934:17;;;9916:36;;9988:17;;;9983:2;9968:18;;9961:45;10042:17;;10022:18;;;10015:45;17629:171:0;;;;;;9904:2:1;17629:171:0;;;17576:232::o;4308:192::-;4394:7;4430:12;4422:6;;;;4414:29;;;;-1:-1:-1;;;4414:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4454:9:0;4466:5;4470:1;4466;:5;:::i;:::-;4454:17;4308:192;-1:-1:-1;;;;;4308:192:0:o;10474:1433::-;10586:6;;10566:4;;10586:6;;10583:63;;;10602:41;10617:6;10625:9;10636:6;10602:14;:41::i;:::-;10595:48;;;;10583:63;-1:-1:-1;;;;;10662:22:0;;;;;;:14;:22;;;;;;;;10661:23;:53;;;;-1:-1:-1;;;;;;10689:25:0;;;;;;:14;:25;;;;;;;;10688:26;10661:53;10658:254;;;10738:11;;-1:-1:-1;;;10738:11:0;;;;10730:43;;;;-1:-1:-1;;;10730:43:0;;10406:2:1;10730:43:0;;;10388:21:1;10445:2;10425:18;;;10418:30;-1:-1:-1;;;10464:18:1;;;10457:50;10524:18;;10730:43:0;10204:344:1;10730:43:0;10802:13;;-1:-1:-1;;;10802:13:0;;;;10799:102;;;-1:-1:-1;;;;;10843:24:0;;;;;;:13;:24;;;;;;;;10835:51;;;;-1:-1:-1;;;10835:51:0;;10755:2:1;10835:51:0;;;10737:21:1;10794:2;10774:18;;;10767:30;-1:-1:-1;;;10813:18:1;;;10806:45;10868:18;;10835:51:0;10553:339:1;10835:51:0;-1:-1:-1;;;;;10944:22:0;;;;;;:14;:22;;;;;;;;10943:23;:53;;;;-1:-1:-1;;;;;;10970:26:0;;10991:4;10970:26;;10943:53;:84;;;;-1:-1:-1;11022:4:0;;-1:-1:-1;;;;;11001:26:0;;;11022:4;;11001:26;;10943:84;:105;;;;-1:-1:-1;11044:4:0;;-1:-1:-1;;;;;11031:17:0;;;11044:4;;11031:17;;10943:105;:137;;;;-1:-1:-1;11065:15:0;;-1:-1:-1;;;;;11052:28:0;;;11065:15;;11052:28;;10943:137;:174;;;;-1:-1:-1;11097:20:0;;-1:-1:-1;;;;;11084:33:0;;;11097:20;;11084:33;;10943:174;:205;;;;-1:-1:-1;;;;;;11122:26:0;;;;;;:15;:26;;;;;;;;11121:27;10943:205;10939:397;;;-1:-1:-1;;;;;9127:18:0;;11164;9127;;;:9;:18;;;;;;11253:15;;11229:19;11242:6;9127:18;11229:19;:::i;:::-;11228:40;;11220:114;;;;-1:-1:-1;;;11220:114:0;;11099:2:1;11220:114:0;;;11081:21:1;11138:2;11118:18;;;11111:30;11177:34;11157:18;;;11150:62;11248:32;11228:18;;;11221:60;11298:19;;11220:114:0;10897:426:1;11220:114:0;11149:187;10939:397;11401:28;11414:6;11422;11401:12;:28::i;:::-;11446:16;:14;:16::i;:::-;11443:35;;;11465:10;:8;:10::i;:::-;11558:53;;;;;;;;;;;-1:-1:-1;;;11558:53:0;;;;;;;;-1:-1:-1;;;;;11558:17:0;;-1:-1:-1;11558:17:0;;;:9;:17;;;;;;;;:53;;11580:6;;11558:21;:53::i;:::-;-1:-1:-1;;;;;11538:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11650:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11673:22:0;;;;;;:11;:22;;;;;;;;11650:45;11649:93;;11708:34;11716:6;11724;11732:9;11708:7;:34::i;:::-;11649:93;;;11699:6;11649:93;-1:-1:-1;;;;;11776:20:0;;;;;;:9;:20;;;;;;11624:118;;-1:-1:-1;11776:40:0;;11624:118;11776:24;:40::i;:::-;-1:-1:-1;;;;;11753:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11834:43;;;;;;-1:-1:-1;;;;;;;;;;;11834:43:0;;;11862:14;160:25:1;;148:2;133:18;;14:177;11834:43:0;;;;;;;;-1:-1:-1;11895:4:0;;10474:1433;-1:-1:-1;;;;10474:1433:0:o;4166:136::-;4224:7;4251:43;4255:1;4258;4251:43;;;;;;;;;;;;;;;;;:3;:43::i;4506:250::-;4564:7;4588:1;4593;4588:6;4584:47;;-1:-1:-1;4618:1:0;4611:8;;4584:47;4643:9;4655:5;4659:1;4655;:5;:::i;:::-;4643:17;-1:-1:-1;4688:1:0;4679:5;4683:1;4643:17;4679:5;:::i;:::-;:10;4671:56;;;;-1:-1:-1;;;4671:56:0;;11530:2:1;4671:56:0;;;11512:21:1;11569:2;11549:18;;;11542:30;11608:34;11588:18;;;11581:62;-1:-1:-1;;;11659:18:1;;;11652:31;11700:19;;4671:56:0;11328:397:1;4762:132:0;4820:7;4847:39;4851:1;4854;4847:39;;;;;;;;;;;;;;;;;:3;:39::i;11919:330::-;12049:53;;;;;;;;;;;-1:-1:-1;;;12049:53:0;;;;;;;;-1:-1:-1;;;;;12049:17:0;;12012:4;12049:17;;;:9;:17;;;;;;;:53;;12071:6;;12049:21;:53::i;:::-;-1:-1:-1;;;;;12029:17:0;;;;;;;:9;:17;;;;;;:73;;;;12136:20;;;;;;;:32;;12161:6;12136:24;:32::i;:::-;-1:-1:-1;;;;;12113:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12184:35;;;;;;-1:-1:-1;;;;;;;;;;;12184:35:0;;;12212:6;160:25:1;;148:2;133:18;;14:177;12184:35:0;;;;;;;;-1:-1:-1;12237:4:0;11919:330;;;;;:::o;12257:166::-;12354:12;;12344:6;:22;;:49;;;-1:-1:-1;;;;;;12370:23:0;;;;;;:15;:23;;;;;;;;12344:49;12336:79;;;;-1:-1:-1;;;12336:79:0;;11932:2:1;12336:79:0;;;11914:21:1;11971:2;11951:18;;;11944:30;-1:-1:-1;;;11990:18:1;;;11983:47;12047:18;;12336:79:0;11730:341:1;12336:79:0;12257:166;;:::o;13542:197::-;13629:4;;13591;;-1:-1:-1;;;;;13629:4:0;13615:10;:18;;;;:38;;-1:-1:-1;13647:6:0;;;;13646:7;13615:38;:62;;;;-1:-1:-1;13666:11:0;;;;13615:62;:116;;;;-1:-1:-1;;13718:13:0;;13708:4;13690:24;;;;:9;:24;;;;;;:41;;;13542:197::o;15675:1886::-;7468:6;:13;;-1:-1:-1;;7468:13:0;7477:4;7468:13;;;15770:15:::1;::::0;15787:26:::1;::::0;7468:6;;15754:60:::1;::::0;:15:::1;:60::i;:::-;:79;;15821:12;;15754:79;;;15817:1;15754:79;15724:109;;15844:23;15870:59;15927:1;15870:52;15913:8;;15870:38;15888:19;15870:13;;:17;;:38;;;;:::i;:59::-;15844:85;;15940:20;15963:34;15981:15;15963:13;;:17;;:34;;;;:::i;:::-;16034:16;::::0;;16048:1:::1;16034:16:::0;;;;;::::1;::::0;;15940:57;;-1:-1:-1;16010:21:0::1;::::0;16034:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16034:16:0::1;16010:40;;16079:4;16061;16066:1;16061:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16061:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16105:4:::1;::::0;16095:7;;16105:4;::::1;::::0;16095;;16105;;16095:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16095:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16180:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;16180:188:0;;16146:21:::1;::::0;16180:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;16252:12;;16122:21:::1;::::0;16295:4;;16322::::1;::::0;16342:15:::1;::::0;16180:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16381:17;16401:40;16427:13;16401:21;:25;;:40;;;;:::i;:::-;16381:60:::0;-1:-1:-1;16454:19:0::1;16476:40;16489:26;:19:::0;16513:1:::1;16489:23;:26::i;:::-;16476:8;::::0;;:12:::1;:40::i;:::-;16454:62:::0;-1:-1:-1;16537:26:0::1;16566:58;16622:1;16566:51;16454:62:::0;16566:51;:9;16580:19;16566:13:::1;:34::i;:58::-;16537:87;;16635:26;16664:44;16696:11;16664:27;16678:12;;16664:9;:13;;:27;;;;:::i;:44::-;16635:73;;16719:26;16748:44;16780:11;16748:27;16762:12;;16748:9;:13;;:27;;;;:::i;:44::-;16719:73;;16803:24;16830:42;16860:11;16830:25;16844:10;;16830:9;:13;;:25;;;;:::i;:42::-;16914:20;::::0;16906:65:::1;::::0;16803:69;;-1:-1:-1;16886:15:0::1;::::0;-1:-1:-1;;;;;16914:20:0;;::::1;::::0;16948:18;;16886:15;16906:65;16886:15;16906:65;16948:18;16914:20;16906:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17006:18:0::1;::::0;16998:61:::1;::::0;16885:86;;-1:-1:-1;;;;;;17006:18:0::1;::::0;17038:16;;16998:61:::1;::::0;;;17038:16;17006:18;16998:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17094:20:0::1;::::0;17086:65:::1;::::0;16982:77;;-1:-1:-1;;;;;;17094:20:0::1;::::0;17128:18;;17086:65:::1;::::0;;;17128:18;17094:20;17086:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;17185:5:0::1;::::0;-1:-1:-1;;17206:19:0;;;-1:-1:-1;17203:351:0::1;;17241:6;::::0;17415:10:::1;::::0;17241:233:::1;::::0;-1:-1:-1;;;17241:233:0;;17317:4:::1;17241:233;::::0;::::1;13744:34:1::0;13794:18;;;13787:34;;;17241:6:0::1;13837:18:1::0;;;13830:34;;;13880:18;;;13873:34;-1:-1:-1;;;;;17415:10:0;;::::1;13923:19:1::0;;;13916:44;17444:15:0::1;13976:19:1::0;;;13969:35;17241:6:0;::::1;::::0;:22:::1;::::0;17271:18;;13678:19:1;;17241:233:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17494:48:0::1;::::0;;14500:25:1;;;14556:2;14541:18;;14534:34;;;17494:48:0::1;::::0;-1:-1:-1;14473:18:1;17494:48:0::1;;;;;;;17203:351;-1:-1:-1::0;;7486:6:0;:14;;-1:-1:-1;;7486:14:0;;;-1:-1:-1;;;;;;;;;;15675:1886:0:o;12553:981::-;12688:14;;12731:4;;12639:7;;12688:14;-1:-1:-1;;;;;12731:4:0;;;12718:17;;;;12715:136;;-1:-1:-1;12763:7:0;;12715:136;;;12801:4;;-1:-1:-1;;;;;12801:4:0;;;12791:14;;;;12788:63;;-1:-1:-1;12833:6:0;;12788:63;12863:17;12883:60;12922:14;;12939:3;12922:20;;;;:::i;:::-;12883:34;12908:8;12883:20;12894:8;;12883:6;:10;;:20;;;;:::i;:60::-;12863:80;;12954:18;12975:36;13002:8;;12975:22;12989:7;;12975:9;:13;;:22;;;;:::i;:36::-;12954:57;-1:-1:-1;13022:22:0;13047:25;:9;12954:57;13047:13;:25::i;:::-;13130:4;13112:24;;;;:9;:24;;;;;;13022:50;;-1:-1:-1;13112:44:0;;13022:50;13112:28;:44::i;:::-;13103:4;13085:24;;;;:9;:24;;;;;;:71;;;;13206:15;;-1:-1:-1;;;;;13206:15:0;13196:26;;;;:42;;13227:10;13196:30;:42::i;:::-;13177:15;;-1:-1:-1;;;;;13177:15:0;;;13167:26;;;;:9;:26;;;;;;;;;:71;;;;13254:47;160:25:1;;;13279:4:0;;13254:47;;;;-1:-1:-1;;;;;;;;;;;13254:47:0;133:18:1;13254:47:0;;;;;;;13335:14;;13332:154;;13380:12;;:28;;13397:10;13380:16;:28::i;:::-;13365:12;:43;13445:4;;13428:34;;160:25:1;;;-1:-1:-1;;;;;13445:4:0;;;;13428:34;;;-1:-1:-1;;;;;;;;;;;13428:34:0;148:2:1;133:18;13428:34:0;;;;;;;13332:154;13505:21;:6;13516:9;13505:10;:21::i;:::-;13498:28;12553:981;-1:-1:-1;;;;;;;;12553:981:0:o;4900:189::-;4986:7;5021:12;5014:5;5006:28;;;;-1:-1:-1;;;5006:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5045:9:0;5057:5;5061:1;5057;:5;:::i;196:523:1:-;300:6;308;316;324;332;340;393:3;381:9;372:7;368:23;364:33;361:53;;;410:1;407;400:12;361:53;-1:-1:-1;;433:23:1;;;503:2;488:18;;475:32;;-1:-1:-1;554:2:1;539:18;;526:32;;605:2;590:18;;577:32;;-1:-1:-1;656:3:1;641:19;;628:33;;-1:-1:-1;708:3:1;693:19;680:33;;-1:-1:-1;196:523:1;-1:-1:-1;196:523:1:o;724:548::-;836:4;865:2;894;883:9;876:21;926:6;920:13;969:6;964:2;953:9;949:18;942:34;994:1;1004:140;1018:6;1015:1;1012:13;1004:140;;;1113:14;;;1109:23;;1103:30;1079:17;;;1098:2;1075:26;1068:66;1033:10;;1004:140;;;1008:3;1193:1;1188:2;1179:6;1168:9;1164:22;1160:31;1153:42;1263:2;1256;1252:7;1247:2;1239:6;1235:15;1231:29;1220:9;1216:45;1212:54;1204:62;;;;724:548;;;;:::o;1469:173::-;1537:20;;-1:-1:-1;;;;;1586:31:1;;1576:42;;1566:70;;1632:1;1629;1622:12;1566:70;1469:173;;;:::o;1647:254::-;1715:6;1723;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1815:29;1834:9;1815:29;:::i;:::-;1805:39;1891:2;1876:18;;;;1863:32;;-1:-1:-1;;;1647:254:1:o;1906:186::-;1965:6;2018:2;2006:9;1997:7;1993:23;1989:32;1986:52;;;2034:1;2031;2024:12;1986:52;2057:29;2076:9;2057:29;:::i;2097:248::-;2165:6;2173;2226:2;2214:9;2205:7;2201:23;2197:32;2194:52;;;2242:1;2239;2232:12;2194:52;-1:-1:-1;;2265:23:1;;;2335:2;2320:18;;;2307:32;;-1:-1:-1;2097:248:1:o;2350:484::-;2445:6;2453;2461;2469;2477;2530:3;2518:9;2509:7;2505:23;2501:33;2498:53;;;2547:1;2544;2537:12;2498:53;2570:29;2589:9;2570:29;:::i;:::-;2560:39;;2618:38;2652:2;2641:9;2637:18;2618:38;:::i;:::-;2608:48;;2675:38;2709:2;2698:9;2694:18;2675:38;:::i;:::-;2665:48;;2732:38;2766:2;2755:9;2751:18;2732:38;:::i;:::-;2722:48;;2789:39;2823:3;2812:9;2808:19;2789:39;:::i;:::-;2779:49;;2350:484;;;;;;;;:::o;2839:328::-;2916:6;2924;2932;2985:2;2973:9;2964:7;2960:23;2956:32;2953:52;;;3001:1;2998;2991:12;2953:52;3024:29;3043:9;3024:29;:::i;:::-;3014:39;;3072:38;3106:2;3095:9;3091:18;3072:38;:::i;:::-;3062:48;;3157:2;3146:9;3142:18;3129:32;3119:42;;2839:328;;;;;:::o;3361:316::-;3438:6;3446;3454;3507:2;3495:9;3486:7;3482:23;3478:32;3475:52;;;3523:1;3520;3513:12;3475:52;-1:-1:-1;;3546:23:1;;;3616:2;3601:18;;3588:32;;-1:-1:-1;3667:2:1;3652:18;;;3639:32;;3361:316;-1:-1:-1;3361:316:1:o;3682:118::-;3768:5;3761:13;3754:21;3747:5;3744:32;3734:60;;3790:1;3787;3780:12;3805:750;3897:6;3905;3913;3966:2;3954:9;3945:7;3941:23;3937:32;3934:52;;;3982:1;3979;3972:12;3934:52;4022:9;4009:23;4051:18;4092:2;4084:6;4081:14;4078:34;;;4108:1;4105;4098:12;4078:34;4146:6;4135:9;4131:22;4121:32;;4191:7;4184:4;4180:2;4176:13;4172:27;4162:55;;4213:1;4210;4203:12;4162:55;4253:2;4240:16;4279:2;4271:6;4268:14;4265:34;;;4295:1;4292;4285:12;4265:34;4350:7;4343:4;4333:6;4330:1;4326:14;4322:2;4318:23;4314:34;4311:47;4308:67;;;4371:1;4368;4361:12;4308:67;4402:4;4394:13;;;;-1:-1:-1;4426:6:1;-1:-1:-1;;4467:20:1;;4454:34;4497:28;4454:34;4497:28;:::i;:::-;4544:5;4534:15;;;3805:750;;;;;:::o;4560:180::-;4619:6;4672:2;4660:9;4651:7;4647:23;4643:32;4640:52;;;4688:1;4685;4678:12;4640:52;-1:-1:-1;4711:23:1;;4560:180;-1:-1:-1;4560:180:1:o;4953:241::-;5009:6;5062:2;5050:9;5041:7;5037:23;5033:32;5030:52;;;5078:1;5075;5068:12;5030:52;5117:9;5104:23;5136:28;5158:5;5136:28;:::i;5199:309::-;5264:6;5272;5325:2;5313:9;5304:7;5300:23;5296:32;5293:52;;;5341:1;5338;5331:12;5293:52;5380:9;5367:23;5399:28;5421:5;5399:28;:::i;5513:260::-;5581:6;5589;5642:2;5630:9;5621:7;5617:23;5613:32;5610:52;;;5658:1;5655;5648:12;5610:52;5681:29;5700:9;5681:29;:::i;:::-;5671:39;;5729:38;5763:2;5752:9;5748:18;5729:38;:::i;:::-;5719:48;;5513:260;;;;;:::o;6004:356::-;6206:2;6188:21;;;6225:18;;;6218:30;6284:34;6279:2;6264:18;;6257:62;6351:2;6336:18;;6004:356::o;6365:127::-;6426:10;6421:3;6417:20;6414:1;6407:31;6457:4;6454:1;6447:15;6481:4;6478:1;6471:15;6497:217;6537:1;6563;6553:132;;6607:10;6602:3;6598:20;6595:1;6588:31;6642:4;6639:1;6632:15;6670:4;6667:1;6660:15;6553:132;-1:-1:-1;6699:9:1;;6497:217::o;7547:127::-;7608:10;7603:3;7599:20;7596:1;7589:31;7639:4;7636:1;7629:15;7663:4;7660:1;7653:15;7679:168;7752:9;;;7783;;7800:15;;;7794:22;;7780:37;7770:71;;7821:18;;:::i;8115:184::-;8185:6;8238:2;8226:9;8217:7;8213:23;8209:32;8206:52;;;8254:1;8251;8244:12;8206:52;-1:-1:-1;8277:16:1;;8115:184;-1:-1:-1;8115:184:1:o;8583:245::-;8650:6;8703:2;8691:9;8682:7;8678:23;8674:32;8671:52;;;8719:1;8716;8709:12;8671:52;8751:9;8745:16;8770:28;8792:5;8770:28;:::i;9240:125::-;9305:9;;;9326:10;;;9323:36;;;9339:18;;:::i;10071:128::-;10138:9;;;10159:11;;;10156:37;;;10173:18;;:::i;12208:980::-;12470:4;12518:3;12507:9;12503:19;12549:6;12538:9;12531:25;12575:2;12613:6;12608:2;12597:9;12593:18;12586:34;12656:3;12651:2;12640:9;12636:18;12629:31;12680:6;12715;12709:13;12746:6;12738;12731:22;12784:3;12773:9;12769:19;12762:26;;12823:2;12815:6;12811:15;12797:29;;12844:1;12854:195;12868:6;12865:1;12862:13;12854:195;;;12933:13;;-1:-1:-1;;;;;12929:39:1;12917:52;;13024:15;;;;12989:12;;;;12965:1;12883:9;12854:195;;;-1:-1:-1;;;;;;;13105:32:1;;;;13100:2;13085:18;;13078:60;-1:-1:-1;;;13169:3:1;13154:19;13147:35;13066:3;12208:980;-1:-1:-1;;;12208:980:1:o;14015:306::-;14103:6;14111;14119;14172:2;14160:9;14151:7;14147:23;14143:32;14140:52;;;14188:1;14185;14178:12;14140:52;14217:9;14211:16;14201:26;;14267:2;14256:9;14252:18;14246:25;14236:35;;14311:2;14300:9;14296:18;14290:25;14280:35;;14015:306;;;;;:::o

Swarm Source

ipfs://250114eb8a24487b3050bb2b24149178ccdd43b03f133bd962e5358607735449

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.