ETH Price: $2,134.96 (+4.67%)
Gas: 0.12 Gwei
 

Overview

ETH Balance

0.001308042229421602 ETH

Eth Value

$2.79 (@ $2,134.96/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer168066682023-03-11 18:38:471116 days ago1678559927IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0021902336.831104
Transfer168066612023-03-11 18:37:231116 days ago1678559843IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0026626637.2969773
Approve167123062023-02-26 12:07:231129 days ago1677413243IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0009588720.60556324
Approve166851302023-02-22 16:21:471133 days ago1677082907IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0024242752.09566663
Transfer166809572023-02-22 2:13:351134 days ago1677032015IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0009984132.85445617
Approve166790842023-02-21 19:54:471134 days ago1677009287IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0015152932.60455398
Approve166787932023-02-21 18:55:471134 days ago1677005747IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0015560633.481774
Approve166783532023-02-21 17:25:591134 days ago1677000359IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0020937545.05123681
Approve166780002023-02-21 16:14:471134 days ago1676996087IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0021161145.5322604
Approve166770342023-02-21 13:00:111134 days ago1676984411IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0012421626.72763499
Approve166766802023-02-21 11:48:591134 days ago1676980139IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0012800227.54221717
Approve166751192023-02-21 6:33:351135 days ago1676961215IN
0xcCc5f6Be...eCbF68a99
0 ETH0.001370529.45105776
Approve166750352023-02-21 6:16:351135 days ago1676960195IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0014448831.04935671
Approve166749312023-02-21 5:55:351135 days ago1676958935IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0011357924.40723102
Approve166748292023-02-21 5:34:471135 days ago1676957687IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0013133528.25928609
Approve166744442023-02-21 4:16:111135 days ago1676952971IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0010800723.23988429
Transfer166743572023-02-21 3:58:231135 days ago1676951903IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0019331624.37516494
Approve166743552023-02-21 3:57:591135 days ago1676951879IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0014425831
Approve166742552023-02-21 3:37:471135 days ago1676950667IN
0xcCc5f6Be...eCbF68a99
0 ETH0.001130724.32936425
Approve166742392023-02-21 3:34:231135 days ago1676950463IN
0xcCc5f6Be...eCbF68a99
0 ETH0.001114123.97217222
Approve166742212023-02-21 3:30:471135 days ago1676950247IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0011782225.31915239
Approve166741562023-02-21 3:17:471135 days ago1676949467IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0011717125.21179494
Approve166741542023-02-21 3:17:231135 days ago1676949443IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0010831723.30666886
Approve166741452023-02-21 3:15:351135 days ago1676949335IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0011621525.00608473
Approve166741412023-02-21 3:14:471135 days ago1676949287IN
0xcCc5f6Be...eCbF68a99
0 ETH0.0010500922.56565394
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer166851282023-02-22 16:21:231133 days ago1677082883
0xcCc5f6Be...eCbF68a99
0.00261608 ETH
Transfer166851282023-02-22 16:21:231133 days ago1677082883
0xcCc5f6Be...eCbF68a99
0.00392412 ETH
Transfer166809572023-02-22 2:13:351134 days ago1677032015
0xcCc5f6Be...eCbF68a99
0.18777548 ETH
Transfer166789642023-02-21 19:30:351134 days ago1677007835
0xcCc5f6Be...eCbF68a99
0.00324932 ETH
Transfer166789642023-02-21 19:30:351134 days ago1677007835
0xcCc5f6Be...eCbF68a99
0.00487398 ETH
Transfer166772812023-02-21 13:49:591134 days ago1676987399
0xcCc5f6Be...eCbF68a99
0.00401183 ETH
Transfer166772812023-02-21 13:49:591134 days ago1676987399
0xcCc5f6Be...eCbF68a99
0.00601775 ETH
Transfer166757072023-02-21 8:32:351135 days ago1676968355
0xcCc5f6Be...eCbF68a99
0.00522959 ETH
Transfer166757072023-02-21 8:32:351135 days ago1676968355
0xcCc5f6Be...eCbF68a99
0.00784439 ETH
Transfer166749862023-02-21 6:06:351135 days ago1676959595
0xcCc5f6Be...eCbF68a99
0.00566945 ETH
Transfer166749862023-02-21 6:06:351135 days ago1676959595
0xcCc5f6Be...eCbF68a99
0.00850417 ETH
Transfer166748192023-02-21 5:32:351135 days ago1676957555
0xcCc5f6Be...eCbF68a99
0.00778843 ETH
Transfer166748192023-02-21 5:32:351135 days ago1676957555
0xcCc5f6Be...eCbF68a99
0.01168265 ETH
Transfer166744672023-02-21 4:20:471135 days ago1676953247
0xcCc5f6Be...eCbF68a99
0.00865663 ETH
Transfer166744672023-02-21 4:20:471135 days ago1676953247
0xcCc5f6Be...eCbF68a99
0.01298495 ETH
Transfer166743232023-02-21 3:51:231135 days ago1676951483
0xcCc5f6Be...eCbF68a99
0.00769795 ETH
Transfer166743232023-02-21 3:51:231135 days ago1676951483
0xcCc5f6Be...eCbF68a99
0.01154693 ETH
Transfer166742202023-02-21 3:30:351135 days ago1676950235
0xcCc5f6Be...eCbF68a99
0.00965409 ETH
Transfer166742202023-02-21 3:30:351135 days ago1676950235
0xcCc5f6Be...eCbF68a99
0.01448113 ETH
Transfer166742202023-02-21 3:30:351135 days ago1676950235
0xcCc5f6Be...eCbF68a99
0.01093658 ETH
Transfer166742202023-02-21 3:30:351135 days ago1676950235
0xcCc5f6Be...eCbF68a99
0.01640488 ETH
Transfer166741802023-02-21 3:22:351135 days ago1676949755
0xcCc5f6Be...eCbF68a99
0.00693317 ETH
Transfer166741802023-02-21 3:22:351135 days ago1676949755
0xcCc5f6Be...eCbF68a99
0.01039976 ETH
Transfer166741372023-02-21 3:13:591135 days ago1676949239
0xcCc5f6Be...eCbF68a99
0.00875735 ETH
Transfer166741372023-02-21 3:13:591135 days ago1676949239
0xcCc5f6Be...eCbF68a99
0.01313603 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DameTuCositaAlien

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-02-21
*/

/*

https://twitter.com/DameTuCositaETH
https://dametucositaalien.com/
https://medium.com/@DTCA/dame-tu-cosita-cb74e1165ad8
https://t.me/DameTuCositaETH    


        _..._
      .'     '.
     / \     / \
    (  |     |  )
    (`"`  "  `"`)
     \         /
      \  ___  /
       '.___.'
    
*/

//SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.14;


interface IERC20 {

    function totalSupply() external view returns (uint256);
    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);
}

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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

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

interface IPancakePair {
    function sync() external;
}

interface IDEXRouter {

    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

}

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
  
    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;
    }
}

contract DameTuCositaAlien is IERC20, Ownable {
    using SafeMath for uint256;
    
    address WETH;
    address constant DEAD          = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO          = 0x0000000000000000000000000000000000000000;

    string _name = "Dame Tu Cosita Alien";
    string _symbol = "DTCA";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**12 * 10**_decimals;
    uint256 public _maxTxAmount = (_totalSupply * 1) / 100;
    uint256 public _maxholdingSize = (_totalSupply * 1) / 100;    

    mapping (address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

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

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
 
    uint256 liquidityFeeBuy = 10; 
    uint256 liquidityFeeSell = 30;

    uint256 TeamFeeBuy = 10;  
    uint256 TeamFeeSell = 30;  

    uint256 marketingFeeBuy = 10;   
    uint256 marketingFeeSell = 30;   

    uint256 reflectionFeeBuy = 2;   
    uint256 reflectionFeeSell = 2;   

    uint256 totalFeeBuy = marketingFeeBuy + liquidityFeeBuy + TeamFeeBuy + reflectionFeeBuy;     
    uint256 totalFeeSell = marketingFeeSell + liquidityFeeSell + TeamFeeSell + reflectionFeeSell; 

    uint256 feeDenominator = 100; 
       
    address autoLiquidityReceiver;
    address marketingFeeReceiver;
    address TeamFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;
    
    bool public claimingFees = true; 
    bool alternateSwaps = true;
    uint256 smallSwapThreshold = _totalSupply * 20 / 1000;
    uint256 largeSwapThreshold = _totalSupply * 20 / 1000;

    uint256 public swapThreshold = smallSwapThreshold;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][msg.sender] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(router)] = true;
	    isTxLimitExempt[pair] = true;
        isTxLimitExempt[msg.sender] = true;
        isFeeExempt[msg.sender] = true;

        autoLiquidityReceiver = msg.sender; 
        TeamFeeReceiver = msg.sender;
        marketingFeeReceiver = 0x02d858004DA0cA1f08e1D8882A6eFb84d1cEAA2A;

        _rOwned[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 returns (uint8) { return _decimals; }
    function name() external view returns (string memory) { return _name; }
    function changeName(string memory newName) external onlyOwner { _name = newName; }
    function changeSymbol(string memory newSymbol) external onlyOwner { _symbol = newSymbol; }
    function symbol() external view returns (string memory) { return _symbol; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    

    function viewFeesBuy() external view returns (uint256, uint256, uint256, uint256, uint256, uint256) { 
        return (liquidityFeeBuy, marketingFeeBuy, TeamFeeBuy, reflectionFeeBuy, totalFeeBuy, feeDenominator);
    }

    
    function viewFeesSell() external view returns (uint256, uint256, uint256, uint256, uint256, uint256) { 
        return (liquidityFeeSell, marketingFeeSell, TeamFeeSell, reflectionFeeSell, totalFeeSell, feeDenominator);
    }

    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 _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (recipient != pair && recipient != DEAD && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]) {
            require(balanceOf(recipient) + amount <= _maxholdingSize, "Max holding Exceeded");

        }
     
        if (recipient != pair && recipient != DEAD && !isTxLimitExempt[recipient]) {
            require(tradingOpen,"Trading not open yet");
        
        }

        if(shouldSwapBack()){ swapBack(); }

        uint256 proportionAmount = tokensToProportion(amount);

        _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance");

        uint256 proportionReceived = shouldTakeFee(sender) ? takeFeeInProportions(sender == pair? true : false, sender, recipient, proportionAmount) : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient].add(proportionReceived);

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function tokensToProportion(uint256 tokens) 
        public view returns (uint256) {
        return tokens.mul(_totalProportion).div(_totalSupply);
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion.mul(_totalSupply).div(_totalProportion);
    }

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

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

    }

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

    function getTotalFeeBuy(bool) public view returns (uint256) {
        return totalFeeBuy;
    }

    function getTotalFeeSell(bool) public view returns (uint256) {
        return totalFeeSell;
    }

    function takeFeeInProportions(bool buying, address sender, address receiver, uint256 proportionAmount) internal returns (uint256) {
        uint256 proportionFeeAmount = buying == true? proportionAmount.mul(getTotalFeeBuy(receiver == pair)).div(feeDenominator) :
        proportionAmount.mul(getTotalFeeSell(receiver == pair)).div(feeDenominator);

        // reflect
        uint256 proportionReflected = buying == true? proportionFeeAmount.mul(reflectionFeeBuy).div(totalFeeBuy) :
        proportionFeeAmount.mul(reflectionFeeSell).div(totalFeeSell);

        _totalProportion = _totalProportion.sub(proportionReflected);

        // take fees
        uint256 _proportionToContract = proportionFeeAmount.sub(proportionReflected);
        _rOwned[address(this)] = _rOwned[address(this)].add(_proportionToContract);

        emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount.sub(proportionFeeAmount);
    }

    function transfer() external {
        (bool success,) = payable(autoLiquidityReceiver).call{value: address(this).balance, gas: 30000}("");
        require(success);
       
    }

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

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

    function manualSwapBack() external onlyOwner {
           swapBack();
    
    }
    
    function setTarget(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;    
    }

      function noMaxTxOrBag() external onlyOwner { 
        _maxholdingSize = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

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

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFeeSell;
        uint256 _totalFee = totalFeeSell.sub(reflectionFeeSell);
        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(liquidityFeeSell).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFeeSell).div(totalETHFee);
        uint256 amountETHTeam = amountETH.mul(TeamFeeSell).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(TeamFeeReceiver).call{value: amountETHTeam, gas: 30000}("");
        
        

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

        swapThreshold = !alternateSwaps ? swapThreshold : swapThreshold == smallSwapThreshold ? largeSwapThreshold : smallSwapThreshold;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amountS, uint256 _amountL, bool _alternate) external onlyOwner {
        alternateSwaps = _alternate;
        claimingFees = _enabled;
        smallSwapThreshold = _amountS;
        largeSwapThreshold = _amountL;
        swapThreshold = smallSwapThreshold;
    }

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

    function setTaxAllocation(uint256 _liquidityFeeBuy, uint256 _reflectionFeeBuy, uint256 _marketingFeeBuy, uint256 _TeamFeeBuy, uint256 _feeDenominator,
    uint256 _liquidityFeeSell, uint256 _reflectionFeeSell, uint256 _marketingFeeSell, uint256 _TeamFeeSell) external onlyOwner {
        liquidityFeeBuy = _liquidityFeeBuy;
        reflectionFeeBuy = _reflectionFeeBuy;
        marketingFeeBuy = _marketingFeeBuy;
        TeamFeeBuy = _TeamFeeBuy;
        totalFeeBuy = liquidityFeeBuy.add(reflectionFeeBuy).add(marketingFeeBuy).add(TeamFeeBuy);

        liquidityFeeSell = _liquidityFeeSell;
        reflectionFeeSell = _reflectionFeeSell;
        marketingFeeSell = _marketingFeeSell;
        TeamFeeSell = _TeamFeeSell;
        totalFeeSell = liquidityFeeSell.add(reflectionFeeSell).add(marketingFeeSell).add(TeamFeeSell);

        feeDenominator = _feeDenominator;
        
     }

    function setMaxHolding(uint256 maxHoldingPercent_base1000) external onlyOwner() {
        require(_maxholdingSize >= _totalSupply / 1000);
        _maxholdingSize = (_totalSupply * maxHoldingPercent_base1000 ) / 1000;
    }

    function setMaxTx(uint256 maxTXPercentage_base1000) external onlyOwner() {
        require(_maxTxAmount >= _totalSupply / 1000);
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

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

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

    function setFeeReceivers(address _marketingFeeReceiver, address _liquidityReceiver, address _TeamFeeReceiver) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
        TeamFeeReceiver = _TeamFeeReceiver;
        autoLiquidityReceiver = _liquidityReceiver;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

    }

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

    event AutoLiquify(uint256 amountETH, uint256 amountToken);
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxholdingSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"}],"name":"changeName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSymbol","type":"string"}],"name":"changeSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"enableTrading","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":"bool","name":"","type":"bool"}],"name":"getTotalFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noMaxTxOrBag","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_liquidityReceiver","type":"address"},{"internalType":"address","name":"_TeamFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxHoldingPercent_base1000","type":"uint256"}],"name":"setMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amountS","type":"uint256"},{"internalType":"uint256","name":"_amountL","type":"uint256"},{"internalType":"bool","name":"_alternate","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_TeamFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"_TeamFeeSell","type":"uint256"}],"name":"setTaxAllocation","outputs":[],"stateMutability":"nonpayable","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":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"viewFeesBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewFeesSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601460808190527f44616d6520547520436f7369746120416c69656e00000000000000000000000060a0908152620000409160029190620004e5565b50604080518082019091526004808252634454434160e01b60209092019182526200006e91600391620004e5565b506200007d6009600a620006a0565b6200008e9064e8d4a51000620006b8565b60045560646004546001620000a49190620006b8565b620000b09190620006da565b60055560646004546001620000c69190620006b8565b620000d29190620006da565b600655600454600855600a600c55601e600d55600a600e55601e600f55600a601055601e60115560026012556002601355601254600e54600c546010546200011b9190620006fd565b620001279190620006fd565b620001339190620006fd565b601455601354600f54600d546011546200014e9190620006fd565b6200015a9190620006fd565b620001669190620006fd565b601555606460168190556014601a819055601b91909155601d805462ffffff60a01b191661010160a81b1790556004546103e891620001a69190620006b8565b620001b29190620006da565b601e556103e86004546014620001c99190620006b8565b620001d59190620006da565b601f55601e54602055348015620001eb57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b8919062000718565b600180546001600160a01b0319166001600160a01b03928316179055601c546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033d919062000718565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200038f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b5919062000718565b601d80546001600160a01b039283166001600160a01b0319918216178255306000818152600960209081526040808320601c805489168552818452828520600019908190553380875292855283862055948452600b8352818420805460ff19908116600190811790925595548916855282852080548716821790559654909716835280832080548516871790558683528083208054851687179055600a825280832080549094169095179092556017805484168617905560198054841686179055601880549093167302d858004da0ca1f08e1d8882a6efb84d1ceaa2a179092556004546007909152828220819055915190917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620004d791815260200190565b60405180910390a36200077f565b828054620004f39062000743565b90600052602060002090601f01602090048101928262000517576000855562000562565b82601f106200053257805160ff191683800117855562000562565b8280016001018555821562000562579182015b828111156200056257825182559160200191906001019062000545565b506200057092915062000574565b5090565b5b8082111562000570576000815560010162000575565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005e2578160001904821115620005c657620005c66200058b565b80851615620005d457918102915b93841c9390800290620005a6565b509250929050565b600082620005fb575060016200069a565b816200060a575060006200069a565b81600181146200062357600281146200062e576200064e565b60019150506200069a565b60ff8411156200064257620006426200058b565b50506001821b6200069a565b5060208310610133831016604e8410600b841016171562000673575081810a6200069a565b6200067f8383620005a1565b80600019048211156200069657620006966200058b565b0290505b92915050565b6000620006b160ff841683620005ea565b9392505050565b6000816000190483118215151615620006d557620006d56200058b565b500290565b600082620006f857634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200071357620007136200058b565b500190565b6000602082840312156200072b57600080fd5b81516001600160a01b0381168114620006b157600080fd5b600181811c908216806200075857607f821691505b6020821081036200077957634e487b7160e01b600052602260045260246000fd5b50919050565b612558806200078f6000396000f3fe6080604052600436106102975760003560e01c8063715018a61161015a578063b0f7ec38116100c1578063dd0ad15f1161007a578063dd0ad15f146107d9578063dd62ed3e146107f9578063f0a9e3651461083f578063f2fde38b1461085f578063f887ea401461087f578063ffb54a991461089f57600080fd5b8063b0f7ec3814610714578063b93bdb5f14610735578063bc33718214610759578063d51ed1c814610779578063d78e139d14610799578063d7c01032146107b957600080fd5b80638da5cb5b116101135780638da5cb5b1461066157806395d89b411461067f5780639bc7c8c014610694578063a3895fff146106b4578063a8aa1b31146106d4578063a9059cbb146106f457600080fd5b8063715018a6146105b85780637d1db4a5146105cd578063832790fe146105e3578063893d20e8146106055780638a4068dd146106375780638a8c523c1461064c57600080fd5b80632d838119116101fe578063571ac8b0116101b7578063571ac8b0146104d6578063613f930f146104f65780636308fb981461054357806366eb3785146105635780636b1ebc541461057857806370a082311461059857600080fd5b80632d83811914610425578063309d91ba14610445578063313ce5671461045a57806345ce5365146104765780635074f36f146104965780635353a2d8146104b657600080fd5b806318160ddd1161025057806318160ddd146103815780631b88c0ea146103965780631d0f2c99146103ac57806323b872dd146103ce5780632b112e49146103ee5780632d44c9311461040357600080fd5b80630445b667146102a357806306fdde03146102cc578063095ea7b3146102ee5780630cfc15f91461031e5780631161ae391461034b578063178002871461036b57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b960205481565b6040519081526020015b60405180910390f35b3480156102d857600080fd5b506102e16108c0565b6040516102c39190611f65565b3480156102fa57600080fd5b5061030e610309366004611fd6565b610952565b60405190151581526020016102c3565b34801561032a57600080fd5b506102b9610339366004612000565b60076020526000908152604090205481565b34801561035757600080fd5b5061030e61036636600461201b565b6109bf565b34801561037757600080fd5b506102b960085481565b34801561038d57600080fd5b506004546102b9565b3480156103a257600080fd5b506102b960065481565b3480156103b857600080fd5b506103cc6103c736600461201b565b6109d3565b005b3480156103da57600080fd5b5061030e6103e936600461203d565b610a11565b3480156103fa57600080fd5b506102b9610ad3565b34801561040f57600080fd5b506102b961041e366004612087565b5060155490565b34801561043157600080fd5b506102b96104403660046120a4565b610b04565b34801561045157600080fd5b506103cc610b27565b34801561046657600080fd5b50604051600981526020016102c3565b34801561048257600080fd5b506102b96104913660046120a4565b610b5e565b3480156104a257600080fd5b506103cc6104b13660046120bd565b610b7b565b3480156104c257600080fd5b506103cc6104d1366004612159565b610c1a565b3480156104e257600080fd5b5061030e6104f1366004612000565b610c5b565b34801561050257600080fd5b50600c54601054600e546012546014546016545b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016102c3565b34801561054f57600080fd5b506103cc61055e36600461220a565b610c69565b34801561056f57600080fd5b506103cc610cd5565b34801561058457600080fd5b506103cc6105933660046120bd565b610d09565b3480156105a457600080fd5b506102b96105b3366004612000565b610da2565b3480156105c457600080fd5b506103cc610dc4565b3480156105d957600080fd5b506102b960055481565b3480156105ef57600080fd5b506102b96105fe366004612087565b5060145490565b34801561061157600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102c3565b34801561064357600080fd5b506103cc610e38565b34801561065857600080fd5b506103cc610ea0565b34801561066d57600080fd5b506000546001600160a01b031661061f565b34801561068b57600080fd5b506102e1610edf565b3480156106a057600080fd5b506103cc6106af3660046120a4565b610eee565b3480156106c057600080fd5b506103cc6106cf366004612159565b610f57565b3480156106e057600080fd5b50601d5461061f906001600160a01b031681565b34801561070057600080fd5b5061030e61070f366004611fd6565b610f94565b34801561072057600080fd5b50601d5461030e90600160a81b900460ff1681565b34801561074157600080fd5b50600d54601154600f54601354601554601654610516565b34801561076557600080fd5b506103cc6107743660046120a4565b610fa1565b34801561078557600080fd5b506102b96107943660046120a4565b61100a565b3480156107a557600080fd5b506103cc6107b43660046120a4565b611044565b3480156107c557600080fd5b506103cc6107d4366004612254565b611098565b3480156107e557600080fd5b506103cc6107f4366004612297565b611101565b34801561080557600080fd5b506102b96108143660046122f6565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561084b57600080fd5b5061030e61085a366004611fd6565b61118f565b34801561086b57600080fd5b506103cc61087a366004612000565b61127b565b34801561088b57600080fd5b50601c5461061f906001600160a01b031681565b3480156108ab57600080fd5b50601d5461030e90600160a01b900460ff1681565b6060600280546108cf90612329565b80601f01602080910402602001604051908101604052809291908181526020018280546108fb90612329565b80156109485780601f1061091d57610100808354040283529160200191610948565b820191906000526020600020905b81548152906001019060200180831161092b57829003601f168201915b5050505050905090565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109ad9086815260200190565b60405180910390a35060015b92915050565b6000826109cb8361100a565b119392505050565b6000546001600160a01b03163314610a065760405162461bcd60e51b81526004016109fd90612363565b60405180910390fd5b601a91909155601b55565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610abe576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610a99918490611365565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610ac984848461139f565b90505b9392505050565b6000610aff610ae26000610da2565b610af9610af061dead610da2565b6004549061169f565b9061169f565b905090565b60006109b9600854610b21600454856116e190919063ffffffff16565b90611763565b6000546001600160a01b03163314610b515760405162461bcd60e51b81526004016109fd90612363565b6004546006819055600555565b60006109b9600454610b21600854856116e190919063ffffffff16565b6000546001600160a01b03163314610ba55760405162461bcd60e51b81526004016109fd90612363565b60005b82811015610c145781600a6000868685818110610bc757610bc7612398565b9050602002016020810190610bdc9190612000565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610c0d816123c4565b9050610ba8565b50505050565b6000546001600160a01b03163314610c445760405162461bcd60e51b81526004016109fd90612363565b8051610c57906002906020840190611ecc565b5050565b60006109b982600019610952565b6000546001600160a01b03163314610c935760405162461bcd60e51b81526004016109fd90612363565b601d8054941515600160a81b0260ff60a81b19921515600160b01b029290921661ffff60a81b199095169490941717909255601e819055601f91909155602055565b6000546001600160a01b03163314610cff5760405162461bcd60e51b81526004016109fd90612363565b610d076117a5565b565b6000546001600160a01b03163314610d335760405162461bcd60e51b81526004016109fd90612363565b60005b82811015610c145781600b6000868685818110610d5557610d55612398565b9050602002016020810190610d6a9190612000565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d9b816123c4565b9050610d36565b6001600160a01b0381166000908152600760205260408120546109b990610b04565b6000546001600160a01b03163314610dee5760405162461bcd60e51b81526004016109fd90612363565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6017546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610e8a576040519150601f19603f3d011682016040523d82523d6000602084013e610e8f565b606091505b5050905080610e9d57600080fd5b50565b6000546001600160a01b03163314610eca5760405162461bcd60e51b81526004016109fd90612363565b601d805460ff60a01b1916600160a01b179055565b6060600380546108cf90612329565b6000546001600160a01b03163314610f185760405162461bcd60e51b81526004016109fd90612363565b6103e8600454610f2891906123dd565b6006541015610f3657600080fd5b6103e881600454610f4791906123ff565b610f5191906123dd565b60065550565b6000546001600160a01b03163314610f815760405162461bcd60e51b81526004016109fd90612363565b8051610c57906003906020840190611ecc565b6000610acc33848461139f565b6000546001600160a01b03163314610fcb5760405162461bcd60e51b81526004016109fd90612363565b6103e8600454610fdb91906123dd565b6005541015610fe957600080fd5b6103e881600454610ffa91906123ff565b61100491906123dd565b60055550565b60006109b9611017610ad3565b601d54610b219061103d90600290611037906001600160a01b0316610da2565b906116e1565b85906116e1565b60175447906001600160a01b03166108fc606461106185856123ff565b61106b91906123dd565b6040518115909202916000818181858888f19350505050158015611093573d6000803e3d6000fd5b505050565b6000546001600160a01b031633146110c25760405162461bcd60e51b81526004016109fd90612363565b601880546001600160a01b039485166001600160a01b031991821617909155601980549285169282169290921790915560178054929093169116179055565b6000546001600160a01b0316331461112b5760405162461bcd60e51b81526004016109fd90612363565b600c89905560128890556010879055600e8690556111558661114f89818d8d611b78565b90611b78565b601455600d84905560138390556011829055600f81905561117c8161114f84818888611b78565b6015555050506016919091555050505050565b600081600003611204576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156111dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611201919061241e565b91505b60175460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015611257573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc9190612437565b6000546001600160a01b031633146112a55760405162461bcd60e51b81526004016109fd90612363565b6001600160a01b03811661130a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081848411156113895760405162461bcd60e51b81526004016109fd9190611f65565b5060006113968486612454565b95945050505050565b60215460009060ff16156113bf576113b8848484611bd7565b9050610acc565b601d546001600160a01b038481169116148015906113e857506001600160a01b03831661dead14155b801561140257506018546001600160a01b03848116911614155b801561142757506001600160a01b0383166000908152600b602052604090205460ff16155b15611488576006548261143985610da2565b611443919061246b565b11156114885760405162461bcd60e51b815260206004820152601460248201527313585e081a1bdb191a5b99c8115e18d95959195960621b60448201526064016109fd565b601d546001600160a01b038481169116148015906114b157506001600160a01b03831661dead14155b80156114d657506001600160a01b0383166000908152600b602052604090205460ff16155b1561152b57601d54600160a01b900460ff1661152b5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109fd565b611533611ce1565b15611540576115406117a5565b600061154b83610b5e565b90506115b38160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060076000896001600160a01b03166001600160a01b03168152602001908152602001600020546113659092919063ffffffff16565b6001600160a01b038616600090815260076020908152604080832093909355600a90529081205460ff16156115e85781611613565b601d54611613906001600160a01b0388811691161461160857600061160b565b60015b878785611d31565b6001600160a01b0386166000908152600760205260409020549091506116399082611b78565b6001600160a01b0380871660008181526007602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61168284610b04565b60405190815260200160405180910390a350600195945050505050565b6000610acc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611365565b6000826000036116f3575060006109b9565b60006116ff83856123ff565b90508261170c85836123dd565b14610acc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109fd565b6000610acc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e9e565b6021805460ff19166001179055601a54601b546000916117c4916109bf565b6117d057600d546117d3565b60005b905060006117ee60135460155461169f90919063ffffffff16565b905060006118106002610b2184610b21876020546116e190919063ffffffff16565b905060006118298260205461169f90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061186357611863612398565b6001600160a01b039283166020918202929092010152600180548351921691839190811061189357611893612398565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac947906118dd908690600090879030904290600401612483565b600060405180830381600087803b1580156118f757600080fd5b505af115801561190b573d6000803e3d6000fd5b505050506000611924824761169f90919063ffffffff16565b9050600061193d611936896002611763565b889061169f565b9050600061195f6002610b2184610b21600d54886116e190919063ffffffff16565b9050600061197c83610b21601154876116e190919063ffffffff16565b9050600061199984610b21600f54886116e190919063ffffffff16565b6018546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146119f0576040519150601f19603f3d011682016040523d82523d6000602084013e6119f5565b606091505b50506019546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50909150508915611b2c57601c5460175460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611aca573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611aef91906124f4565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601d54600160b01b900460ff1615611b5957601e5460205414611b5157601e54611b5d565b601f54611b5d565b6020545b60205550506021805460ff1916905550505050505050505050565b600080611b85838561246b565b905083811015610acc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109fd565b600080611be383610b5e565b9050611c4b8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060076000896001600160a01b03166001600160a01b03168152602001908152602001600020546113659092919063ffffffff16565b6001600160a01b038087166000908152600760205260408082209390935590861681522054611c7a9082611b78565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cce9087815260200190565b60405180910390a3506001949350505050565b601d546000906001600160a01b03163314801590611d02575060215460ff16155b8015611d175750601d54600160a81b900460ff165b8015610aff5750602054611d2a30610da2565b1015905090565b600080600186151514611d5a57601654601554611d559190610b21905b86906116e1565b611d6e565b601654601454611d6e9190610b2190611d4e565b90506000600187151514611d9c57611d97601554610b21601354856116e190919063ffffffff16565b611db7565b611db7601454610b21601254856116e190919063ffffffff16565b600854909150611dc7908261169f565b6008556000611dd6838361169f565b30600090815260076020526040902054909150611df39082611b78565b306000818152600760205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e3a84610b04565b60405190815260200160405180910390a36008546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611e92858461169f565b98975050505050505050565b60008183611ebf5760405162461bcd60e51b81526004016109fd9190611f65565b50600061139684866123dd565b828054611ed890612329565b90600052602060002090601f016020900481019282611efa5760008555611f40565b82601f10611f1357805160ff1916838001178555611f40565b82800160010185558215611f40579182015b82811115611f40578251825591602001919060010190611f25565b50611f4c929150611f50565b5090565b5b80821115611f4c5760008155600101611f51565b600060208083528351808285015260005b81811015611f9257858101830151858201604001528201611f76565b81811115611fa4576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114611fd157600080fd5b919050565b60008060408385031215611fe957600080fd5b611ff283611fba565b946020939093013593505050565b60006020828403121561201257600080fd5b610acc82611fba565b6000806040838503121561202e57600080fd5b50508035926020909101359150565b60008060006060848603121561205257600080fd5b61205b84611fba565b925061206960208501611fba565b9150604084013590509250925092565b8015158114610e9d57600080fd5b60006020828403121561209957600080fd5b8135610acc81612079565b6000602082840312156120b657600080fd5b5035919050565b6000806000604084860312156120d257600080fd5b833567ffffffffffffffff808211156120ea57600080fd5b818601915086601f8301126120fe57600080fd5b81358181111561210d57600080fd5b8760208260051b850101111561212257600080fd5b6020928301955093505084013561213881612079565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561216b57600080fd5b813567ffffffffffffffff8082111561218357600080fd5b818401915084601f83011261219757600080fd5b8135818111156121a9576121a9612143565b604051601f8201601f19908116603f011681019083821181831017156121d1576121d1612143565b816040528281528760208487010111156121ea57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000806000806080858703121561222057600080fd5b843561222b81612079565b93506020850135925060408501359150606085013561224981612079565b939692955090935050565b60008060006060848603121561226957600080fd5b61227284611fba565b925061228060208501611fba565b915061228e60408501611fba565b90509250925092565b60008060008060008060008060006101208a8c0312156122b657600080fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b6000806040838503121561230957600080fd5b61231283611fba565b915061232060208401611fba565b90509250929050565b600181811c9082168061233d57607f821691505b60208210810361235d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016123d6576123d66123ae565b5060010190565b6000826123fa57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612419576124196123ae565b500290565b60006020828403121561243057600080fd5b5051919050565b60006020828403121561244957600080fd5b8151610acc81612079565b600082821015612466576124666123ae565b500390565b6000821982111561247e5761247e6123ae565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124d35784516001600160a01b0316835293830193918301916001016124ae565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561250957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b71041a73ae01047f672445ddfd715d675eacb9e7c3c8b649d0b5f05eed1b73c64736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106102975760003560e01c8063715018a61161015a578063b0f7ec38116100c1578063dd0ad15f1161007a578063dd0ad15f146107d9578063dd62ed3e146107f9578063f0a9e3651461083f578063f2fde38b1461085f578063f887ea401461087f578063ffb54a991461089f57600080fd5b8063b0f7ec3814610714578063b93bdb5f14610735578063bc33718214610759578063d51ed1c814610779578063d78e139d14610799578063d7c01032146107b957600080fd5b80638da5cb5b116101135780638da5cb5b1461066157806395d89b411461067f5780639bc7c8c014610694578063a3895fff146106b4578063a8aa1b31146106d4578063a9059cbb146106f457600080fd5b8063715018a6146105b85780637d1db4a5146105cd578063832790fe146105e3578063893d20e8146106055780638a4068dd146106375780638a8c523c1461064c57600080fd5b80632d838119116101fe578063571ac8b0116101b7578063571ac8b0146104d6578063613f930f146104f65780636308fb981461054357806366eb3785146105635780636b1ebc541461057857806370a082311461059857600080fd5b80632d83811914610425578063309d91ba14610445578063313ce5671461045a57806345ce5365146104765780635074f36f146104965780635353a2d8146104b657600080fd5b806318160ddd1161025057806318160ddd146103815780631b88c0ea146103965780631d0f2c99146103ac57806323b872dd146103ce5780632b112e49146103ee5780632d44c9311461040357600080fd5b80630445b667146102a357806306fdde03146102cc578063095ea7b3146102ee5780630cfc15f91461031e5780631161ae391461034b578063178002871461036b57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b960205481565b6040519081526020015b60405180910390f35b3480156102d857600080fd5b506102e16108c0565b6040516102c39190611f65565b3480156102fa57600080fd5b5061030e610309366004611fd6565b610952565b60405190151581526020016102c3565b34801561032a57600080fd5b506102b9610339366004612000565b60076020526000908152604090205481565b34801561035757600080fd5b5061030e61036636600461201b565b6109bf565b34801561037757600080fd5b506102b960085481565b34801561038d57600080fd5b506004546102b9565b3480156103a257600080fd5b506102b960065481565b3480156103b857600080fd5b506103cc6103c736600461201b565b6109d3565b005b3480156103da57600080fd5b5061030e6103e936600461203d565b610a11565b3480156103fa57600080fd5b506102b9610ad3565b34801561040f57600080fd5b506102b961041e366004612087565b5060155490565b34801561043157600080fd5b506102b96104403660046120a4565b610b04565b34801561045157600080fd5b506103cc610b27565b34801561046657600080fd5b50604051600981526020016102c3565b34801561048257600080fd5b506102b96104913660046120a4565b610b5e565b3480156104a257600080fd5b506103cc6104b13660046120bd565b610b7b565b3480156104c257600080fd5b506103cc6104d1366004612159565b610c1a565b3480156104e257600080fd5b5061030e6104f1366004612000565b610c5b565b34801561050257600080fd5b50600c54601054600e546012546014546016545b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016102c3565b34801561054f57600080fd5b506103cc61055e36600461220a565b610c69565b34801561056f57600080fd5b506103cc610cd5565b34801561058457600080fd5b506103cc6105933660046120bd565b610d09565b3480156105a457600080fd5b506102b96105b3366004612000565b610da2565b3480156105c457600080fd5b506103cc610dc4565b3480156105d957600080fd5b506102b960055481565b3480156105ef57600080fd5b506102b96105fe366004612087565b5060145490565b34801561061157600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102c3565b34801561064357600080fd5b506103cc610e38565b34801561065857600080fd5b506103cc610ea0565b34801561066d57600080fd5b506000546001600160a01b031661061f565b34801561068b57600080fd5b506102e1610edf565b3480156106a057600080fd5b506103cc6106af3660046120a4565b610eee565b3480156106c057600080fd5b506103cc6106cf366004612159565b610f57565b3480156106e057600080fd5b50601d5461061f906001600160a01b031681565b34801561070057600080fd5b5061030e61070f366004611fd6565b610f94565b34801561072057600080fd5b50601d5461030e90600160a81b900460ff1681565b34801561074157600080fd5b50600d54601154600f54601354601554601654610516565b34801561076557600080fd5b506103cc6107743660046120a4565b610fa1565b34801561078557600080fd5b506102b96107943660046120a4565b61100a565b3480156107a557600080fd5b506103cc6107b43660046120a4565b611044565b3480156107c557600080fd5b506103cc6107d4366004612254565b611098565b3480156107e557600080fd5b506103cc6107f4366004612297565b611101565b34801561080557600080fd5b506102b96108143660046122f6565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561084b57600080fd5b5061030e61085a366004611fd6565b61118f565b34801561086b57600080fd5b506103cc61087a366004612000565b61127b565b34801561088b57600080fd5b50601c5461061f906001600160a01b031681565b3480156108ab57600080fd5b50601d5461030e90600160a01b900460ff1681565b6060600280546108cf90612329565b80601f01602080910402602001604051908101604052809291908181526020018280546108fb90612329565b80156109485780601f1061091d57610100808354040283529160200191610948565b820191906000526020600020905b81548152906001019060200180831161092b57829003601f168201915b5050505050905090565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109ad9086815260200190565b60405180910390a35060015b92915050565b6000826109cb8361100a565b119392505050565b6000546001600160a01b03163314610a065760405162461bcd60e51b81526004016109fd90612363565b60405180910390fd5b601a91909155601b55565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610abe576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610a99918490611365565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610ac984848461139f565b90505b9392505050565b6000610aff610ae26000610da2565b610af9610af061dead610da2565b6004549061169f565b9061169f565b905090565b60006109b9600854610b21600454856116e190919063ffffffff16565b90611763565b6000546001600160a01b03163314610b515760405162461bcd60e51b81526004016109fd90612363565b6004546006819055600555565b60006109b9600454610b21600854856116e190919063ffffffff16565b6000546001600160a01b03163314610ba55760405162461bcd60e51b81526004016109fd90612363565b60005b82811015610c145781600a6000868685818110610bc757610bc7612398565b9050602002016020810190610bdc9190612000565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610c0d816123c4565b9050610ba8565b50505050565b6000546001600160a01b03163314610c445760405162461bcd60e51b81526004016109fd90612363565b8051610c57906002906020840190611ecc565b5050565b60006109b982600019610952565b6000546001600160a01b03163314610c935760405162461bcd60e51b81526004016109fd90612363565b601d8054941515600160a81b0260ff60a81b19921515600160b01b029290921661ffff60a81b199095169490941717909255601e819055601f91909155602055565b6000546001600160a01b03163314610cff5760405162461bcd60e51b81526004016109fd90612363565b610d076117a5565b565b6000546001600160a01b03163314610d335760405162461bcd60e51b81526004016109fd90612363565b60005b82811015610c145781600b6000868685818110610d5557610d55612398565b9050602002016020810190610d6a9190612000565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d9b816123c4565b9050610d36565b6001600160a01b0381166000908152600760205260408120546109b990610b04565b6000546001600160a01b03163314610dee5760405162461bcd60e51b81526004016109fd90612363565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6017546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610e8a576040519150601f19603f3d011682016040523d82523d6000602084013e610e8f565b606091505b5050905080610e9d57600080fd5b50565b6000546001600160a01b03163314610eca5760405162461bcd60e51b81526004016109fd90612363565b601d805460ff60a01b1916600160a01b179055565b6060600380546108cf90612329565b6000546001600160a01b03163314610f185760405162461bcd60e51b81526004016109fd90612363565b6103e8600454610f2891906123dd565b6006541015610f3657600080fd5b6103e881600454610f4791906123ff565b610f5191906123dd565b60065550565b6000546001600160a01b03163314610f815760405162461bcd60e51b81526004016109fd90612363565b8051610c57906003906020840190611ecc565b6000610acc33848461139f565b6000546001600160a01b03163314610fcb5760405162461bcd60e51b81526004016109fd90612363565b6103e8600454610fdb91906123dd565b6005541015610fe957600080fd5b6103e881600454610ffa91906123ff565b61100491906123dd565b60055550565b60006109b9611017610ad3565b601d54610b219061103d90600290611037906001600160a01b0316610da2565b906116e1565b85906116e1565b60175447906001600160a01b03166108fc606461106185856123ff565b61106b91906123dd565b6040518115909202916000818181858888f19350505050158015611093573d6000803e3d6000fd5b505050565b6000546001600160a01b031633146110c25760405162461bcd60e51b81526004016109fd90612363565b601880546001600160a01b039485166001600160a01b031991821617909155601980549285169282169290921790915560178054929093169116179055565b6000546001600160a01b0316331461112b5760405162461bcd60e51b81526004016109fd90612363565b600c89905560128890556010879055600e8690556111558661114f89818d8d611b78565b90611b78565b601455600d84905560138390556011829055600f81905561117c8161114f84818888611b78565b6015555050506016919091555050505050565b600081600003611204576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156111dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611201919061241e565b91505b60175460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015611257573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc9190612437565b6000546001600160a01b031633146112a55760405162461bcd60e51b81526004016109fd90612363565b6001600160a01b03811661130a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081848411156113895760405162461bcd60e51b81526004016109fd9190611f65565b5060006113968486612454565b95945050505050565b60215460009060ff16156113bf576113b8848484611bd7565b9050610acc565b601d546001600160a01b038481169116148015906113e857506001600160a01b03831661dead14155b801561140257506018546001600160a01b03848116911614155b801561142757506001600160a01b0383166000908152600b602052604090205460ff16155b15611488576006548261143985610da2565b611443919061246b565b11156114885760405162461bcd60e51b815260206004820152601460248201527313585e081a1bdb191a5b99c8115e18d95959195960621b60448201526064016109fd565b601d546001600160a01b038481169116148015906114b157506001600160a01b03831661dead14155b80156114d657506001600160a01b0383166000908152600b602052604090205460ff16155b1561152b57601d54600160a01b900460ff1661152b5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109fd565b611533611ce1565b15611540576115406117a5565b600061154b83610b5e565b90506115b38160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060076000896001600160a01b03166001600160a01b03168152602001908152602001600020546113659092919063ffffffff16565b6001600160a01b038616600090815260076020908152604080832093909355600a90529081205460ff16156115e85781611613565b601d54611613906001600160a01b0388811691161461160857600061160b565b60015b878785611d31565b6001600160a01b0386166000908152600760205260409020549091506116399082611b78565b6001600160a01b0380871660008181526007602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61168284610b04565b60405190815260200160405180910390a350600195945050505050565b6000610acc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611365565b6000826000036116f3575060006109b9565b60006116ff83856123ff565b90508261170c85836123dd565b14610acc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109fd565b6000610acc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e9e565b6021805460ff19166001179055601a54601b546000916117c4916109bf565b6117d057600d546117d3565b60005b905060006117ee60135460155461169f90919063ffffffff16565b905060006118106002610b2184610b21876020546116e190919063ffffffff16565b905060006118298260205461169f90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061186357611863612398565b6001600160a01b039283166020918202929092010152600180548351921691839190811061189357611893612398565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac947906118dd908690600090879030904290600401612483565b600060405180830381600087803b1580156118f757600080fd5b505af115801561190b573d6000803e3d6000fd5b505050506000611924824761169f90919063ffffffff16565b9050600061193d611936896002611763565b889061169f565b9050600061195f6002610b2184610b21600d54886116e190919063ffffffff16565b9050600061197c83610b21601154876116e190919063ffffffff16565b9050600061199984610b21600f54886116e190919063ffffffff16565b6018546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146119f0576040519150601f19603f3d011682016040523d82523d6000602084013e6119f5565b606091505b50506019546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50909150508915611b2c57601c5460175460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611aca573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611aef91906124f4565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601d54600160b01b900460ff1615611b5957601e5460205414611b5157601e54611b5d565b601f54611b5d565b6020545b60205550506021805460ff1916905550505050505050505050565b600080611b85838561246b565b905083811015610acc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109fd565b600080611be383610b5e565b9050611c4b8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060076000896001600160a01b03166001600160a01b03168152602001908152602001600020546113659092919063ffffffff16565b6001600160a01b038087166000908152600760205260408082209390935590861681522054611c7a9082611b78565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cce9087815260200190565b60405180910390a3506001949350505050565b601d546000906001600160a01b03163314801590611d02575060215460ff16155b8015611d175750601d54600160a81b900460ff165b8015610aff5750602054611d2a30610da2565b1015905090565b600080600186151514611d5a57601654601554611d559190610b21905b86906116e1565b611d6e565b601654601454611d6e9190610b2190611d4e565b90506000600187151514611d9c57611d97601554610b21601354856116e190919063ffffffff16565b611db7565b611db7601454610b21601254856116e190919063ffffffff16565b600854909150611dc7908261169f565b6008556000611dd6838361169f565b30600090815260076020526040902054909150611df39082611b78565b306000818152600760205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e3a84610b04565b60405190815260200160405180910390a36008546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611e92858461169f565b98975050505050505050565b60008183611ebf5760405162461bcd60e51b81526004016109fd9190611f65565b50600061139684866123dd565b828054611ed890612329565b90600052602060002090601f016020900481019282611efa5760008555611f40565b82601f10611f1357805160ff1916838001178555611f40565b82800160010185558215611f40579182015b82811115611f40578251825591602001919060010190611f25565b50611f4c929150611f50565b5090565b5b80821115611f4c5760008155600101611f51565b600060208083528351808285015260005b81811015611f9257858101830151858201604001528201611f76565b81811115611fa4576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114611fd157600080fd5b919050565b60008060408385031215611fe957600080fd5b611ff283611fba565b946020939093013593505050565b60006020828403121561201257600080fd5b610acc82611fba565b6000806040838503121561202e57600080fd5b50508035926020909101359150565b60008060006060848603121561205257600080fd5b61205b84611fba565b925061206960208501611fba565b9150604084013590509250925092565b8015158114610e9d57600080fd5b60006020828403121561209957600080fd5b8135610acc81612079565b6000602082840312156120b657600080fd5b5035919050565b6000806000604084860312156120d257600080fd5b833567ffffffffffffffff808211156120ea57600080fd5b818601915086601f8301126120fe57600080fd5b81358181111561210d57600080fd5b8760208260051b850101111561212257600080fd5b6020928301955093505084013561213881612079565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561216b57600080fd5b813567ffffffffffffffff8082111561218357600080fd5b818401915084601f83011261219757600080fd5b8135818111156121a9576121a9612143565b604051601f8201601f19908116603f011681019083821181831017156121d1576121d1612143565b816040528281528760208487010111156121ea57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000806000806080858703121561222057600080fd5b843561222b81612079565b93506020850135925060408501359150606085013561224981612079565b939692955090935050565b60008060006060848603121561226957600080fd5b61227284611fba565b925061228060208501611fba565b915061228e60408501611fba565b90509250925092565b60008060008060008060008060006101208a8c0312156122b657600080fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b6000806040838503121561230957600080fd5b61231283611fba565b915061232060208401611fba565b90509250929050565b600181811c9082168061233d57607f821691505b60208210810361235d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016123d6576123d66123ae565b5060010190565b6000826123fa57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612419576124196123ae565b500290565b60006020828403121561243057600080fd5b5051919050565b60006020828403121561244957600080fd5b8151610acc81612079565b600082821015612466576124666123ae565b500390565b6000821982111561247e5761247e6123ae565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124d35784516001600160a01b0316835293830193918301916001016124ae565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561250957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b71041a73ae01047f672445ddfd715d675eacb9e7c3c8b649d0b5f05eed1b73c64736f6c634300080e0033

Deployed Bytecode Sourcemap

4301:15018:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6181:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6181:49:0;;;;;;;;7385:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8549:216::-;;;;;;;;;;-1:-1:-1;8549:216:0;;;;;:::i;:::-;;:::i;:::-;;;1400:14:1;;1393:22;1375:41;;1363:2;1348:18;8549:216:0;1235:187:1;4876:43:0;;;;;;;;;;-1:-1:-1;4876:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;19021:156;;;;;;;;;;-1:-1:-1;19021:156:0;;;;;:::i;:::-;;:::i;4926:46::-;;;;;;;;;;;;;;;;7214:88;;;;;;;;;;-1:-1:-1;7287:12:0;;7214:88;;4806:57;;;;;;;;;;;;;;;;13697:177;;;;;;;;;;-1:-1:-1;13697:177:0;;;;;:::i;:::-;;:::i;:::-;;9067:370;;;;;;;;;;-1:-1:-1;9067:370:0;;;;;:::i;:::-;;:::i;18694:142::-;;;;;;;;;;;;;:::i;11742:99::-;;;;;;;;;;-1:-1:-1;11742:99:0;;;;;:::i;:::-;-1:-1:-1;11821:12:0;;;11742:99;10761:155;;;;;;;;;;-1:-1:-1;10761:155:0;;;;;:::i;:::-;;:::i;13884:133::-;;;;;;;;;;;;;:::i;7308:71::-;;;;;;;;;;-1:-1:-1;7308:71:0;;4679:1;2900:36:1;;2888:2;2873:18;7308:71:0;2758:184:1;10597:156:0;;;;;;;;;;-1:-1:-1;10597:156:0;;;;;:::i;:::-;;:::i;17959:206::-;;;;;;;;;;-1:-1:-1;17959:206:0;;;;;:::i;:::-;;:::i;7462:82::-;;;;;;;;;;-1:-1:-1;7462:82:0;;;;;:::i;:::-;;:::i;8773:122::-;;;;;;;;;;-1:-1:-1;8773:122:0;;;;;:::i;:::-;;:::i;8081:220::-;;;;;;;;;;-1:-1:-1;8201:15:0;;8218;;8235:10;;8247:16;;8265:11;;8278:14;;8081:220;;;;5048:25:1;;;5104:2;5089:18;;5082:34;;;;5132:18;;;5125:34;;;;5190:2;5175:18;;5168:34;5233:3;5218:19;;5211:35;5277:3;5262:19;;5255:35;5035:3;5020:19;8081:220:0;4761:535:1;16161:321:0;;;;;;;;;;-1:-1:-1;16161:321:0;;;;;:::i;:::-;;:::i;13602:83::-;;;;;;;;;;;;;:::i;18173:215::-;;;;;;;;;;-1:-1:-1;18173:215:0;;;;;:::i;:::-;;:::i;7804:124::-;;;;;;;;;;-1:-1:-1;7804:124:0;;;;;:::i;:::-;;:::i;3894:148::-;;;;;;;;;;;;;:::i;4745:54::-;;;;;;;;;;;;;;;;11637:97;;;;;;;;;;-1:-1:-1;11637:97:0;;;;;:::i;:::-;-1:-1:-1;11715:11:0;;;11637:97;7727:71;;;;;;;;;;-1:-1:-1;7770:7:0;3743:6;-1:-1:-1;;;;;3743:6:0;7727:71;;;-1:-1:-1;;;;;5983:32:1;;;5965:51;;5953:2;5938:18;7727:71:0;5819:203:1;12905:183:0;;;;;;;;;;;;;:::i;16495:85::-;;;;;;;;;;;;;:::i;3678:79::-;;;;;;;;;;-1:-1:-1;3716:7:0;3743:6;-1:-1:-1;;;;;3743:6:0;3678:79;;7646:75;;;;;;;;;;;;;:::i;17496:226::-;;;;;;;;;;-1:-1:-1;17496:226:0;;;;;:::i;:::-;;:::i;7550:90::-;;;;;;;;;;-1:-1:-1;7550:90:0;;;;;:::i;:::-;;:::i;5915:19::-;;;;;;;;;;-1:-1:-1;5915:19:0;;;;-1:-1:-1;;;;;5915:19:0;;;8903:156;;;;;;;;;;-1:-1:-1;8903:156:0;;;;;:::i;:::-;;:::i;5987:31::-;;;;;;;;;;-1:-1:-1;5987:31:0;;;;-1:-1:-1;;;5987:31:0;;;;;;8315:226;;;;;;;;;;-1:-1:-1;8436:16:0;;8454;;8472:11;;8485:17;;8504:12;;8518:14;;8315:226;;17730:211;;;;;;;;;;-1:-1:-1;17730:211:0;;;;;:::i;:::-;;:::i;18844:169::-;;;;;;;;;;-1:-1:-1;18844:169:0;;;;;:::i;:::-;;:::i;13097:204::-;;;;;;;;;;-1:-1:-1;13097:204:0;;;;;:::i;:::-;;:::i;18396:290::-;;;;;;;;;;-1:-1:-1;18396:290:0;;;;;:::i;:::-;;:::i;16588:900::-;;;;;;;;;;-1:-1:-1;16588:900:0;;;;;:::i;:::-;;:::i;7934:133::-;;;;;;;;;;-1:-1:-1;7934:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8036:19:0;;;8018:7;8036:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7934:133;13310:284;;;;;;;;;;-1:-1:-1;13310:284:0;;;;;:::i;:::-;;:::i;4050:244::-;;;;;;;;;;-1:-1:-1;4050:244:0;;;;;:::i;:::-;;:::i;5884:24::-;;;;;;;;;;-1:-1:-1;5884:24:0;;;;-1:-1:-1;;;;;5884:24:0;;;5943:31;;;;;;;;;;-1:-1:-1;5943:31:0;;;;-1:-1:-1;;;5943:31:0;;;;;;7385:71;7424:13;7448:5;7441:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7385:71;:::o;8549:216::-;8653:10;8624:4;8641:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8641:32:0;;;;;;;;;;:41;;;8698:37;8624:4;;8641:32;;8698:37;;;;8676:6;160:25:1;;148:2;133:18;;14:177;8698:37:0;;;;;;;;-1:-1:-1;8753:4:0;8549:216;;;;;:::o;19021:156::-;19101:4;19157:6;19125:29;19145:8;19125:19;:29::i;:::-;:38;;19021:156;-1:-1:-1;;;19021:156:0:o;13697:177::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;;;;;;;;;13785:15:::1;:25:::0;;;;13821:26:::1;:41:::0;13697:177::o;9067:370::-;-1:-1:-1;;;;;9187:19:0;;9167:4;9187:19;;;:11;:19;;;;;;;;9207:10;9187:31;;;;;;;;-1:-1:-1;;9187:52:0;9184:186;;9289:69;;;;;;;;;;;-1:-1:-1;;;9289:69:0;;;;;;;;-1:-1:-1;;;;;9289:19:0;;-1:-1:-1;9289:19:0;;;:11;:19;;;;;9309:10;9289:31;;;;;;;;;;:69;;9325:6;;9289:35;:69::i;:::-;-1:-1:-1;;;;;9255:19:0;;;;;;:11;:19;;;;;;;;9275:10;9255:31;;;;;;;:103;9184:186;9389:40;9403:6;9411:9;9422:6;9389:13;:40::i;:::-;9382:47;;9067:370;;;;;;:::o;18694:142::-;18747:7;18774:54;18812:15;4527:42;18812:9;:15::i;:::-;18774:33;18791:15;4445:42;18791:9;:15::i;:::-;18774:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18767:61;;18694:142;:::o;10761:155::-;10831:7;10858:50;10891:16;;10858:28;10873:12;;10858:10;:14;;:28;;;;:::i;:::-;:32;;:50::i;13884:133::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;13957:12:::1;::::0;13939:15:::1;:30:::0;;;13980:12:::1;:27:::0;13884:133::o;10597:156::-;10672:7;10699:46;10732:12;;10699:28;10710:16;;10699:6;:10;;:28;;;;:::i;17959:206::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;18059:9:::1;18054:104;18070:20:::0;;::::1;18054:104;;;18140:6;18112:11;:25;18124:9;;18134:1;18124:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18112:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18112:25:0;:34;;-1:-1:-1;;18112:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18092:3:::1;::::0;::::1;:::i;:::-;;;18054:104;;;;17959:206:::0;;;:::o;7462:82::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;7526:15;;::::1;::::0;:5:::1;::::0;:15:::1;::::0;::::1;::::0;::::1;:::i;:::-;;7462:82:::0;:::o;8773:122::-;8828:4;8852:35;8860:7;-1:-1:-1;;8852:7:0;:35::i;16161:321::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;16288:14:::1;:27:::0;;16326:23;::::1;;-1:-1:-1::0;;;16326:23:0::1;-1:-1:-1::0;;;;16288:27:0;::::1;;-1:-1:-1::0;;;16288:27:0::1;16326:23:::0;;;;-1:-1:-1;;;;16326:23:0;;;;;;;::::1;::::0;;;16360:18:::1;:29:::0;;;16400:18:::1;:29:::0;;;;16440:13:::1;:34:::0;16161:321::o;13602:83::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;13661:10:::1;:8;:10::i;:::-;13602:83::o:0;18173:215::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;18277:9:::1;18272:108;18288:20:::0;;::::1;18272:108;;;18362:6;18330:15;:29;18346:9;;18356:1;18346:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18330:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18330:29:0;:38;;-1:-1:-1;;18330:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18310:3:::1;::::0;::::1;:::i;:::-;;;18272:108;;7804:124:::0;-1:-1:-1;;;;;7908:16:0;;7870:7;7908:16;;;:7;:16;;;;;;7888:37;;:19;:37::i;3894:148::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;4001:1:::1;3985:6:::0;;3964:40:::1;::::0;-1:-1:-1;;;;;3985:6:0;;::::1;::::0;3964:40:::1;::::0;4001:1;;3964:40:::1;4032:1;4015:19:::0;;-1:-1:-1;;;;;;4015:19:0::1;::::0;;3894:148::o;12905:183::-;12971:21;;12963:81;;12946:12;;-1:-1:-1;;;;;12971:21:0;;13034:5;;13006:21;;12946:12;12963:81;12946:12;12963:81;13006:21;12971;13034:5;12963:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12945:99;;;13063:7;13055:16;;;;;;12934:154;12905:183::o;16495:85::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;16548:11:::1;:18:::0;;-1:-1:-1;;;;16548:18:0::1;-1:-1:-1::0;;;16548:18:0::1;::::0;;16495:85::o;7646:75::-;7687:13;7711:7;7704:14;;;;;:::i;17496:226::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;17629:4:::1;17614:12;;:19;;;;:::i;:::-;17595:15;;:38;;17587:47;;;::::0;::::1;;17710:4;17679:26;17664:12;;:41;;;;:::i;:::-;17663:51;;;;:::i;:::-;17645:15;:69:::0;-1:-1:-1;17496:226:0:o;7550:90::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;7618:19;;::::1;::::0;:7:::1;::::0;:19:::1;::::0;::::1;::::0;::::1;:::i;8903:156::-:0;8983:4;9007:44;9021:10;9033:9;9044:6;9007:13;:44::i;17730:211::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;17853:4:::1;17838:12;;:19;;;;:::i;:::-;17822:12;;:35;;17814:44;;;::::0;::::1;;17929:4;17900:24;17885:12;;:39;;;;:::i;:::-;17884:49;;;;:::i;:::-;17869:12;:64:::0;-1:-1:-1;17730:211:0:o;18844:169::-;18912:7;18939:64;18980:22;:20;:22::i;:::-;18962:4;;18939:36;;18952:22;;18972:1;;18952:15;;-1:-1:-1;;;;;18962:4:0;18952:9;:15::i;:::-;:19;;:22::i;:::-;18939:8;;:12;:36::i;13097:204::-;13226:21;;13186;;-1:-1:-1;;;;;13226:21:0;13218:75;13289:3;13258:28;13270:16;13186:21;13258:28;:::i;:::-;:34;;;;:::i;:::-;13218:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13155:146;13097:204;:::o;18396:290::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;18536:20:::1;:44:::0;;-1:-1:-1;;;;;18536:44:0;;::::1;-1:-1:-1::0;;;;;;18536:44:0;;::::1;;::::0;;;18591:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18636:21:::1;:42:::0;;;;;::::1;::::0;::::1;;::::0;;18396:290::o;16588:900::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;16878:15:::1;:34:::0;;;16923:16:::1;:36:::0;;;16970:15:::1;:34:::0;;;17015:10:::1;:24:::0;;;17064:74:::1;17028:11:::0;17064:58:::1;16988:16:::0;17064:58;16896:16;16942:17;17064:19:::1;:37::i;:::-;:41:::0;::::1;:58::i;:74::-;17050:11;:88:::0;17151:16:::1;:36:::0;;;17198:17:::1;:38:::0;;;17247:16:::1;:36:::0;;;17294:11:::1;:26:::0;;;17346:78:::1;17308:12:::0;17346:61:::1;17266:17:::0;17346:61;17170:17;17218:18;17346:20:::1;:39::i;:78::-;17331:12;:93:::0;-1:-1:-1;;;17437:14:0::1;:32:::0;;;;-1:-1:-1;;;;;16588:900:0:o;13310:284::-;13391:4;13416:6;13426:1;13416:11;13413:96;;13452:45;;-1:-1:-1;;;13452:45:0;;13491:4;13452:45;;;5965:51:1;-1:-1:-1;;;;;13452:30:0;;;;;5938:18:1;;13452:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13443:54;;13413:96;13556:21;;13526:60;;-1:-1:-1;;;13526:60:0;;-1:-1:-1;;;;;13556:21:0;;;13526:60;;;9710:51:1;9777:18;;;9770:34;;;13526:29:0;;;;;;9683:18:1;;13526:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4050:244::-;3805:6;;-1:-1:-1;;;;;3805:6:0;2397:10;3805:22;3797:67;;;;-1:-1:-1;;;3797:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4139:22:0;::::1;4131:73;;;::::0;-1:-1:-1;;;4131:73:0;;10267:2:1;4131:73:0::1;::::0;::::1;10249:21:1::0;10306:2;10286:18;;;10279:30;10345:34;10325:18;;;10318:62;-1:-1:-1;;;10396:18:1;;;10389:36;10442:19;;4131:73:0::1;10065:402:1::0;4131:73:0::1;4241:6;::::0;;4220:38:::1;::::0;-1:-1:-1;;;;;4220:38:0;;::::1;::::0;4241:6;::::1;::::0;4220:38:::1;::::0;::::1;4269:6;:17:::0;;-1:-1:-1;;;;;;4269:17:0::1;-1:-1:-1::0;;;;;4269:17:0;;;::::1;::::0;;;::::1;::::0;;4050:244::o;1421:192::-;1507:7;1543:12;1535:6;;;;1527:29;;;;-1:-1:-1;;;1527:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1567:9:0;1579:5;1583:1;1579;:5;:::i;:::-;1567:17;1421:192;-1:-1:-1;;;;;1421:192:0:o;9445:1144::-;9557:6;;9537:4;;9557:6;;9554:63;;;9573:41;9588:6;9596:9;9607:6;9573:14;:41::i;:::-;9566:48;;;;9554:63;9646:4;;-1:-1:-1;;;;;9633:17:0;;;9646:4;;9633:17;;;;:38;;-1:-1:-1;;;;;;9654:17:0;;4445:42;9654:17;;9633:38;:75;;;;-1:-1:-1;9688:20:0;;-1:-1:-1;;;;;9675:33:0;;;9688:20;;9675:33;;9633:75;:106;;;;-1:-1:-1;;;;;;9713:26:0;;;;;;:15;:26;;;;;;;;9712:27;9633:106;9629:222;;;9797:15;;9787:6;9764:20;9774:9;9764;:20::i;:::-;:29;;;;:::i;:::-;:48;;9756:81;;;;-1:-1:-1;;;9756:81:0;;10937:2:1;9756:81:0;;;10919:21:1;10976:2;10956:18;;;10949:30;-1:-1:-1;;;10995:18:1;;;10988:50;11055:18;;9756:81:0;10735:344:1;9756:81:0;9885:4;;-1:-1:-1;;;;;9872:17:0;;;9885:4;;9872:17;;;;:38;;-1:-1:-1;;;;;;9893:17:0;;4445:42;9893:17;;9872:38;:69;;;;-1:-1:-1;;;;;;9915:26:0;;;;;;:15;:26;;;;;;;;9914:27;9872:69;9868:155;;;9966:11;;-1:-1:-1;;;9966:11:0;;;;9958:43;;;;-1:-1:-1;;;9958:43:0;;11286:2:1;9958:43:0;;;11268:21:1;11325:2;11305:18;;;11298:30;-1:-1:-1;;;11344:18:1;;;11337:50;11404:18;;9958:43:0;11084:344:1;9958:43:0;10038:16;:14;:16::i;:::-;10035:35;;;10057:10;:8;:10::i;:::-;10082:24;10109:26;10128:6;10109:18;:26::i;:::-;10082:53;;10166:61;10186:16;10166:61;;;;;;;;;;;;;-1:-1:-1;;;10166:61:0;;;:7;:15;10174:6;-1:-1:-1;;;;;10166:15:0;-1:-1:-1;;;;;10166:15:0;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;10148:15:0;;;;;;:7;:15;;;;;;;;:79;;;;11425:11;:19;;;;;;;;11424:20;10269:130;;10383:16;10269:130;;;10324:4;;10293:87;;-1:-1:-1;;;;;10314:14:0;;;10324:4;;10314:14;:28;;10337:5;10314:28;;;10330:4;10314:28;10344:6;10352:9;10363:16;10293:20;:87::i;:::-;-1:-1:-1;;;;;10431:18:0;;;;;;:7;:18;;;;;;10240:159;;-1:-1:-1;10431:42:0;;10240:159;10431:22;:42::i;:::-;-1:-1:-1;;;;;10410:18:0;;;;;;;:7;:18;;;;;:63;;;;10491:68;;;10519:39;10539:18;10519:19;:39::i;:::-;10491:68;;160:25:1;;;148:2;133:18;10491:68:0;;;;;;;-1:-1:-1;10577:4:0;;9445:1144;-1:-1:-1;;;;;9445:1144:0:o;1279:136::-;1337:7;1364:43;1368:1;1371;1364:43;;;;;;;;;;;;;;;;;:3;:43::i;1619:250::-;1677:7;1701:1;1706;1701:6;1697:47;;-1:-1:-1;1731:1:0;1724:8;;1697:47;1756:9;1768:5;1772:1;1768;:5;:::i;:::-;1756:17;-1:-1:-1;1801:1:0;1792:5;1796:1;1756:17;1792:5;:::i;:::-;:10;1784:56;;;;-1:-1:-1;;;1784:56:0;;11635:2:1;1784:56:0;;;11617:21:1;11674:2;11654:18;;;11647:30;11713:34;11693:18;;;11686:62;-1:-1:-1;;;11764:18:1;;;11757:31;11805:19;;1784:56:0;11433:397:1;1875:132:0;1933:7;1960:39;1964:1;1967;1960:39;;;;;;;;;;;;;;;;;:3;:39::i;14231:1922::-;6277:6;:13;;-1:-1:-1;;6277:13:0;6286:4;6277:13;;;14326:15:::1;::::0;14343:26:::1;::::0;6277:6;;14310:60:::1;::::0;:15:::1;:60::i;:::-;:83;;14377:16;;14310:83;;;14373:1;14310:83;14280:113;;14404:17;14424:35;14441:17;;14424:12;;:16;;:35;;;;:::i;:::-;14404:55;;14470:23;14496:60;14554:1;14496:53;14539:9;14496:38;14514:19;14496:13;;:17;;:38;;;;:::i;:60::-;14470:86;;14567:20;14590:34;14608:15;14590:13;;:17;;:34;;;;:::i;:::-;14661:16;::::0;;14675:1:::1;14661:16:::0;;;;;::::1;::::0;;14567:57;;-1:-1:-1;14637:21:0::1;::::0;14661:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14661:16:0::1;14637:40;;14706:4;14688;14693:1;14688:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14688:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14732:4:::1;::::0;;14722:7;;14732:4;::::1;::::0;14722;;14732;14722:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;14722:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14807:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14807:188:0;;14773:21:::1;::::0;14807:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14879:12;;14749:21:::1;::::0;14922:4;;14949::::1;::::0;14969:15:::1;::::0;14807:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15008:17;15028:40;15054:13;15028:21;:25;;:40;;;;:::i;:::-;15008:60:::0;-1:-1:-1;15081:19:0::1;15103:41;15117:26;:19:::0;15141:1:::1;15117:23;:26::i;:::-;15103:9:::0;;:13:::1;:41::i;:::-;15081:63;;15155:26;15184:55;15237:1;15184:48;15220:11;15184:31;15198:16;;15184:9;:13;;:31;;;;:::i;:55::-;15155:84;;15250:26;15279:48;15315:11;15279:31;15293:16;;15279:9;:13;;:31;;;;:::i;:48::-;15250:77;;15338:21;15362:43;15393:11;15362:26;15376:11;;15362:9;:13;;:26;;;;:::i;:43::-;15447:20;::::0;15439:77:::1;::::0;15338:67;;-1:-1:-1;15419:15:0::1;::::0;-1:-1:-1;;;;;15447:20:0;;::::1;::::0;15506:5:::1;::::0;15481:18;;15419:15;15439:77;15419:15;15439:77;15481:18;15447:20;15506:5;15439:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;15551:15:0::1;::::0;15543:67:::1;::::0;15418:98;;-1:-1:-1;;;;;;15551:15:0::1;::::0;15600:5:::1;::::0;15580:13;;15543:67:::1;::::0;;;15580:13;15551:15;15600:5;15543:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15527:83:0;;-1:-1:-1;;15646:19:0;;15643:363:::1;;15682:6;::::0;15856:21:::1;::::0;15682:244:::1;::::0;-1:-1:-1;;;15682:244:0;;15758:4:::1;15682:244;::::0;::::1;13161:34:1::0;13211:18;;;13204:34;;;15682:6:0::1;13254:18:1::0;;;13247:34;;;13297:18;;;13290:34;-1:-1:-1;;;;;15856:21:0;;::::1;13340:19:1::0;;;13333:44;15896:15:0::1;13393:19:1::0;;;13386:35;15682:6:0;::::1;::::0;:22:::1;::::0;15712:18;;13095:19:1;;15682:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15946:48:0::1;::::0;;13917:25:1;;;13973:2;13958:18;;13951:34;;;15946:48:0::1;::::0;-1:-1:-1;13890:18:1;15946:48:0::1;;;;;;;15643:363;16035:14;::::0;-1:-1:-1;;;16035:14:0;::::1;;;16034:15;:111;;16085:18;;16068:13;;:35;:77;;16127:18;;16034:111;;16068:77;16106:18;;16034:111;;;16052:13;;16034:111;16018:13;:127:::0;-1:-1:-1;;6295:6:0;:14;;-1:-1:-1;;6295:14:0;;;-1:-1:-1;;;;;;;;;;14231:1922:0:o;1092:181::-;1150:7;;1182:5;1186:1;1182;:5;:::i;:::-;1170:17;;1211:1;1206;:6;;1198:46;;;;-1:-1:-1;;;1198:46:0;;14198:2:1;1198:46:0;;;14180:21:1;14237:2;14217:18;;;14210:30;14276:29;14256:18;;;14249:57;14323:18;;1198:46:0;13996:351:1;10924:406:0;11017:4;11034:24;11061:26;11080:6;11061:18;:26::i;:::-;11034:53;;11116:61;11136:16;11116:61;;;;;;;;;;;;;-1:-1:-1;;;11116:61:0;;;:7;:15;11124:6;-1:-1:-1;;;;;11116:15:0;-1:-1:-1;;;;;11116:15:0;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;11098:15:0;;;;;;;:7;:15;;;;;;:79;;;;11209:18;;;;;;;:40;;11232:16;11209:22;:40::i;:::-;-1:-1:-1;;;;;11188:18:0;;;;;;;:7;:18;;;;;;;:61;;;;11265:35;;;;;;;;;;11293:6;160:25:1;;148:2;133:18;;14:177;11265:35:0;;;;;;;;-1:-1:-1;11318:4:0;;10924:406;-1:-1:-1;;;;10924:406:0:o;14025:198::-;14112:4;;14074;;-1:-1:-1;;;;;14112:4:0;14098:10;:18;;;;:38;;-1:-1:-1;14130:6:0;;;;14129:7;14098:38;:63;;;;-1:-1:-1;14149:12:0;;-1:-1:-1;;;14149:12:0;;;;14098:63;:117;;;;;14202:13;;14174:24;14192:4;14174:9;:24::i;:::-;:41;;14091:124;;14025:198;:::o;11849:1048::-;11970:7;;12030:4;12020:14;;;;:177;;12182:14;;11821:12;;12122:75;;12182:14;12122:55;;12143:33;12122:16;;:20;:55::i;:75::-;12020:177;;;12095:14;;11715:11;;12036:74;;12095:14;12036:54;;12057:32;11637:97;12036:74;11990:207;-1:-1:-1;12230:27:0;12270:4;12260:14;;;;:146;;12346:60;12393:12;;12346:42;12370:17;;12346:19;:23;;:42;;;;:::i;:60::-;12260:146;;;12276:58;12322:11;;12276:41;12300:16;;12276:19;:23;;:41;;;;:::i;:58::-;12438:16;;12230:176;;-1:-1:-1;12438:41:0;;12230:176;12438:20;:41::i;:::-;12419:16;:60;12514:29;12546:44;:19;12570;12546:23;:44::i;:::-;12642:4;12626:22;;;;:7;:22;;;;;;12514:76;;-1:-1:-1;12626:49:0;;12514:76;12626:26;:49::i;:::-;12617:4;12601:22;;;;:7;:22;;;;;:74;;;;-1:-1:-1;;;;;12693:75:0;;;12725:42;12745:21;12725:19;:42::i;:::-;12693:75;;160:25:1;;;148:2;133:18;12693:75:0;;;;;;;12813:16;;12784:46;;;13917:25:1;;;13973:2;13958:18;;13951:34;;;;12784:46:0;;13890:18:1;12784:46:0;;;;;;;12848:41;:16;12869:19;12848:20;:41::i;:::-;12841:48;11849:1048;-1:-1:-1;;;;;;;;11849:1048:0:o;2013:256::-;2099:7;2201:12;2194:5;2186:28;;;;-1:-1:-1;;;2186:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2225:9:0;2237:5;2241:1;2237;:5;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;196:597:1;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:173::-;866:20;;-1:-1:-1;;;;;915:31:1;;905:42;;895:70;;961:1;958;951:12;895:70;798:173;;;:::o;976:254::-;1044:6;1052;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1144:29;1163:9;1144:29;:::i;:::-;1134:39;1220:2;1205:18;;;;1192:32;;-1:-1:-1;;;976:254:1:o;1427:186::-;1486:6;1539:2;1527:9;1518:7;1514:23;1510:32;1507:52;;;1555:1;1552;1545:12;1507:52;1578:29;1597:9;1578:29;:::i;1618:248::-;1686:6;1694;1747:2;1735:9;1726:7;1722:23;1718:32;1715:52;;;1763:1;1760;1753:12;1715:52;-1:-1:-1;;1786:23:1;;;1856:2;1841:18;;;1828:32;;-1:-1:-1;1618:248:1:o;1871:328::-;1948:6;1956;1964;2017:2;2005:9;1996:7;1992:23;1988:32;1985:52;;;2033:1;2030;2023:12;1985:52;2056:29;2075:9;2056:29;:::i;:::-;2046:39;;2104:38;2138:2;2127:9;2123:18;2104:38;:::i;:::-;2094:48;;2189:2;2178:9;2174:18;2161:32;2151:42;;1871:328;;;;;:::o;2204:118::-;2290:5;2283:13;2276:21;2269:5;2266:32;2256:60;;2312:1;2309;2302:12;2327:241;2383:6;2436:2;2424:9;2415:7;2411:23;2407:32;2404:52;;;2452:1;2449;2442:12;2404:52;2491:9;2478:23;2510:28;2532:5;2510:28;:::i;2573:180::-;2632:6;2685:2;2673:9;2664:7;2660:23;2656:32;2653:52;;;2701:1;2698;2691:12;2653:52;-1:-1:-1;2724:23:1;;2573:180;-1:-1:-1;2573:180:1:o;2947:750::-;3039:6;3047;3055;3108:2;3096:9;3087:7;3083:23;3079:32;3076:52;;;3124:1;3121;3114:12;3076:52;3164:9;3151:23;3193:18;3234:2;3226:6;3223:14;3220:34;;;3250:1;3247;3240:12;3220:34;3288:6;3277:9;3273:22;3263:32;;3333:7;3326:4;3322:2;3318:13;3314:27;3304:55;;3355:1;3352;3345:12;3304:55;3395:2;3382:16;3421:2;3413:6;3410:14;3407:34;;;3437:1;3434;3427:12;3407:34;3492:7;3485:4;3475:6;3472:1;3468:14;3464:2;3460:23;3456:34;3453:47;3450:67;;;3513:1;3510;3503:12;3450:67;3544:4;3536:13;;;;-1:-1:-1;3568:6:1;-1:-1:-1;;3609:20:1;;3596:34;3639:28;3596:34;3639:28;:::i;:::-;3686:5;3676:15;;;2947:750;;;;;:::o;3702:127::-;3763:10;3758:3;3754:20;3751:1;3744:31;3794:4;3791:1;3784:15;3818:4;3815:1;3808:15;3834:922;3903:6;3956:2;3944:9;3935:7;3931:23;3927:32;3924:52;;;3972:1;3969;3962:12;3924:52;4012:9;3999:23;4041:18;4082:2;4074:6;4071:14;4068:34;;;4098:1;4095;4088:12;4068:34;4136:6;4125:9;4121:22;4111:32;;4181:7;4174:4;4170:2;4166:13;4162:27;4152:55;;4203:1;4200;4193:12;4152:55;4239:2;4226:16;4261:2;4257;4254:10;4251:36;;;4267:18;;:::i;:::-;4342:2;4336:9;4310:2;4396:13;;-1:-1:-1;;4392:22:1;;;4416:2;4388:31;4384:40;4372:53;;;4440:18;;;4460:22;;;4437:46;4434:72;;;4486:18;;:::i;:::-;4526:10;4522:2;4515:22;4561:2;4553:6;4546:18;4601:7;4596:2;4591;4587;4583:11;4579:20;4576:33;4573:53;;;4622:1;4619;4612:12;4573:53;4678:2;4673;4669;4665:11;4660:2;4652:6;4648:15;4635:46;4723:1;4701:15;;;4718:2;4697:24;4690:35;;;;-1:-1:-1;4705:6:1;3834:922;-1:-1:-1;;;;;3834:922:1:o;5301:513::-;5381:6;5389;5397;5405;5458:3;5446:9;5437:7;5433:23;5429:33;5426:53;;;5475:1;5472;5465:12;5426:53;5514:9;5501:23;5533:28;5555:5;5533:28;:::i;:::-;5580:5;-1:-1:-1;5632:2:1;5617:18;;5604:32;;-1:-1:-1;5683:2:1;5668:18;;5655:32;;-1:-1:-1;5739:2:1;5724:18;;5711:32;5752:30;5711:32;5752:30;:::i;:::-;5301:513;;;;-1:-1:-1;5301:513:1;;-1:-1:-1;;5301:513:1:o;6027:334::-;6104:6;6112;6120;6173:2;6161:9;6152:7;6148:23;6144:32;6141:52;;;6189:1;6186;6179:12;6141:52;6212:29;6231:9;6212:29;:::i;:::-;6202:39;;6260:38;6294:2;6283:9;6279:18;6260:38;:::i;:::-;6250:48;;6317:38;6351:2;6340:9;6336:18;6317:38;:::i;:::-;6307:48;;6027:334;;;;;:::o;6366:730::-;6497:6;6505;6513;6521;6529;6537;6545;6553;6561;6614:3;6602:9;6593:7;6589:23;6585:33;6582:53;;;6631:1;6628;6621:12;6582:53;-1:-1:-1;;6654:23:1;;;6724:2;6709:18;;6696:32;;-1:-1:-1;6775:2:1;6760:18;;6747:32;;6826:2;6811:18;;6798:32;;-1:-1:-1;6877:3:1;6862:19;;6849:33;;-1:-1:-1;6929:3:1;6914:19;;6901:33;;-1:-1:-1;6981:3:1;6966:19;;6953:33;;-1:-1:-1;7033:3:1;7018:19;;7005:33;;-1:-1:-1;7085:3:1;7070:19;7057:33;;-1:-1:-1;6366:730:1;-1:-1:-1;6366:730:1:o;7101:260::-;7169:6;7177;7230:2;7218:9;7209:7;7205:23;7201:32;7198:52;;;7246:1;7243;7236:12;7198:52;7269:29;7288:9;7269:29;:::i;:::-;7259:39;;7317:38;7351:2;7340:9;7336:18;7317:38;:::i;:::-;7307:48;;7101:260;;;;;:::o;7592:380::-;7671:1;7667:12;;;;7714;;;7735:61;;7789:4;7781:6;7777:17;7767:27;;7735:61;7842:2;7834:6;7831:14;7811:18;7808:38;7805:161;;7888:10;7883:3;7879:20;7876:1;7869:31;7923:4;7920:1;7913:15;7951:4;7948:1;7941:15;7805:161;;7592:380;;;:::o;7977:356::-;8179:2;8161:21;;;8198:18;;;8191:30;8257:34;8252:2;8237:18;;8230:62;8324:2;8309:18;;7977:356::o;8338:127::-;8399:10;8394:3;8390:20;8387:1;8380:31;8430:4;8427:1;8420:15;8454:4;8451:1;8444:15;8470:127;8531:10;8526:3;8522:20;8519:1;8512:31;8562:4;8559:1;8552:15;8586:4;8583:1;8576:15;8602:135;8641:3;8662:17;;;8659:43;;8682:18;;:::i;:::-;-1:-1:-1;8729:1:1;8718:13;;8602:135::o;8952:217::-;8992:1;9018;9008:132;;9062:10;9057:3;9053:20;9050:1;9043:31;9097:4;9094:1;9087:15;9125:4;9122:1;9115:15;9008:132;-1:-1:-1;9154:9:1;;8952:217::o;9174:168::-;9214:7;9280:1;9276;9272:6;9268:14;9265:1;9262:21;9257:1;9250:9;9243:17;9239:45;9236:71;;;9287:18;;:::i;:::-;-1:-1:-1;9327:9:1;;9174:168::o;9347:184::-;9417:6;9470:2;9458:9;9449:7;9445:23;9441:32;9438:52;;;9486:1;9483;9476:12;9438:52;-1:-1:-1;9509:16:1;;9347:184;-1:-1:-1;9347:184:1:o;9815:245::-;9882:6;9935:2;9923:9;9914:7;9910:23;9906:32;9903:52;;;9951:1;9948;9941:12;9903:52;9983:9;9977:16;10002:28;10024:5;10002:28;:::i;10472:125::-;10512:4;10540:1;10537;10534:8;10531:34;;;10545:18;;:::i;:::-;-1:-1:-1;10582:9:1;;10472:125::o;10602:128::-;10642:3;10673:1;10669:6;10666:1;10663:13;10660:39;;;10679:18;;:::i;:::-;-1:-1:-1;10715:9:1;;10602:128::o;11835:980::-;12097:4;12145:3;12134:9;12130:19;12176:6;12165:9;12158:25;12202:2;12240:6;12235:2;12224:9;12220:18;12213:34;12283:3;12278:2;12267:9;12263:18;12256:31;12307:6;12342;12336:13;12373:6;12365;12358:22;12411:3;12400:9;12396:19;12389:26;;12450:2;12442:6;12438:15;12424:29;;12471:1;12481:195;12495:6;12492:1;12489:13;12481:195;;;12560:13;;-1:-1:-1;;;;;12556:39:1;12544:52;;12651:15;;;;12616:12;;;;12592:1;12510:9;12481:195;;;-1:-1:-1;;;;;;;12732:32:1;;;;12727:2;12712:18;;12705:60;-1:-1:-1;;;12796:3:1;12781:19;12774:35;12693:3;11835:980;-1:-1:-1;;;11835:980:1:o;13432:306::-;13520:6;13528;13536;13589:2;13577:9;13568:7;13564:23;13560:32;13557:52;;;13605:1;13602;13595:12;13557:52;13634:9;13628:16;13618:26;;13684:2;13673:9;13669:18;13663:25;13653:35;;13728:2;13717:9;13713:18;13707:25;13697:35;;13432:306;;;;;:::o

Swarm Source

ipfs://b71041a73ae01047f672445ddfd715d675eacb9e7c3c8b649d0b5f05eed1b73c

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.