ETH Price: $2,484.76 (+2.78%)

Token

Etherflex (EFLEX)
 

Overview

Max Total Supply

10,000,000,000 EFLEX

Holders

4

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
114,660,066.432859681358854622 EFLEX

Value
$0.00
0x6001a7D80a2d0C2b5f7F5dA3522D81967A1A5410
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Ether

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;


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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

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

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

/**
 * Allows for contract ownership along with multi-address authorization
 */
contract Ownable is Context {
    address private _owner;
    mapping (address => bool) internal authorizations;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _owner = msg.sender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), _owner);
    }

    function setAuthorize(address adr,bool val) public onlyOwner {
        authorizations[adr] = val;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), 'Ownable: caller is not the owner');
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), 'Ownable: new owner is the zero address');
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

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

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

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

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

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

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

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IBEP20 ETH = IBEP20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    IDEXRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    //SETMEUP, change this to 1 hour instead of 10mins
    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 1 * (10 ** 18);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //0x10ED43C718714eb63d5aA57B78B54704E256024E pancake
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = ETH.balanceOf(address(this));

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

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = ETH.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            ETH.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract Ether is IBEP20, Ownable {
    using SafeMath for uint256;

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

    string constant _name = "Etherflex";
    string constant _symbol = "EFLEX";
    uint8 constant _decimals = 18;

    uint256 _totalSupply = 10 * 10**9 * (10 ** _decimals);
    
    uint256 public _maxTxAmount = _totalSupply;

    //max wallet holding 
    uint256 public _maxWalletToken = _totalSupply;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) public _blackList;

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

    
    uint256 public _feeDecimal = 0;
   // buy fee
    uint256 liquidityFee    = 0;
    uint256 reflectionFee   = 5;
    uint256 marketingFee    = 20;
    uint256 public totalFee = 4;
    uint256 feeDenominator  = 100;


    // Fees
    uint256 internal _rewardFeeCollected;
    uint256 internal _liqFeeCollected;
    uint256 internal _marketingFeeCollected; 
    

    //PreSale settings
    uint256 public preSale_RATE = 1000; //per ETH
    bool public enablePresale =false;
    uint256 private maxETHPurchaseLimit = 1e18; // 1 ETH
    mapping (address => uint256) _maxPresaleETH;

    address public autoDeadWallet;
    
    address public marketingFeeReceiver;
    address public devFeeReceiver;

    IDEXRouter public router;
    address public pair;

    DividendDistributor distributor;
    
    uint256 distributorGas = 500000;

    // Cooldown & timer functionality
    bool public buyCooldownEnabled = true;
     
    uint8 public cooldownTimerInterval = 35;
    
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 10 / 100000000; // 0.01% of supply
    bool inSwap;
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {    
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        // Pcs v2 0x10ED43C718714eb63d5aA57B78B54704E256024E
        // UniSwap v2 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D 
        // Ps test v2 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3                         
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint128).max;

        distributor = new DividendDistributor(address(router));

        isFeeExempt[owner()] = true;
        isTxLimitExempt[owner()] = true;

        // No timelock for these people
        isTimelockExempt[owner()] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        // TO DO, manually whitelist this
        //isFeeExempt[_presaleContract] = true;
        //isTxLimitExempt[_presaleContract] = true;
        //isDividendExempt[_presaleContract] = true;

        isDividendExempt[pair] = true;/*  */
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        // NICE!
        autoDeadWallet = DEAD;
        marketingFeeReceiver = DEAD; // marketing address
        devFeeReceiver = DEAD; //Dev address

        _balances[owner()] = _totalSupply;
        emit Transfer(address(0),owner(), _totalSupply);
    }


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

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint128).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(uint128).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) {
        require(!_blackList[sender],"Address is blackListed");
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }


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

        
        // cooldown timer, so a bot doesnt do quick trades! 1min gap between 2 trades.
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for cooldown between buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }


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

        // Liquidity, Maintained at 25%
        if(shouldSwapBack()){ swapBack(); }
        
        uint256 amountReceived;
        
      
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

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

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try distributor.process(distributorGas) {} catch {}

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

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

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

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(10**(_feeDecimal + 2));

        uint256 liqFee = amount.mul(liquidityFee).div(10**(_feeDecimal + 2));
        uint256 _marketingFee = amount.mul(marketingFee).div(10**(_feeDecimal + 2));
        uint256 rewardFee = amount.mul(reflectionFee).div(10**(_feeDecimal + 2));

        
        _liqFeeCollected = _liqFeeCollected.add(liqFee);
        _marketingFeeCollected = _marketingFeeCollected.add(_marketingFee);
        _rewardFeeCollected = _rewardFeeCollected.add(rewardFee);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
    

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

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



    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        
        cooldownTimerInterval = _interval;
    }


    function swapBack() internal swapping {

        uint256 _totalFee =_liqFeeCollected
        .add(_marketingFeeCollected)
        .add(_rewardFeeCollected);

        
        if(swapThreshold > _totalFee) return;

        uint256 amountToLiquify = _totalFee.mul(_liqFeeCollected).div(_totalFee).div(2);
        uint256 amountToSwap = _totalFee.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.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(_liqFeeCollected.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(_liqFeeCollected).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(_marketingFeeCollected).div(totalETHFee);
        uint256 amountETHReward = amountETH.mul(_rewardFeeCollected).div(totalETHFee);

        try distributor.deposit{value: amountETHReward}() {} catch {}

        if(amountETHMarketing > 0) payable(marketingFeeReceiver).transfer(amountETHMarketing);
        
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoDeadWallet,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }

        _liqFeeCollected = 0;
        _marketingFeeCollected = 0;
        _rewardFeeCollected = 0;
    }


    function setTxLimit(uint256 amount) external onlyOwner {
        _maxTxAmount = amount;
    }
    
     //settting the maximum permitted wallet holding (percent of total supply)
     function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner {
        _maxWalletToken = maxWallPercent;
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

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

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

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

 function setFees(uint256 _liquidityFee, 
        uint256 _reflectionFee, 
        uint256 _marketingFee,
        uint256 _devFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(_devFee);
    }

    function setFeeReceivers(address _autoDeadWallet, address _marketingFeeReceiver) external onlyOwner {
        autoDeadWallet = _autoDeadWallet;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings( uint256 _amount) external onlyOwner {
        swapThreshold = _amount;
    }

    function setSwapEnabled(bool _enable) external onlyOwner {
        swapEnabled = _enable;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function setPresaleEnable(bool _val) external onlyOwner {
        enablePresale = _val;
    }

    /*
        put _rate value like ( 1 ETH = _rate) where as _rate is the token amount 

        you want to set for 1 ETH
    */
    function setPresaleRate(uint256 _rate) external onlyOwner {
        preSale_RATE = _rate;
    }

    function setMaxETHLimit(uint256 _value) external onlyOwner {
        maxETHPurchaseLimit =_value;
    }

    function setBlackList (address add,bool value) external onlyOwner {
        _blackList[add]=value;
    }
 
    receive() external payable {
        if(!inSwap){
        require( !enablePresale ,"pre sale is finalize");
        require(_maxPresaleETH[msg.sender] <= maxETHPurchaseLimit && msg.value <= maxETHPurchaseLimit,"Max purchasing limit exceeds");
        _maxPresaleETH[msg.sender] +=msg.value;
        uint256 amount=msg.value*preSale_RATE;
        _basicTransfer(owner(),msg.sender,amount);
        payable(owner()).transfer(msg.value);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeDecimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"autoDeadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enablePresale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSale_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"adr","type":"address"},{"internalType":"bool","name":"val","type":"bool"}],"name":"setAuthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoDeadWallet","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMaxETHLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_val","type":"bool"}],"name":"setPresaleEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"setPresaleRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290811790925560038054821690921790915560048054821661dead1790556005805490911690556200005e6012600a62000605565b6200006f906402540be400620006f0565b600681905560078190556008819055600060108190556011556005601255601460138190556004905560646015556103e8601955601a805460ff19908116909155670de0b6b3a7640000601b556207a120602355602480548216600190811761ff00191661230017909155602680549092161790556305f5e10090620000f790600a620006f0565b62000103919062000597565b6027553480156200011357600080fd5b50600080546001600160a01b03191633178082556001600160a01b039081168252600160208190526040808420805460ff191690921790915582549051911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3602080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d178082556040805163c45a015560e01b815290516001600160a01b03929092169263c45a015592600480840193829003018186803b158015620001de57600080fd5b505afa158015620001f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000219919062000530565b6003546040516364e329cb60e11b81526001600160a01b039283169263c9c65396926200024e92911690309060040162000574565b602060405180830381600087803b1580156200026957600080fd5b505af11580156200027e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a4919062000530565b602180546001600160a01b0319166001600160a01b03928316179055306000908152600a602090815260408083208254851684528252918290206001600160801b039055549051911690620002f99062000522565b62000305919062000560565b604051809103906000f08015801562000322573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556001600c60006200035362000513565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600190600d906200038e62000513565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600190600e90620003c962000513565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556004805483168252600e855283822080548716600190811790915530808452858420805489168317905560215485168452600f90965284832080548816821790559482528382208054871686179055805483168252928120805490951690931790935554601d80546001600160a01b0319908116929094169182179055601e8054841682179055601f805490931617909155600654906009906200049a62000513565b6001600160a01b03168152602081019190915260400160002055620004be62000513565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200050591906200058e565b60405180910390a362000728565b6000546001600160a01b031690565b61110280620030ca83390190565b60006020828403121562000542578081fd5b81516001600160a01b038116811462000559578182fd5b9392505050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b90815260200190565b600082620005b357634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611620005cc5750620005fc565b818704821115620005e157620005e162000712565b80861615620005ef57918102915b9490941c938002620005bb565b94509492505050565b60006200055960001960ff851684600082620006245750600162000559565b81620006335750600062000559565b81600181146200064c576002811462000657576200068b565b600191505062000559565b60ff8411156200066b576200066b62000712565b6001841b91508482111562000684576200068462000712565b5062000559565b5060208310610133831016604e8410600b8410161715620006c3575081810a83811115620006bd57620006bd62000712565b62000559565b620006d28484846001620005b8565b808604821115620006e757620006e762000712565b02949350505050565b60008160001904831182151516156200070d576200070d62000712565b500290565b634e487b7160e01b600052601160045260246000fd5b61299280620007386000396000f3fe6080604052600436106102b25760003560e01c806370a0823111610175578063a8aa1b31116100dc578063e01af92c11610095578063f449ffe41161006f578063f449ffe4146108c2578063f708a64f146108e2578063f84ba65d14610902578063f887ea4014610922576103ba565b8063e01af92c1461086d578063e96fada21461088d578063f2fde38b146108a2576103ba565b8063a8aa1b31146107ce578063a8eac492146107e3578063a9059cbb146107f8578063aaeac15814610818578063dab84ee714610838578063dd62ed3e1461084d576103ba565b806382bf293c1161012e57806382bf293c1461072f5780638da5cb5b1461074f57806392da6df51461076457806395d89b41146107795780639d1944f51461078e578063a4b45c00146107ae576103ba565b806370a082311461069b578063715018a6146106bb578063722b62ad146106d057806378109e54146106e5578063796431d0146106fa5780637d1db4a51461071a576103ba565b8063314a94d4116102195780635fac775d116101d25780635fac775d146105f1578063617fe0ed14610611578063658d4b7f1461062657806368092bd9146106465780636ddd1713146106665780636fcba3771461067b576103ba565b8063314a94d41461052f5780633cb268aa1461054f57806350db71fb14610571578063571ac8b014610591578063595dec3c146105b15780635c85974f146105d1576103ba565b80631df4ccfc1161026b5780631df4ccfc1461048357806323b872dd146104985780632b112e49146104b85780632d48e896146104cd5780632d594567146104ed578063313ce5671461050d576103ba565b80630445b667146103bf57806306fdde03146103ea578063095ea7b31461040c57806318160ddd1461043957806319db457d1461044e5780631da1db5e14610463576103ba565b366103ba5760285460ff166103b857601a5460ff16156102ed5760405162461bcd60e51b81526004016102e4906125af565b60405180910390fd5b601b54336000908152601c6020526040902054118015906103105750601b543411155b61032c5760405162461bcd60e51b81526004016102e4906125dd565b336000908152601c60205260408120805434929061034b9084906127ac565b909155505060195460009061036090346128f8565b905061037461036d610937565b3383610946565b5061037d610937565b6001600160a01b03166108fc349081150290604051600060405180830381858888f193505050501580156103b5573d6000803e3d6000fd5b50505b005b600080fd5b3480156103cb57600080fd5b506103d4610a2b565b6040516103e19190612717565b60405180910390f35b3480156103f657600080fd5b506103ff610a31565b6040516103e1919061246f565b34801561041857600080fd5b5061042c6104273660046122f0565b610a54565b6040516103e19190612464565b34801561044557600080fd5b506103d4610abf565b34801561045a57600080fd5b506103d4610ac5565b34801561046f57600080fd5b506103b861047e366004612365565b610acb565b34801561048f57600080fd5b506103d4610b54565b3480156104a457600080fd5b5061042c6104b336600461227c565b610b5a565b3480156104c457600080fd5b506103d4610c1f565b3480156104d957600080fd5b506103b86104e836600461237d565b610c68565b3480156104f957600080fd5b506103b8610508366004612335565b610d05565b34801561051957600080fd5b50610522610d60565b6040516103e1919061279e565b34801561053b57600080fd5b506103b861054a36600461231b565b610d65565b34801561055b57600080fd5b50610564610dad565b6040516103e191906123fc565b34801561057d57600080fd5b506103b861058c3660046122bc565b610dbc565b34801561059d57600080fd5b5061042c6105ac36600461220c565b610e1c565b3480156105bd57600080fd5b5061042c6105cc36600461220c565b610e37565b3480156105dd57600080fd5b506103b86105ec366004612365565b610e4c565b3480156105fd57600080fd5b506103b861060c366004612365565b610e86565b34801561061d57600080fd5b5061042c610ec0565b34801561063257600080fd5b506103b86106413660046122bc565b610ec9565b34801561065257600080fd5b506103b86106613660046122bc565b610f29565b34801561067257600080fd5b5061042c610f89565b34801561068757600080fd5b506103b86106963660046123cb565b610f92565b3480156106a757600080fd5b506103d46106b636600461220c565b610ff5565b3480156106c757600080fd5b506103b8611010565b3480156106dc57600080fd5b5061052261108f565b3480156106f157600080fd5b506103d461109d565b34801561070657600080fd5b506103b8610715366004612365565b6110a3565b34801561072657600080fd5b506103d46110dd565b34801561073b57600080fd5b506103b861074a366004612365565b6110e3565b34801561075b57600080fd5b50610564610937565b34801561077057600080fd5b506103d461111d565b34801561078557600080fd5b506103ff611123565b34801561079a57600080fd5b506103b86107a9366004612365565b611142565b3480156107ba57600080fd5b506103b86107c9366004612244565b61118b565b3480156107da57600080fd5b506105646111ee565b3480156107ef57600080fd5b5061042c6111fd565b34801561080457600080fd5b5061042c6108133660046122f0565b611206565b34801561082457600080fd5b506103b86108333660046122bc565b611213565b34801561084457600080fd5b50610564611273565b34801561085957600080fd5b506103d4610868366004612244565b611282565b34801561087957600080fd5b506103b861088836600461231b565b6112ad565b34801561089957600080fd5b506105646112f5565b3480156108ae57600080fd5b506103b86108bd36600461220c565b611304565b3480156108ce57600080fd5b506103b86108dd366004612365565b6113ba565b3480156108ee57600080fd5b506103b86108fd3660046122bc565b6113f4565b34801561090e57600080fd5b506103b861091d3660046122bc565b611538565b34801561092e57600080fd5b50610564611598565b6000546001600160a01b031690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526009909152918220546109979184906115a7565b6001600160a01b0380861660009081526009602052604080822093909355908516815220546109c690836115e1565b6001600160a01b0380851660008181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a18908690612717565b60405180910390a35060015b9392505050565b60275481565b60408051808201909152600981526808ae8d0cae4ccd8caf60bb1b602082015290565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610aad908690612717565b60405180910390a35060015b92915050565b60065490565b60105481565b610ad3611610565b6000546001600160a01b03908116911614610b005760405162461bcd60e51b81526004016102e490612655565b601e5447906001600160a01b03166108fc6064610b1d85856128f8565b610b2791906127c4565b6040518115909202916000818181858888f19350505050158015610b4f573d6000803e3d6000fd5b505050565b60145481565b6001600160a01b0383166000908152600a602090815260408083203384529091528120546001600160801b0314610c0c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054610be79184906115a7565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b610c17848484611614565b949350505050565b600554600090610c6390610c3b906001600160a01b0316610ff5565b600454610c5d90610c54906001600160a01b0316610ff5565b60065490611aaa565b90611aaa565b905090565b610c70611610565b6000546001600160a01b03908116911614610c9d5760405162461bcd60e51b81526004016102e490612655565b6022546040516316a4744b60e11b81526001600160a01b0390911690632d48e89690610ccf9085908590600401612790565b600060405180830381600087803b158015610ce957600080fd5b505af1158015610cfd573d6000803e3d6000fd5b505050505050565b610d0d611610565b6000546001600160a01b03908116911614610d3a5760405162461bcd60e51b81526004016102e490612655565b6024805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b601290565b610d6d611610565b6000546001600160a01b03908116911614610d9a5760405162461bcd60e51b81526004016102e490612655565b601a805460ff1916911515919091179055565b601d546001600160a01b031681565b610dc4611610565b6000546001600160a01b03908116911614610df15760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610e2f826001600160801b03610a54565b90505b919050565b600b6020526000908152604090205460ff1681565b610e54611610565b6000546001600160a01b03908116911614610e815760405162461bcd60e51b81526004016102e490612655565b600755565b610e8e611610565b6000546001600160a01b03908116911614610ebb5760405162461bcd60e51b81526004016102e490612655565b601b55565b60245460ff1681565b610ed1611610565b6000546001600160a01b03908116911614610efe5760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b610f31611610565b6000546001600160a01b03908116911614610f5e5760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60265460ff1681565b610f9a611610565b6000546001600160a01b03908116911614610fc75760405162461bcd60e51b81526004016102e490612655565b601184905560128390556013829055610fec81610fe6848188886115e1565b906115e1565b60145550505050565b6001600160a01b031660009081526009602052604090205490565b611018611610565b6000546001600160a01b039081169116146110455760405162461bcd60e51b81526004016102e490612655565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b602454610100900460ff1681565b60085481565b6110ab611610565b6000546001600160a01b039081169116146110d85760405162461bcd60e51b81526004016102e490612655565b602755565b60075481565b6110eb611610565b6000546001600160a01b039081169116146111185760405162461bcd60e51b81526004016102e490612655565b600855565b60195481565b60408051808201909152600581526408a8c988ab60db1b602082015290565b61114a611610565b6000546001600160a01b039081169116146111775760405162461bcd60e51b81526004016102e490612655565b620b71b0811061118657600080fd5b602355565b611193611610565b6000546001600160a01b039081169116146111c05760405162461bcd60e51b81526004016102e490612655565b601d80546001600160a01b039384166001600160a01b031991821617909155601e8054929093169116179055565b6021546001600160a01b031681565b601a5460ff1681565b6000610a24338484611614565b61121b611610565b6000546001600160a01b039081169116146112485760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b601f546001600160a01b031681565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6112b5611610565b6000546001600160a01b039081169116146112e25760405162461bcd60e51b81526004016102e490612655565b6026805460ff1916911515919091179055565b601e546001600160a01b031681565b61130c611610565b6000546001600160a01b039081169116146113395760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03811661135f5760405162461bcd60e51b81526004016102e4906124ed565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6113c2611610565b6000546001600160a01b039081169116146113ef5760405162461bcd60e51b81526004016102e490612655565b601955565b6113fc611610565b6000546001600160a01b039081169116146114295760405162461bcd60e51b81526004016102e490612655565b6001600160a01b038216301480159061145057506021546001600160a01b03838116911614155b61145957600080fd5b6001600160a01b0382166000908152600f60205260409020805460ff191682158015919091179091556114f057602254604051630a5b654b60e11b81526001600160a01b03909116906314b6ca96906114b9908590600090600401612410565b600060405180830381600087803b1580156114d357600080fd5b505af11580156114e7573d6000803e3d6000fd5b50505050611534565b6022546001600160a01b0383811660009081526009602052604090819020549051630a5b654b60e11b815291909216916314b6ca9691610ccf918691600401612410565b5050565b611540611610565b6000546001600160a01b0390811691161461156d5760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6020546001600160a01b031681565b600081848411156115cb5760405162461bcd60e51b81526004016102e4919061246f565b5060006115d88486612917565b95945050505050565b6000806115ee83856127ac565b905083811015610a245760405162461bcd60e51b81526004016102e490612578565b3390565b6001600160a01b0383166000908152600b602052604081205460ff161561164d5760405162461bcd60e51b81526004016102e4906126e7565b60285460ff161561166a57611663848484610946565b9050610a24565b6001600160a01b03841660009081526001602052604090205460ff1615801561169c57506001600160a01b0383163014155b80156116b657506004546001600160a01b03848116911614155b80156116d057506021546001600160a01b03848116911614155b80156116ea5750601e546001600160a01b03848116911614155b80156117045750601d546001600160a01b03848116911614155b1561174457600061171484610ff5565b60085490915061172484836127ac565b11156117425760405162461bcd60e51b81526004016102e49061268a565b505b6021546001600160a01b038581169116148015611763575060245460ff165b801561178857506001600160a01b0383166000908152600e602052604090205460ff16155b156117f3576001600160a01b03831660009081526025602052604090205442116117c45760405162461bcd60e51b81526004016102e490612533565b6024546117d990610100900460ff16426127ac565b6001600160a01b0384166000908152602560205260409020555b6117fd8483611aec565b611805611b31565b1561181257611812611b80565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526009909152918220546118639185906115a7565b6001600160a01b03861660009081526009602052604090205561188585611fb9565b61188f5782611899565b6118998584611fd8565b6001600160a01b0385166000908152600960205260409020549091506118bf90826115e1565b6001600160a01b038086166000908152600960209081526040808320949094559188168152600f909152205460ff16611963576022546001600160a01b0386811660009081526009602052604090819020549051630a5b654b60e11b815291909216916314b6ca9691611936918991600401612410565b600060405180830381600087803b15801561195057600080fd5b505af1925050508015611961575060015b505b6001600160a01b0384166000908152600f602052604090205460ff166119f4576022546001600160a01b0385811660009081526009602052604090819020549051630a5b654b60e11b815291909216916314b6ca96916119c7918891600401612410565b600060405180830381600087803b1580156119e157600080fd5b505af19250505080156119f2575060015b505b6022546023546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611a2891600401612717565b600060405180830381600087803b158015611a4257600080fd5b505af1925050508015611a53575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a979190612717565b60405180910390a3506001949350505050565b6000610a2483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115a7565b60075481111580611b1557506001600160a01b0382166000908152600d602052604090205460ff165b6115345760405162461bcd60e51b81526004016102e4906124c2565b6021546000906001600160a01b03163314801590611b52575060285460ff16155b8015611b60575060265460ff165b8015610c6357505060275430600090815260096020526040902054101590565b6028805460ff19166001179055601654601854601754600092611ba8929091610fe6916115e1565b9050806027541115611bba5750611fad565b6000611be06002611bda84611bda6017548761214c90919063ffffffff16565b90612191565b90506000611bee8383611aaa565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611c3657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092018101919091528054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611c8957600080fd5b505afa158015611c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc19190612228565b81600181518110611ce257634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac94790611d2e908690600090879030904290600401612720565b600060405180830381600087803b158015611d4857600080fd5b505af1158015611d5c573d6000803e3d6000fd5b505050506000611d758247611aaa90919063ffffffff16565b90506000611d99611d92600260175461219190919063ffffffff16565b8890611aaa565b90506000611dbb6002611bda84611bda6017548861214c90919063ffffffff16565b90506000611dd883611bda6018548761214c90919063ffffffff16565b90506000611df584611bda6016548861214c90919063ffffffff16565b9050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e4757600080fd5b505af193505050508015611e59575060015b508115611e9c57601e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611e9a573d6000803e3d6000fd5b505b8815611f9357602060009054906101000a90046001600160a01b03166001600160a01b031663f305d71984308c600080601d60009054906101000a90046001600160a01b0316426040518863ffffffff1660e01b8152600401611f0496959493929190612429565b6060604051808303818588803b158015611f1d57600080fd5b505af1158015611f31573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f56919061239e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a604051611f8a929190612790565b60405180910390a15b505060006017819055601881905560165550505050505050505b6028805460ff19169055565b6001600160a01b03166000908152600c602052604090205460ff161590565b6000806120066010546002611fed91906127ac565b611ff890600a61282a565b601454611bda90869061214c565b90506000612035601054600261201c91906127ac565b61202790600a61282a565b601154611bda90879061214c565b90506000612064601054600261204b91906127ac565b61205690600a61282a565b601354611bda90889061214c565b90506000612093601054600261207a91906127ac565b61208590600a61282a565b601254611bda90899061214c565b6017549091506120a390846115e1565b6017556018546120b390836115e1565b6018556016546120c390826115e1565b601655306000908152600960205260409020546120e090856115e1565b30600081815260096020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061212f908890612717565b60405180910390a36121418685611aaa565b979650505050505050565b60008261215b57506000610ab9565b600061216783856128f8565b90508261217485836127c4565b14610a245760405162461bcd60e51b81526004016102e490612614565b6000610a2483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836121ef5760405162461bcd60e51b81526004016102e4919061246f565b5060006115d884866127c4565b80358015158114610e3257600080fd5b60006020828403121561221d578081fd5b8135610a2481612944565b600060208284031215612239578081fd5b8151610a2481612944565b60008060408385031215612256578081fd5b823561226181612944565b9150602083013561227181612944565b809150509250929050565b600080600060608486031215612290578081fd5b833561229b81612944565b925060208401356122ab81612944565b929592945050506040919091013590565b600080604083850312156122ce578182fd5b82356122d981612944565b91506122e7602084016121fc565b90509250929050565b60008060408385031215612302578182fd5b823561230d81612944565b946020939093013593505050565b60006020828403121561232c578081fd5b610a24826121fc565b60008060408385031215612347578182fd5b612350836121fc565b9150602083013560ff81168114612271578182fd5b600060208284031215612376578081fd5b5035919050565b6000806040838503121561238f578182fd5b50508035926020909101359150565b6000806000606084860312156123b2578283fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156123e0578081fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b8181101561249b5785810183015185820160400152820161247f565b818111156124ac5783604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526025908201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e604082015264206275797360d81b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601490820152737072652073616c652069732066696e616c697a6560601b604082015260600190565b6020808252601c908201527f4d61782070757263686173696e67206c696d6974206578636565647300000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603e908201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460408201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606082015260800190565b6020808252601690820152751059191c995cdcc81a5cc8189b1858dad31a5cdd195960521b604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561276f5784516001600160a01b03168352938301939183019160010161274a565b50506001600160a01b03969096166060850152505050608001529392505050565b918252602082015260400190565b60ff91909116815260200190565b600082198211156127bf576127bf61292e565b500190565b6000826127df57634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116127f65750612821565b8187048211156128085761280861292e565b8086161561281557918102915b9490941c9380026127e7565b94509492505050565b6000610a24600019848460008261284357506001610a24565b8161285057506000610a24565b816001811461286657600281146128705761289d565b6001915050610a24565b60ff8411156128815761288161292e565b6001841b9150848211156128975761289761292e565b50610a24565b5060208310610133831016604e8410600b84101617156128d0575081810a838111156128cb576128cb61292e565b610a24565b6128dd84848460016127e4565b8086048211156128ef576128ef61292e565b02949350505050565b60008160001904831182151516156129125761291261292e565b500290565b6000828210156129295761292961292e565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461295957600080fd5b5056fea264697066735822122078ac3804c8381b8adcd2c0eaab40a6c68ece14805d2c8df14cd7e6a7cb759fda64736f6c6343000800003360806040526001805473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031991821681179092556002805490911690911790556ec097ce7bc90715b34b9f1000000000600c55610708600d55670de0b6b3a7640000600e5534801561006b57600080fd5b5060405161110238038061110283398101604081905261008a916100e4565b6001600160a01b0381166100b257737a250d5630b4cf539739df2c5dacb4c659f2488d6100b4565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610112565b6000602082840312156100f5578081fd5b81516001600160a01b038116811461010b578182fd5b9392505050565b610fe1806101216000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed146101fa578063f0fc6bca1461020f578063ffb2c47914610224578063ffd49c8414610244576100dd565b8063ce7c2ac2146101ae578063d0e30db0146101dd578063e2d2e219146101e5576100dd565b80632d48e896116100bb5780632d48e8961461014f5780633a98ef391461016f5780634fab0ae814610184578063997664d714610199576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd31981461012f575b600080fd5b3480156100ee57600080fd5b506100f7610259565b6040516101049190610eed565b60405180910390f35b34801561011957600080fd5b5061012d610128366004610cf2565b61025f565b005b34801561013b57600080fd5b506100f761014a366004610cd8565b610384565b34801561015b57600080fd5b5061012d61016a366004610d6b565b610410565b34801561017b57600080fd5b506100f7610432565b34801561019057600080fd5b506100f7610438565b3480156101a557600080fd5b506100f761043e565b3480156101ba57600080fd5b506101ce6101c9366004610cd8565b610444565b60405161010493929190610ef6565b61012d610465565b3480156101f157600080fd5b506100f76106d8565b34801561020657600080fd5b506100f76106de565b34801561021b57600080fd5b5061012d6106e4565b34801561023057600080fd5b5061012d61023f366004610d3b565b6106ef565b34801561025057600080fd5b506100f761080e565b600c5481565b6000546001600160a01b0316331461027657600080fd5b6001600160a01b0382166000908152600760205260409020541561029d5761029d82610814565b6000811180156102c357506001600160a01b038216600090815260076020526040902054155b156102d6576102d18261093f565b610309565b801580156102fb57506001600160a01b03821660009081526007602052604090205415155b1561030957610309826109a0565b6001600160a01b03821660009081526007602052604090205460085461033a91839161033491610aed565b90610b38565b6008556001600160a01b038216600090815260076020526040902081905561036181610b70565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b0381166000908152600760205260408120546103a95750600061040b565b6001600160a01b0382166000908152600760205260408120546103cb90610b70565b6001600160a01b0384166000908152600760205260409020600101549091508082116103fc5760009250505061040b565b6104068282610aed565b925050505b919050565b6000546001600160a01b0316331461042757600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b0316331461047c57600080fd5b6001546040516370a0823160e01b81526000916001600160a01b0316906370a08231906104ad903090600401610d8c565b60206040518083038186803b1580156104c557600080fd5b505afa1580156104d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fd9190610d53565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061055157634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600180548351921691839190811061058f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de959034906105d590600090869030904290600401610db9565b6000604051808303818588803b1580156105ee57600080fd5b505af1158015610602573d6000803e3d6000fd5b50506001546040516370a0823160e01b81526000945061069693508692506001600160a01b03909116906370a0823190610640903090600401610d8c565b60206040518083038186803b15801561065857600080fd5b505afa15801561066c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106909190610d53565b90610aed565b6009549091506106a69082610b38565b600955600854600c546106d0916106c7916106c19085610b8d565b90610bd2565b600b5490610b38565b600b55505050565b600b5481565b600a5481565b6106ed33610814565b565b6000546001600160a01b0316331461070657600080fd5b60045480610714575061080b565b6000805a905060005b848310801561072b57508381105b156108065783600f541061073f576000600f555b61077f6004600f548154811061076557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316610c14565b156107c4576107c46004600f54815481106107aa57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316610814565b6107d96107d25a8490610aed565b8490610b38565b92505a600f805491935060006107ee83610f7a565b919050555080806107fe90610f7a565b91505061071d565b505050505b50565b600d5481565b6001600160a01b0381166000908152600760205260409020546108365761080b565b600061084182610384565b9050801561093b57600a546108569082610b38565b600a5560015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061088b9085908590600401610da0565b602060405180830381600087803b1580156108a557600080fd5b505af11580156108b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dd9190610d1b565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109119082610b38565b6001600160a01b038316600090815260076020526040902060028101919091555461036190610b70565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b600480546109b090600190610f63565b815481106109ce57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a1a57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610a6690600190610f63565b81548110610a8457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610ac857634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c59565b90505b92915050565b600080610b458385610f0c565b905083811015610b2f5760405162461bcd60e51b8152600401610b6790610e75565b60405180910390fd5b6000610b32600c546106c1600b5485610b8d90919063ffffffff16565b600082610b9c57506000610b32565b6000610ba88385610f44565b905082610bb58583610f24565b14610b2f5760405162461bcd60e51b8152600401610b6790610eac565b6000610b2f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610c93565b600d546001600160a01b03821660009081526006602052604081205490914291610c3e9190610f0c565b108015610b325750600e54610c5283610384565b1192915050565b60008184841115610c7d5760405162461bcd60e51b8152600401610b679190610e22565b506000610c8a8486610f63565b95945050505050565b60008183610cb45760405162461bcd60e51b8152600401610b679190610e22565b506000610c8a8486610f24565b80356001600160a01b038116811461040b57600080fd5b600060208284031215610ce9578081fd5b610b2f82610cc1565b60008060408385031215610d04578081fd5b610d0d83610cc1565b946020939093013593505050565b600060208284031215610d2c578081fd5b81518015158114610b2f578182fd5b600060208284031215610d4c578081fd5b5035919050565b600060208284031215610d64578081fd5b5051919050565b60008060408385031215610d7d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015610e025784516001600160a01b031683529383019391830191600101610ddd565b50506001600160a01b039690961660408501525050506060015292915050565b6000602080835283518082850152825b81811015610e4e57858101830151858201604001528201610e32565b81811115610e5f5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b90815260200190565b9283526020830191909152604082015260600190565b60008219821115610f1f57610f1f610f95565b500190565b600082610f3f57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610f5e57610f5e610f95565b500290565b600082821015610f7557610f75610f95565b500390565b6000600019821415610f8e57610f8e610f95565b5060010190565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220a418a21cdb04e1e09e0dab8f0244718edfcc8242a52166365a6e7e8c961f8deb64736f6c63430008000033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c806370a0823111610175578063a8aa1b31116100dc578063e01af92c11610095578063f449ffe41161006f578063f449ffe4146108c2578063f708a64f146108e2578063f84ba65d14610902578063f887ea4014610922576103ba565b8063e01af92c1461086d578063e96fada21461088d578063f2fde38b146108a2576103ba565b8063a8aa1b31146107ce578063a8eac492146107e3578063a9059cbb146107f8578063aaeac15814610818578063dab84ee714610838578063dd62ed3e1461084d576103ba565b806382bf293c1161012e57806382bf293c1461072f5780638da5cb5b1461074f57806392da6df51461076457806395d89b41146107795780639d1944f51461078e578063a4b45c00146107ae576103ba565b806370a082311461069b578063715018a6146106bb578063722b62ad146106d057806378109e54146106e5578063796431d0146106fa5780637d1db4a51461071a576103ba565b8063314a94d4116102195780635fac775d116101d25780635fac775d146105f1578063617fe0ed14610611578063658d4b7f1461062657806368092bd9146106465780636ddd1713146106665780636fcba3771461067b576103ba565b8063314a94d41461052f5780633cb268aa1461054f57806350db71fb14610571578063571ac8b014610591578063595dec3c146105b15780635c85974f146105d1576103ba565b80631df4ccfc1161026b5780631df4ccfc1461048357806323b872dd146104985780632b112e49146104b85780632d48e896146104cd5780632d594567146104ed578063313ce5671461050d576103ba565b80630445b667146103bf57806306fdde03146103ea578063095ea7b31461040c57806318160ddd1461043957806319db457d1461044e5780631da1db5e14610463576103ba565b366103ba5760285460ff166103b857601a5460ff16156102ed5760405162461bcd60e51b81526004016102e4906125af565b60405180910390fd5b601b54336000908152601c6020526040902054118015906103105750601b543411155b61032c5760405162461bcd60e51b81526004016102e4906125dd565b336000908152601c60205260408120805434929061034b9084906127ac565b909155505060195460009061036090346128f8565b905061037461036d610937565b3383610946565b5061037d610937565b6001600160a01b03166108fc349081150290604051600060405180830381858888f193505050501580156103b5573d6000803e3d6000fd5b50505b005b600080fd5b3480156103cb57600080fd5b506103d4610a2b565b6040516103e19190612717565b60405180910390f35b3480156103f657600080fd5b506103ff610a31565b6040516103e1919061246f565b34801561041857600080fd5b5061042c6104273660046122f0565b610a54565b6040516103e19190612464565b34801561044557600080fd5b506103d4610abf565b34801561045a57600080fd5b506103d4610ac5565b34801561046f57600080fd5b506103b861047e366004612365565b610acb565b34801561048f57600080fd5b506103d4610b54565b3480156104a457600080fd5b5061042c6104b336600461227c565b610b5a565b3480156104c457600080fd5b506103d4610c1f565b3480156104d957600080fd5b506103b86104e836600461237d565b610c68565b3480156104f957600080fd5b506103b8610508366004612335565b610d05565b34801561051957600080fd5b50610522610d60565b6040516103e1919061279e565b34801561053b57600080fd5b506103b861054a36600461231b565b610d65565b34801561055b57600080fd5b50610564610dad565b6040516103e191906123fc565b34801561057d57600080fd5b506103b861058c3660046122bc565b610dbc565b34801561059d57600080fd5b5061042c6105ac36600461220c565b610e1c565b3480156105bd57600080fd5b5061042c6105cc36600461220c565b610e37565b3480156105dd57600080fd5b506103b86105ec366004612365565b610e4c565b3480156105fd57600080fd5b506103b861060c366004612365565b610e86565b34801561061d57600080fd5b5061042c610ec0565b34801561063257600080fd5b506103b86106413660046122bc565b610ec9565b34801561065257600080fd5b506103b86106613660046122bc565b610f29565b34801561067257600080fd5b5061042c610f89565b34801561068757600080fd5b506103b86106963660046123cb565b610f92565b3480156106a757600080fd5b506103d46106b636600461220c565b610ff5565b3480156106c757600080fd5b506103b8611010565b3480156106dc57600080fd5b5061052261108f565b3480156106f157600080fd5b506103d461109d565b34801561070657600080fd5b506103b8610715366004612365565b6110a3565b34801561072657600080fd5b506103d46110dd565b34801561073b57600080fd5b506103b861074a366004612365565b6110e3565b34801561075b57600080fd5b50610564610937565b34801561077057600080fd5b506103d461111d565b34801561078557600080fd5b506103ff611123565b34801561079a57600080fd5b506103b86107a9366004612365565b611142565b3480156107ba57600080fd5b506103b86107c9366004612244565b61118b565b3480156107da57600080fd5b506105646111ee565b3480156107ef57600080fd5b5061042c6111fd565b34801561080457600080fd5b5061042c6108133660046122f0565b611206565b34801561082457600080fd5b506103b86108333660046122bc565b611213565b34801561084457600080fd5b50610564611273565b34801561085957600080fd5b506103d4610868366004612244565b611282565b34801561087957600080fd5b506103b861088836600461231b565b6112ad565b34801561089957600080fd5b506105646112f5565b3480156108ae57600080fd5b506103b86108bd36600461220c565b611304565b3480156108ce57600080fd5b506103b86108dd366004612365565b6113ba565b3480156108ee57600080fd5b506103b86108fd3660046122bc565b6113f4565b34801561090e57600080fd5b506103b861091d3660046122bc565b611538565b34801561092e57600080fd5b50610564611598565b6000546001600160a01b031690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526009909152918220546109979184906115a7565b6001600160a01b0380861660009081526009602052604080822093909355908516815220546109c690836115e1565b6001600160a01b0380851660008181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a18908690612717565b60405180910390a35060015b9392505050565b60275481565b60408051808201909152600981526808ae8d0cae4ccd8caf60bb1b602082015290565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610aad908690612717565b60405180910390a35060015b92915050565b60065490565b60105481565b610ad3611610565b6000546001600160a01b03908116911614610b005760405162461bcd60e51b81526004016102e490612655565b601e5447906001600160a01b03166108fc6064610b1d85856128f8565b610b2791906127c4565b6040518115909202916000818181858888f19350505050158015610b4f573d6000803e3d6000fd5b505050565b60145481565b6001600160a01b0383166000908152600a602090815260408083203384529091528120546001600160801b0314610c0c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054610be79184906115a7565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b610c17848484611614565b949350505050565b600554600090610c6390610c3b906001600160a01b0316610ff5565b600454610c5d90610c54906001600160a01b0316610ff5565b60065490611aaa565b90611aaa565b905090565b610c70611610565b6000546001600160a01b03908116911614610c9d5760405162461bcd60e51b81526004016102e490612655565b6022546040516316a4744b60e11b81526001600160a01b0390911690632d48e89690610ccf9085908590600401612790565b600060405180830381600087803b158015610ce957600080fd5b505af1158015610cfd573d6000803e3d6000fd5b505050505050565b610d0d611610565b6000546001600160a01b03908116911614610d3a5760405162461bcd60e51b81526004016102e490612655565b6024805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b601290565b610d6d611610565b6000546001600160a01b03908116911614610d9a5760405162461bcd60e51b81526004016102e490612655565b601a805460ff1916911515919091179055565b601d546001600160a01b031681565b610dc4611610565b6000546001600160a01b03908116911614610df15760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610e2f826001600160801b03610a54565b90505b919050565b600b6020526000908152604090205460ff1681565b610e54611610565b6000546001600160a01b03908116911614610e815760405162461bcd60e51b81526004016102e490612655565b600755565b610e8e611610565b6000546001600160a01b03908116911614610ebb5760405162461bcd60e51b81526004016102e490612655565b601b55565b60245460ff1681565b610ed1611610565b6000546001600160a01b03908116911614610efe5760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b610f31611610565b6000546001600160a01b03908116911614610f5e5760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60265460ff1681565b610f9a611610565b6000546001600160a01b03908116911614610fc75760405162461bcd60e51b81526004016102e490612655565b601184905560128390556013829055610fec81610fe6848188886115e1565b906115e1565b60145550505050565b6001600160a01b031660009081526009602052604090205490565b611018611610565b6000546001600160a01b039081169116146110455760405162461bcd60e51b81526004016102e490612655565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b602454610100900460ff1681565b60085481565b6110ab611610565b6000546001600160a01b039081169116146110d85760405162461bcd60e51b81526004016102e490612655565b602755565b60075481565b6110eb611610565b6000546001600160a01b039081169116146111185760405162461bcd60e51b81526004016102e490612655565b600855565b60195481565b60408051808201909152600581526408a8c988ab60db1b602082015290565b61114a611610565b6000546001600160a01b039081169116146111775760405162461bcd60e51b81526004016102e490612655565b620b71b0811061118657600080fd5b602355565b611193611610565b6000546001600160a01b039081169116146111c05760405162461bcd60e51b81526004016102e490612655565b601d80546001600160a01b039384166001600160a01b031991821617909155601e8054929093169116179055565b6021546001600160a01b031681565b601a5460ff1681565b6000610a24338484611614565b61121b611610565b6000546001600160a01b039081169116146112485760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b601f546001600160a01b031681565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6112b5611610565b6000546001600160a01b039081169116146112e25760405162461bcd60e51b81526004016102e490612655565b6026805460ff1916911515919091179055565b601e546001600160a01b031681565b61130c611610565b6000546001600160a01b039081169116146113395760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03811661135f5760405162461bcd60e51b81526004016102e4906124ed565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6113c2611610565b6000546001600160a01b039081169116146113ef5760405162461bcd60e51b81526004016102e490612655565b601955565b6113fc611610565b6000546001600160a01b039081169116146114295760405162461bcd60e51b81526004016102e490612655565b6001600160a01b038216301480159061145057506021546001600160a01b03838116911614155b61145957600080fd5b6001600160a01b0382166000908152600f60205260409020805460ff191682158015919091179091556114f057602254604051630a5b654b60e11b81526001600160a01b03909116906314b6ca96906114b9908590600090600401612410565b600060405180830381600087803b1580156114d357600080fd5b505af11580156114e7573d6000803e3d6000fd5b50505050611534565b6022546001600160a01b0383811660009081526009602052604090819020549051630a5b654b60e11b815291909216916314b6ca9691610ccf918691600401612410565b5050565b611540611610565b6000546001600160a01b0390811691161461156d5760405162461bcd60e51b81526004016102e490612655565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6020546001600160a01b031681565b600081848411156115cb5760405162461bcd60e51b81526004016102e4919061246f565b5060006115d88486612917565b95945050505050565b6000806115ee83856127ac565b905083811015610a245760405162461bcd60e51b81526004016102e490612578565b3390565b6001600160a01b0383166000908152600b602052604081205460ff161561164d5760405162461bcd60e51b81526004016102e4906126e7565b60285460ff161561166a57611663848484610946565b9050610a24565b6001600160a01b03841660009081526001602052604090205460ff1615801561169c57506001600160a01b0383163014155b80156116b657506004546001600160a01b03848116911614155b80156116d057506021546001600160a01b03848116911614155b80156116ea5750601e546001600160a01b03848116911614155b80156117045750601d546001600160a01b03848116911614155b1561174457600061171484610ff5565b60085490915061172484836127ac565b11156117425760405162461bcd60e51b81526004016102e49061268a565b505b6021546001600160a01b038581169116148015611763575060245460ff165b801561178857506001600160a01b0383166000908152600e602052604090205460ff16155b156117f3576001600160a01b03831660009081526025602052604090205442116117c45760405162461bcd60e51b81526004016102e490612533565b6024546117d990610100900460ff16426127ac565b6001600160a01b0384166000908152602560205260409020555b6117fd8483611aec565b611805611b31565b1561181257611812611b80565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526009909152918220546118639185906115a7565b6001600160a01b03861660009081526009602052604090205561188585611fb9565b61188f5782611899565b6118998584611fd8565b6001600160a01b0385166000908152600960205260409020549091506118bf90826115e1565b6001600160a01b038086166000908152600960209081526040808320949094559188168152600f909152205460ff16611963576022546001600160a01b0386811660009081526009602052604090819020549051630a5b654b60e11b815291909216916314b6ca9691611936918991600401612410565b600060405180830381600087803b15801561195057600080fd5b505af1925050508015611961575060015b505b6001600160a01b0384166000908152600f602052604090205460ff166119f4576022546001600160a01b0385811660009081526009602052604090819020549051630a5b654b60e11b815291909216916314b6ca96916119c7918891600401612410565b600060405180830381600087803b1580156119e157600080fd5b505af19250505080156119f2575060015b505b6022546023546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611a2891600401612717565b600060405180830381600087803b158015611a4257600080fd5b505af1925050508015611a53575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a979190612717565b60405180910390a3506001949350505050565b6000610a2483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115a7565b60075481111580611b1557506001600160a01b0382166000908152600d602052604090205460ff165b6115345760405162461bcd60e51b81526004016102e4906124c2565b6021546000906001600160a01b03163314801590611b52575060285460ff16155b8015611b60575060265460ff165b8015610c6357505060275430600090815260096020526040902054101590565b6028805460ff19166001179055601654601854601754600092611ba8929091610fe6916115e1565b9050806027541115611bba5750611fad565b6000611be06002611bda84611bda6017548761214c90919063ffffffff16565b90612191565b90506000611bee8383611aaa565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611c3657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092018101919091528054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611c8957600080fd5b505afa158015611c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc19190612228565b81600181518110611ce257634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac94790611d2e908690600090879030904290600401612720565b600060405180830381600087803b158015611d4857600080fd5b505af1158015611d5c573d6000803e3d6000fd5b505050506000611d758247611aaa90919063ffffffff16565b90506000611d99611d92600260175461219190919063ffffffff16565b8890611aaa565b90506000611dbb6002611bda84611bda6017548861214c90919063ffffffff16565b90506000611dd883611bda6018548761214c90919063ffffffff16565b90506000611df584611bda6016548861214c90919063ffffffff16565b9050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e4757600080fd5b505af193505050508015611e59575060015b508115611e9c57601e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611e9a573d6000803e3d6000fd5b505b8815611f9357602060009054906101000a90046001600160a01b03166001600160a01b031663f305d71984308c600080601d60009054906101000a90046001600160a01b0316426040518863ffffffff1660e01b8152600401611f0496959493929190612429565b6060604051808303818588803b158015611f1d57600080fd5b505af1158015611f31573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f56919061239e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a604051611f8a929190612790565b60405180910390a15b505060006017819055601881905560165550505050505050505b6028805460ff19169055565b6001600160a01b03166000908152600c602052604090205460ff161590565b6000806120066010546002611fed91906127ac565b611ff890600a61282a565b601454611bda90869061214c565b90506000612035601054600261201c91906127ac565b61202790600a61282a565b601154611bda90879061214c565b90506000612064601054600261204b91906127ac565b61205690600a61282a565b601354611bda90889061214c565b90506000612093601054600261207a91906127ac565b61208590600a61282a565b601254611bda90899061214c565b6017549091506120a390846115e1565b6017556018546120b390836115e1565b6018556016546120c390826115e1565b601655306000908152600960205260409020546120e090856115e1565b30600081815260096020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061212f908890612717565b60405180910390a36121418685611aaa565b979650505050505050565b60008261215b57506000610ab9565b600061216783856128f8565b90508261217485836127c4565b14610a245760405162461bcd60e51b81526004016102e490612614565b6000610a2483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836121ef5760405162461bcd60e51b81526004016102e4919061246f565b5060006115d884866127c4565b80358015158114610e3257600080fd5b60006020828403121561221d578081fd5b8135610a2481612944565b600060208284031215612239578081fd5b8151610a2481612944565b60008060408385031215612256578081fd5b823561226181612944565b9150602083013561227181612944565b809150509250929050565b600080600060608486031215612290578081fd5b833561229b81612944565b925060208401356122ab81612944565b929592945050506040919091013590565b600080604083850312156122ce578182fd5b82356122d981612944565b91506122e7602084016121fc565b90509250929050565b60008060408385031215612302578182fd5b823561230d81612944565b946020939093013593505050565b60006020828403121561232c578081fd5b610a24826121fc565b60008060408385031215612347578182fd5b612350836121fc565b9150602083013560ff81168114612271578182fd5b600060208284031215612376578081fd5b5035919050565b6000806040838503121561238f578182fd5b50508035926020909101359150565b6000806000606084860312156123b2578283fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156123e0578081fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b8181101561249b5785810183015185820160400152820161247f565b818111156124ac5783604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526025908201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e604082015264206275797360d81b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601490820152737072652073616c652069732066696e616c697a6560601b604082015260600190565b6020808252601c908201527f4d61782070757263686173696e67206c696d6974206578636565647300000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603e908201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460408201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606082015260800190565b6020808252601690820152751059191c995cdcc81a5cc8189b1858dad31a5cdd195960521b604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561276f5784516001600160a01b03168352938301939183019160010161274a565b50506001600160a01b03969096166060850152505050608001529392505050565b918252602082015260400190565b60ff91909116815260200190565b600082198211156127bf576127bf61292e565b500190565b6000826127df57634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116127f65750612821565b8187048211156128085761280861292e565b8086161561281557918102915b9490941c9380026127e7565b94509492505050565b6000610a24600019848460008261284357506001610a24565b8161285057506000610a24565b816001811461286657600281146128705761289d565b6001915050610a24565b60ff8411156128815761288161292e565b6001841b9150848211156128975761289761292e565b50610a24565b5060208310610133831016604e8410600b84101617156128d0575081810a838111156128cb576128cb61292e565b610a24565b6128dd84848460016127e4565b8086048211156128ef576128ef61292e565b02949350505050565b60008160001904831182151516156129125761291261292e565b500290565b6000828210156129295761292961292e565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461295957600080fd5b5056fea264697066735822122078ac3804c8381b8adcd2c0eaab40a6c68ece14805d2c8df14cd7e6a7cb759fda64736f6c63430008000033

Deployed Bytecode Sourcemap

12190:14653:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26423:6;;;;26419:414;;26451:13;;;;26450:14;26441:48;;;;-1:-1:-1;;;26441:48:0;;;;;;;:::i;:::-;;;;;;;;;26538:19;;26523:10;26508:26;;;;:14;:26;;;;;;:49;;;;:85;;;26574:19;;26561:9;:32;;26508:85;26500:125;;;;-1:-1:-1;;;26500:125:0;;;;;;;:::i;:::-;26651:10;26636:26;;;;:14;:26;;;;;:38;;26665:9;;26636:26;:38;;26665:9;;26636:38;:::i;:::-;;;;-1:-1:-1;;26710:12:0;;26685:14;;26700:22;;:9;:22;:::i;:::-;26685:37;;26733:41;26748:7;:5;:7::i;:::-;26756:10;26767:6;26733:14;:41::i;:::-;;26793:7;:5;:7::i;:::-;-1:-1:-1;;;;;26785:25:0;:36;26811:9;26785:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26419:414;;12190:14653;;;;;14309:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16218:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16556:216::-;;;;;;;;;;-1:-1:-1;16556:216:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15948:88::-;;;;;;;;;;;;;:::i;13205:30::-;;;;;;;;;;;;;:::i;21127:217::-;;;;;;;;;;-1:-1:-1;21127:217:0;;;;;:::i;:::-;;:::i;13360:27::-;;;;;;;;;;;;;:::i;17074:370::-;;;;;;;;;;-1:-1:-1;17074:370:0;;;;;:::i;:::-;;:::i;25659:142::-;;;;;;;;;;;;;:::i;25322:182::-;;;;;;;;;;-1:-1:-1;25322:182:0;;;;;:::i;:::-;;:::i;21395:174::-;;;;;;;;;;-1:-1:-1;21395:174:0;;;;;:::i;:::-;;:::i;16042:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25809:95::-;;;;;;;;;;-1:-1:-1;25809:95:0;;;;;:::i;:::-;;:::i;13809:29::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;24379:129::-;;;;;;;;;;-1:-1:-1;24379:129:0;;;;;:::i;:::-;;:::i;16780:122::-;;;;;;;;;;-1:-1:-1;16780:122:0;;;;;:::i;:::-;;:::i;12955:43::-;;;;;;;;;;-1:-1:-1;12955:43:0;;;;;:::i;:::-;;:::i;23444:95::-;;;;;;;;;;-1:-1:-1;23444:95:0;;;;;:::i;:::-;;:::i;26153:105::-;;;;;;;;;;-1:-1:-1;26153:105:0;;;;;:::i;:::-;;:::i;14113:37::-;;;;;;;;;;;;;:::i;24117:119::-;;;;;;;;;;-1:-1:-1;24117:119:0;;;;;:::i;:::-;;:::i;26266:106::-;;;;;;;;;;-1:-1:-1;26266:106:0;;;;;:::i;:::-;;:::i;14272:30::-;;;;;;;;;;;;;:::i;24513:366::-;;;;;;;;;;-1:-1:-1;24513:366:0;;;;;:::i;:::-;;:::i;16304:105::-;;;;;;;;;;-1:-1:-1;16304:105:0;;;;;:::i;:::-;;:::i;4031:148::-;;;;;;;;;;;;;:::i;14164:39::-;;;;;;;;;;;;;:::i;12788:45::-;;;;;;;;;;;;;:::i;25101:108::-;;;;;;;;;;-1:-1:-1;25101:108:0;;;;;:::i;:::-;;:::i;12710:42::-;;;;;;;;;;;;;:::i;23632:123::-;;;;;;;;;;-1:-1:-1;23632:123:0;;;;;:::i;:::-;;:::i;3389:79::-;;;;;;;;;;;;;:::i;13609:34::-;;;;;;;;;;;;;:::i;16128:84::-;;;;;;;;;;;;;:::i;25512:135::-;;;;;;;;;;-1:-1:-1;25512:135:0;;;;;:::i;:::-;;:::i;24887:206::-;;;;;;;;;;-1:-1:-1;24887:206:0;;;;;:::i;:::-;;:::i;13962:19::-;;;;;;;;;;;;;:::i;13660:32::-;;;;;;;;;;;;;:::i;16910:156::-;;;;;;;;;;-1:-1:-1;16910:156:0;;;;;:::i;:::-;;:::i;3203:105::-;;;;;;;;;;-1:-1:-1;3203:105:0;;;;;:::i;:::-;;:::i;13893:29::-;;;;;;;;;;;;;:::i;16415:133::-;;;;;;;;;;-1:-1:-1;16415:133:0;;;;;:::i;:::-;;:::i;25217:97::-;;;;;;;;;;-1:-1:-1;25217:97:0;;;;;:::i;:::-;;:::i;13851:35::-;;;;;;;;;;;;;:::i;4334:244::-;;;;;;;;;;-1:-1:-1;4334:244:0;;;;;:::i;:::-;;:::i;26048:97::-;;;;;;;;;;-1:-1:-1;26048:97:0;;;;;:::i;:::-;;:::i;23763:346::-;;;;;;;;;;-1:-1:-1;23763:346:0;;;;;:::i;:::-;;:::i;24244:127::-;;;;;;;;;;-1:-1:-1;24244:127:0;;;;;:::i;:::-;;:::i;13931:24::-;;;;;;;;;;;;;:::i;3389:79::-;3427:7;3454:6;-1:-1:-1;;;;;3454:6:0;3389:79;:::o;19470:330::-;19600:53;;;;;;;;;;;-1:-1:-1;;;19600:53:0;;;;;;;;-1:-1:-1;;;;;19600:17:0;;19563:4;19600:17;;;:9;:17;;;;;;;:53;;19622:6;;19600:21;:53::i;:::-;-1:-1:-1;;;;;19580:17:0;;;;;;;:9;:17;;;;;;:73;;;;19687:20;;;;;;;:32;;19712:6;19687:24;:32::i;:::-;-1:-1:-1;;;;;19664:20:0;;;;;;;:9;:20;;;;;;;:55;;;;19735:35;;;;;;;;;;19763:6;;19735:35;:::i;:::-;;;;;;;;-1:-1:-1;19788:4:0;19470:330;;;;;;:::o;14309:60::-;;;;:::o;16218:80::-;16290:5;;;;;;;;;;;;-1:-1:-1;;;16290:5:0;;;;16218:80;:::o;16556:216::-;16660:10;16631:4;16648:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16648:32:0;;;;;;;;;;:41;;;16705:37;16631:4;;16648:32;;16705:37;;;;16683:6;;16705:37;:::i;:::-;;;;;;;;-1:-1:-1;16760:4:0;16556:216;;;;;:::o;15948:88::-;16021:12;;15948:88;:::o;13205:30::-;;;;:::o;21127:217::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;21270:20:::1;::::0;21230:21:::1;::::0;-1:-1:-1;;;;;21270:20:0::1;21262:74;21332:3;21301:28;21313:16:::0;21230:21;21301:28:::1;:::i;:::-;:34;;;;:::i;:::-;21262:74;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;3671:1;21127:217:::0;:::o;13360:27::-;;;;:::o;17074:370::-;-1:-1:-1;;;;;17194:19:0;;17174:4;17194:19;;;:11;:19;;;;;;;;17214:10;17194:31;;;;;;;;-1:-1:-1;;;;;17194:52:0;17191:186;;17296:69;;;;;;;;;;;-1:-1:-1;;;17296:69:0;;;;;;;;-1:-1:-1;;;;;17296:19:0;;-1:-1:-1;17296:19:0;;;:11;:19;;;;;17316:10;17296:31;;;;;;;;;;:69;;17332:6;;17296:35;:69::i;:::-;-1:-1:-1;;;;;17262:19:0;;;;;;:11;:19;;;;;;;;17282:10;17262:31;;;;;;;:103;17191:186;17396:40;17410:6;17418:9;17429:6;17396:13;:40::i;:::-;17389:47;17074:370;-1:-1:-1;;;;17074:370:0:o;25659:142::-;25787:4;;25712:7;;25739:54;;25777:15;;-1:-1:-1;;;;;25787:4:0;25777:9;:15::i;:::-;25766:4;;25739:33;;25756:15;;-1:-1:-1;;;;;25766:4:0;25756:9;:15::i;:::-;25739:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;25732:61;;25659:142;:::o;25322:182::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;25431:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;25431:65:0;;-1:-1:-1;;;;;25431:11:0;;::::1;::::0;:35:::1;::::0;:65:::1;::::0;25467:10;;25479:16;;25431:65:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25322:182:::0;;:::o;21395:174::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;21479:18:::1;:28:::0;;-1:-1:-1;;21479:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;21528:33:0::1;21479:28;;21528:33:::0;;;::::1;::::0;;;::::1;;::::0;;21395:174::o;16042:80::-;12633:2;16042:80;:::o;25809:95::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;25876:13:::1;:20:::0;;-1:-1:-1;;25876:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25809:95::o;13809:29::-;;;-1:-1:-1;;;;;13809:29:0;;:::o;24379:129::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24467:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;24467:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24379:129::o;16780:122::-;16835:4;16859:35;16867:7;-1:-1:-1;;;;;16859:7:0;:35::i;:::-;16852:42;;16780:122;;;;:::o;12955:43::-;;;;;;;;;;;;;;;:::o;23444:95::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;23510:12:::1;:21:::0;23444:95::o;26153:105::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;26223:19:::1;:27:::0;26153:105::o;14113:37::-;;;;;;:::o;24117:119::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24200:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24200:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24117:119::o;26266:106::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26343:15:0;;;::::1;;::::0;;;:10:::1;:15;::::0;;;;:21;;-1:-1:-1;;26343:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26266:106::o;14272:30::-;;;;;;:::o;24513:366::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;24676:12:::1;:28:::0;;;24715:13:::1;:30:::0;;;24756:12:::1;:28:::0;;;24806:65:::1;24863:7:::0;24806:52:::1;24771:13:::0;24806:52;24691:13;24731:14;24806:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:65::-;24795:8;:76:::0;-1:-1:-1;;;;24513:366:0:o;16304:105::-;-1:-1:-1;;;;;16388:18:0;16370:7;16388:18;;;:9;:18;;;;;;;16304:105::o;4031:148::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;4138:1:::1;4122:6:::0;;4101:40:::1;::::0;-1:-1:-1;;;;;4122:6:0;;::::1;::::0;4101:40:::1;::::0;4138:1;;4101:40:::1;4169:1;4152:19:::0;;-1:-1:-1;;;;;;4152:19:0::1;::::0;;4031:148::o;14164:39::-;;;;;;;;;:::o;12788:45::-;;;;:::o;25101:108::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;25178:13:::1;:23:::0;25101:108::o;12710:42::-;;;;:::o;23632:123::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;23715:15:::1;:32:::0;23632:123::o;13609:34::-;;;;:::o;16128:84::-;16202:7;;;;;;;;;;;;-1:-1:-1;;;16202:7:0;;;;16128:84;:::o;25512:135::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;25601:6:::1;25595:3;:12;25587:21;;;::::0;::::1;;25619:14;:20:::0;25512:135::o;24887:206::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;24998:14:::1;:32:::0;;-1:-1:-1;;;;;24998:32:0;;::::1;-1:-1:-1::0;;;;;;24998:32:0;;::::1;;::::0;;;25041:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;24887:206::o;13962:19::-;;;-1:-1:-1;;;;;13962:19:0;;:::o;13660:32::-;;;;;;:::o;16910:156::-;16990:4;17014:44;17028:10;17040:9;17051:6;17014:13;:44::i;3203:105::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3275:19:0;;;::::1;;::::0;;;:14:::1;:19;::::0;;;;:25;;-1:-1:-1;;3275:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;3203:105::o;13893:29::-;;;-1:-1:-1;;;;;13893:29:0;;:::o;16415:133::-;-1:-1:-1;;;;;16517:19:0;;;16499:7;16517:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16415:133::o;25217:97::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;25285:11:::1;:21:::0;;-1:-1:-1;;25285:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25217:97::o;13851:35::-;;;-1:-1:-1;;;;;13851:35:0;;:::o;4334:244::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4423:22:0;::::1;4415:73;;;;-1:-1:-1::0;;;4415:73:0::1;;;;;;;:::i;:::-;4525:6;::::0;;4504:38:::1;::::0;-1:-1:-1;;;;;4504:38:0;;::::1;::::0;4525:6;::::1;::::0;4504:38:::1;::::0;::::1;4553:6;:17:::0;;-1:-1:-1;;;;;;4553:17:0::1;-1:-1:-1::0;;;;;4553:17:0;;;::::1;::::0;;;::::1;::::0;;4334:244::o;26048:97::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;26117:12:::1;:20:::0;26048:97::o;23763:346::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23859:23:0;::::1;23877:4;23859:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;23896:4:0::1;::::0;-1:-1:-1;;;;;23886:14:0;;::::1;23896:4:::0;::::1;23886:14;;23859:41;23851:50;;;::::0;::::1;;-1:-1:-1::0;;;;;23912:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;23912:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23956:146:::1;;23981:11;::::0;:31:::1;::::0;-1:-1:-1;;;23981:31:0;;-1:-1:-1;;;;;23981:11:0;;::::1;::::0;:20:::1;::::0;:31:::1;::::0;24002:6;;23981:11:::1;::::0;:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23956:146;;;24043:11;::::0;-1:-1:-1;;;;;24072:17:0;;::::1;24043:11;24072:17:::0;;;:9:::1;:17;::::0;;;;;;;24043:47;;-1:-1:-1;;;24043:47:0;;:11;;;::::1;::::0;:20:::1;::::0;:47:::1;::::0;24064:6;;24043:47:::1;;;:::i;23956:146::-;23763:346:::0;;:::o;24244:127::-;3611:12;:10;:12::i;:::-;3601:6;;-1:-1:-1;;;;;3601:6:0;;;:22;;;3593:67;;;;-1:-1:-1;;;3593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24331:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;24331:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24244:127::o;13931:24::-;;;-1:-1:-1;;;;;13931:24:0;;:::o;416:192::-;502:7;538:12;530:6;;;;522:29;;;;-1:-1:-1;;;522:29:0;;;;;;;;:::i;:::-;-1:-1:-1;562:9:0;574:5;578:1;574;:5;:::i;:::-;562:17;416:192;-1:-1:-1;;;;;416:192:0:o;87:181::-;145:7;;177:5;181:1;177;:5;:::i;:::-;165:17;;206:1;201;:6;;193:46;;;;-1:-1:-1;;;193:46:0;;;;;;;:::i;2289:116::-;2385:10;2289:116;:::o;17454:2004::-;-1:-1:-1;;;;;17572:18:0;;17546:4;17572:18;;;:10;:18;;;;;;;;17571:19;17563:53;;;;-1:-1:-1;;;17563:53:0;;;;;;;:::i;:::-;17630:6;;;;17627:63;;;17646:41;17661:6;17669:9;17680:6;17646:14;:41::i;:::-;17639:48;;;;17627:63;-1:-1:-1;;;;;17737:22:0;;;;;;:14;:22;;;;;;;;17736:23;:53;;;;-1:-1:-1;;;;;;17763:26:0;;17784:4;17763:26;;17736:53;:84;;;;-1:-1:-1;17815:4:0;;-1:-1:-1;;;;;17794:26:0;;;17815:4;;17794:26;;17736:84;:105;;;;-1:-1:-1;17837:4:0;;-1:-1:-1;;;;;17824:17:0;;;17837:4;;17824:17;;17736:105;:142;;;;-1:-1:-1;17858:20:0;;-1:-1:-1;;;;;17845:33:0;;;17858:20;;17845:33;;17736:142;:173;;;;-1:-1:-1;17895:14:0;;-1:-1:-1;;;;;17882:27:0;;;17895:14;;17882:27;;17736:173;17732:365;;;17925:18;17946:20;17956:9;17946;:20::i;:::-;18014:15;;17925:41;;-1:-1:-1;17990:19:0;18003:6;17925:41;17990:19;:::i;:::-;17989:40;;17981:114;;;;-1:-1:-1;;;17981:114:0;;;;;;;:::i;:::-;17732:365;;18231:4;;-1:-1:-1;;;;;18221:14:0;;;18231:4;;18221:14;:49;;;;-1:-1:-1;18252:18:0;;;;18221:49;:94;;;;-1:-1:-1;;;;;;18288:27:0;;;;;;:16;:27;;;;;;;;18287:28;18221:94;18217:299;;;-1:-1:-1;;;;;18340:24:0;;;;;;:13;:24;;;;;;18367:15;-1:-1:-1;18332:91:0;;;;-1:-1:-1;;;18332:91:0;;;;;;;:::i;:::-;18483:21;;18465:39;;18483:21;;;;;18465:15;:39;:::i;:::-;-1:-1:-1;;;;;18438:24:0;;;;;;:13;:24;;;;;:66;18217:299;18571:28;18584:6;18592;18571:12;:28::i;:::-;18656:16;:14;:16::i;:::-;18653:35;;;18675:10;:8;:10::i;:::-;18779:53;;;;;;;;;;;-1:-1:-1;;;18779:53:0;;;;;;;;-1:-1:-1;;;;;18779:17:0;;18708:22;18779:17;;;:9;:17;;;;;;;:53;;18801:6;;18779:21;:53::i;:::-;-1:-1:-1;;;;;18759:17:0;;;;;;:9;:17;;;;;:73;18863:21;18769:6;18863:13;:21::i;:::-;:56;;18913:6;18863:56;;;18887:23;18895:6;18903;18887:7;:23::i;:::-;-1:-1:-1;;;;;18953:20:0;;;;;;:9;:20;;;;;;18846:73;;-1:-1:-1;18953:40:0;;18846:73;18953:24;:40::i;:::-;-1:-1:-1;;;;;18930:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;19039:24;;;;;:16;:24;;;;;;;19035:119;;19084:11;;-1:-1:-1;;;;;19113:17:0;;;19084:11;19113:17;;;:9;:17;;;;;;;;19084:47;;-1:-1:-1;;;19084:47:0;;:11;;;;;:20;;:47;;19105:6;;19084:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19080:63;;-1:-1:-1;;;;;19170:27:0;;;;;;:16;:27;;;;;;;;19166:129;;19218:11;;-1:-1:-1;;;;;19250:20:0;;;19218:11;19250:20;;;:9;:20;;;;;;;;19218:53;;-1:-1:-1;;;19218:53:0;;:11;;;;;:20;;:53;;19239:9;;19218:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19214:69;;19311:11;;19331:14;;19311:35;;-1:-1:-1;;;;;;19311:35:0;;-1:-1:-1;;;;;19311:11:0;;;;:19;;:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19307:51;19392:9;-1:-1:-1;;;;;19375:43:0;19384:6;-1:-1:-1;;;;;19375:43:0;;19403:14;19375:43;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;19436:4:0;;17454:2004;-1:-1:-1;;;;17454:2004:0:o;274:136::-;332:7;359:43;363:1;366;359:43;;;;;;;;;;;;;;;;;:3;:43::i;19808:166::-;19905:12;;19895:6;:22;;:49;;;-1:-1:-1;;;;;;19921:23:0;;;;;;:15;:23;;;;;;;;19895:49;19887:79;;;;-1:-1:-1;;;19887:79:0;;;;;;;:::i;20922:197::-;21009:4;;20971;;-1:-1:-1;;;;;21009:4:0;20995:10;:18;;;;:38;;-1:-1:-1;21027:6:0;;;;21026:7;20995:38;:62;;;;-1:-1:-1;21046:11:0;;;;20995:62;:116;;;;-1:-1:-1;;21098:13:0;;21088:4;21070:24;;;;:9;:24;;;;;;:41;;;20922:197::o;21579:1855::-;14497:6;:13;;-1:-1:-1;;14497:13:0;14506:4;14497:13;;;21718:19:::1;::::0;21680:22:::1;::::0;21649:16:::1;::::0;14497:6;;21649:89:::1;::::0;21718:19;;21649:54:::1;::::0;:30:::1;:54::i;:89::-;21630:108;;21780:9;21764:13;;:25;21761:37;;;21791:7;;;21761:37;21810:23;21836:53;21887:1;21836:46;21872:9;21836:31;21850:16;;21836:9;:13;;:31;;;;:::i;:::-;:35:::0;::::1;:46::i;:53::-;21810:79:::0;-1:-1:-1;21900:20:0::1;21923:30;:9:::0;21810:79;21923:13:::1;:30::i;:::-;21990:16;::::0;;22004:1:::1;21990:16:::0;;;;;::::1;::::0;;21900:53;;-1:-1:-1;21966:21:0::1;::::0;21990:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21990:16:0::1;21966:40;;22035:4;22017;22022:1;22017:7;;;;;;-1:-1:-1::0;;;22017:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;22017:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;22061:6;;:13:::1;::::0;;-1:-1:-1;;;22061:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;22017:7;;22061:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22051:4;22056:1;22051:7;;;;;;-1:-1:-1::0;;;22051:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;22051:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;22145:6;:188:::1;::::0;-1:-1:-1;;;22145:188:0;;22111:21:::1;::::0;22145:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;22217:12;;22087:21:::1;::::0;22260:4;;22287::::1;::::0;22307:15:::1;::::0;22145:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22346:17;22366:40;22392:13;22366:21;:25;;:40;;;;:::i;:::-;22346:60;;22419:19;22441:38;22455:23;22476:1;22455:16;;:20;;:23;;;;:::i;:::-;22441:9:::0;;:13:::1;:38::i;:::-;22419:60;;22500:26;22529:55;22582:1;22529:48;22565:11;22529:31;22543:16;;22529:9;:13;;:31;;;;:::i;:55::-;22500:84;;22595:26;22624:54;22666:11;22624:37;22638:22;;22624:9;:13;;:37;;;;:::i;:54::-;22595:83;;22689:23;22715:51;22754:11;22715:34;22729:19;;22715:9;:13;;:34;;;;:::i;:51::-;22689:77;;22783:11;;;;;;;;;-1:-1:-1::0;;;;;22783:11:0::1;-1:-1:-1::0;;;;;22783:19:0::1;;22810:15;22783:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22779:61:::0;22855:22;;22852:85:::1;;22887:20;::::0;22879:58:::1;::::0;-1:-1:-1;;;;;22887:20:0;;::::1;::::0;22879:58;::::1;;;::::0;22918:18;;22887:20:::1;22879:58:::0;22887:20;22879:58;22918:18;22887:20;22879:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22852:85;22971:19:::0;;22968:355:::1;;23006:6;;;;;;;;;-1:-1:-1::0;;;;;23006:6:0::1;-1:-1:-1::0;;;;;23006:22:0::1;;23036:18;23082:4;23106:15;23140:1;23160::::0;23180:14:::1;;;;;;;;;-1:-1:-1::0;;;;;23180:14:0::1;23213:15;23006:237;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23263:48;23275:18;23295:15;23263:48;;;;;;;:::i;:::-;;;;;;;;22968:355;-1:-1:-1::0;;23354:1:0::1;23335:16;:20:::0;;;23366:22:::1;:26:::0;;;23403:19:::1;:23:::0;-1:-1:-1;;;;;;;;14512:1:0::1;14515:6:::0;:14;;-1:-1:-1;;14515:14:0;;;21579:1855::o;19982:114::-;-1:-1:-1;;;;;20069:19:0;20044:4;20069:19;;;:11;:19;;;;;;;;20068:20;;19982:114::o;20104:804::-;20171:7;20191:17;20211:47;20241:11;;20255:1;20241:15;;;;:::i;:::-;20236:21;;:2;:21;:::i;:::-;20222:8;;20211:20;;:6;;:10;:20::i;:47::-;20191:67;;20271:14;20288:51;20322:11;;20336:1;20322:15;;;;:::i;:::-;20317:21;;:2;:21;:::i;:::-;20299:12;;20288:24;;:6;;:10;:24::i;:51::-;20271:68;;20350:21;20374:51;20408:11;;20422:1;20408:15;;;;:::i;:::-;20403:21;;:2;:21;:::i;:::-;20385:12;;20374:24;;:6;;:10;:24::i;:51::-;20350:75;;20436:17;20456:52;20491:11;;20505:1;20491:15;;;;:::i;:::-;20486:21;;:2;:21;:::i;:::-;20467:13;;20456:25;;:6;;:10;:25::i;:52::-;20550:16;;20436:72;;-1:-1:-1;20550:28:0;;20571:6;20550:20;:28::i;:::-;20531:16;:47;20614:22;;:41;;20641:13;20614:26;:41::i;:::-;20589:22;:66;20688:19;;:34;;20712:9;20688:23;:34::i;:::-;20666:19;:56;20780:4;20762:24;;;;:9;:24;;;;;;:39;;20791:9;20762:28;:39::i;:::-;20753:4;20735:24;;;;:9;:24;;;;;;;:66;;;;20817:42;;-1:-1:-1;;;;;20817:42:0;;;;;;;20849:9;;20817:42;:::i;:::-;;;;;;;;20879:21;:6;20890:9;20879:10;:21::i;:::-;20872:28;20104:804;-1:-1:-1;;;;;;;20104:804:0:o;614:250::-;672:7;696:6;692:47;;-1:-1:-1;726:1:0;719:8;;692:47;751:9;763:5;767:1;763;:5;:::i;:::-;751:17;-1:-1:-1;796:1:0;787:5;791:1;751:17;787:5;:::i;:::-;:10;779:56;;;;-1:-1:-1;;;779:56:0;;;;;;;:::i;870:132::-;928:7;955:39;959:1;962;955:39;;;;;;;;;;;;;;;;;1094:7;1196:12;1189:5;1181:28;;;;-1:-1:-1;;;1181:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1220:9:0;1232:5;1236:1;1232;:5;:::i;14:162:1:-;81:20;;137:13;;130:21;120:32;;110:2;;166:1;163;156:12;181:259;;293:2;281:9;272:7;268:23;264:32;261:2;;;314:6;306;299:22;261:2;358:9;345:23;377:33;404:5;377:33;:::i;445:263::-;;568:2;556:9;547:7;543:23;539:32;536:2;;;589:6;581;574:22;536:2;626:9;620:16;645:33;672:5;645:33;:::i;713:402::-;;;842:2;830:9;821:7;817:23;813:32;810:2;;;863:6;855;848:22;810:2;907:9;894:23;926:33;953:5;926:33;:::i;:::-;978:5;-1:-1:-1;1035:2:1;1020:18;;1007:32;1048:35;1007:32;1048:35;:::i;:::-;1102:7;1092:17;;;800:315;;;;;:::o;1120:470::-;;;;1266:2;1254:9;1245:7;1241:23;1237:32;1234:2;;;1287:6;1279;1272:22;1234:2;1331:9;1318:23;1350:33;1377:5;1350:33;:::i;:::-;1402:5;-1:-1:-1;1459:2:1;1444:18;;1431:32;1472:35;1431:32;1472:35;:::i;:::-;1224:366;;1526:7;;-1:-1:-1;;;1580:2:1;1565:18;;;;1552:32;;1224:366::o;1595:329::-;;;1721:2;1709:9;1700:7;1696:23;1692:32;1689:2;;;1742:6;1734;1727:22;1689:2;1786:9;1773:23;1805:33;1832:5;1805:33;:::i;:::-;1857:5;-1:-1:-1;1881:37:1;1914:2;1899:18;;1881:37;:::i;:::-;1871:47;;1679:245;;;;;:::o;1929:327::-;;;2058:2;2046:9;2037:7;2033:23;2029:32;2026:2;;;2079:6;2071;2064:22;2026:2;2123:9;2110:23;2142:33;2169:5;2142:33;:::i;:::-;2194:5;2246:2;2231:18;;;;2218:32;;-1:-1:-1;;;2016:240:1:o;2261:192::-;;2370:2;2358:9;2349:7;2345:23;2341:32;2338:2;;;2391:6;2383;2376:22;2338:2;2419:28;2437:9;2419:28;:::i;2458:359::-;;;2582:2;2570:9;2561:7;2557:23;2553:32;2550:2;;;2603:6;2595;2588:22;2550:2;2631:28;2649:9;2631:28;:::i;:::-;2621:38;;2709:2;2698:9;2694:18;2681:32;2753:4;2746:5;2742:16;2735:5;2732:27;2722:2;;2778:6;2770;2763:22;2822:190;;2934:2;2922:9;2913:7;2909:23;2905:32;2902:2;;;2955:6;2947;2940:22;2902:2;-1:-1:-1;2983:23:1;;2892:120;-1:-1:-1;2892:120:1:o;3017:258::-;;;3146:2;3134:9;3125:7;3121:23;3117:32;3114:2;;;3167:6;3159;3152:22;3114:2;-1:-1:-1;;3195:23:1;;;3265:2;3250:18;;;3237:32;;-1:-1:-1;3104:171:1:o;3280:316::-;;;;3437:2;3425:9;3416:7;3412:23;3408:32;3405:2;;;3458:6;3450;3443:22;3405:2;3492:9;3486:16;3476:26;;3542:2;3531:9;3527:18;3521:25;3511:35;;3586:2;3575:9;3571:18;3565:25;3555:35;;3395:201;;;;;:::o;3601:395::-;;;;;3764:3;3752:9;3743:7;3739:23;3735:33;3732:2;;;3786:6;3778;3771:22;3732:2;-1:-1:-1;;3814:23:1;;;3884:2;3869:18;;3856:32;;-1:-1:-1;3935:2:1;3920:18;;3907:32;;3986:2;3971:18;3958:32;;-1:-1:-1;3722:274:1;-1:-1:-1;3722:274:1:o;4001:203::-;-1:-1:-1;;;;;4165:32:1;;;;4147:51;;4135:2;4120:18;;4102:102::o;4209:282::-;-1:-1:-1;;;;;4409:32:1;;;;4391:51;;4473:2;4458:18;;4451:34;4379:2;4364:18;;4346:145::o;4775:607::-;-1:-1:-1;;;;;5134:15:1;;;5116:34;;5181:2;5166:18;;5159:34;;;;5224:2;5209:18;;5202:34;;;;5267:2;5252:18;;5245:34;;;;5316:15;;;5310:3;5295:19;;5288:44;5096:3;5348:19;;5341:35;;;;5065:3;5050:19;;5032:350::o;5387:187::-;5552:14;;5545:22;5527:41;;5515:2;5500:18;;5482:92::o;5805:603::-;;5946:2;5975;5964:9;5957:21;6007:6;6001:13;6050:6;6045:2;6034:9;6030:18;6023:34;6075:4;6088:140;6102:6;6099:1;6096:13;6088:140;;;6197:14;;;6193:23;;6187:30;6163:17;;;6182:2;6159:26;6152:66;6117:10;;6088:140;;;6246:6;6243:1;6240:13;6237:2;;;6316:4;6311:2;6302:6;6291:9;6287:22;6283:31;6276:45;6237:2;-1:-1:-1;6392:2:1;6371:15;-1:-1:-1;;6367:29:1;6352:45;;;;6399:2;6348:54;;5926:482;-1:-1:-1;;;5926:482:1:o;6413:341::-;6615:2;6597:21;;;6654:2;6634:18;;;6627:30;-1:-1:-1;;;6688:2:1;6673:18;;6666:47;6745:2;6730:18;;6587:167::o;6759:402::-;6961:2;6943:21;;;7000:2;6980:18;;;6973:30;7039:34;7034:2;7019:18;;7012:62;-1:-1:-1;;;7105:2:1;7090:18;;7083:36;7151:3;7136:19;;6933:228::o;7166:401::-;7368:2;7350:21;;;7407:2;7387:18;;;7380:30;7446:34;7441:2;7426:18;;7419:62;-1:-1:-1;;;7512:2:1;7497:18;;7490:35;7557:3;7542:19;;7340:227::o;7572:351::-;7774:2;7756:21;;;7813:2;7793:18;;;7786:30;7852:29;7847:2;7832:18;;7825:57;7914:2;7899:18;;7746:177::o;7928:344::-;8130:2;8112:21;;;8169:2;8149:18;;;8142:30;-1:-1:-1;;;8203:2:1;8188:18;;8181:50;8263:2;8248:18;;8102:170::o;8277:352::-;8479:2;8461:21;;;8518:2;8498:18;;;8491:30;8557;8552:2;8537:18;;8530:58;8620:2;8605:18;;8451:178::o;8634:397::-;8836:2;8818:21;;;8875:2;8855:18;;;8848:30;8914:34;8909:2;8894:18;;8887:62;-1:-1:-1;;;8980:2:1;8965:18;;8958:31;9021:3;9006:19;;8808:223::o;9036:356::-;9238:2;9220:21;;;9257:18;;;9250:30;9316:34;9311:2;9296:18;;9289:62;9383:2;9368:18;;9210:182::o;9397:426::-;9599:2;9581:21;;;9638:2;9618:18;;;9611:30;9677:34;9672:2;9657:18;;9650:62;9748:32;9743:2;9728:18;;9721:60;9813:3;9798:19;;9571:252::o;9828:346::-;10030:2;10012:21;;;10069:2;10049:18;;;10042:30;-1:-1:-1;;;10103:2:1;10088:18;;10081:52;10165:2;10150:18;;10002:172::o;10179:177::-;10325:25;;;10313:2;10298:18;;10280:76::o;10361:983::-;;10671:3;10660:9;10656:19;10702:6;10691:9;10684:25;10728:2;10766:6;10761:2;10750:9;10746:18;10739:34;10809:3;10804:2;10793:9;10789:18;10782:31;10833:6;10868;10862:13;10899:6;10891;10884:22;10937:3;10926:9;10922:19;10915:26;;10976:2;10968:6;10964:15;10950:29;;10997:4;11010:195;11024:6;11021:1;11018:13;11010:195;;;11089:13;;-1:-1:-1;;;;;11085:39:1;11073:52;;11180:15;;;;11145:12;;;;11121:1;11039:9;11010:195;;;-1:-1:-1;;;;;;;11261:32:1;;;;11256:2;11241:18;;11234:60;-1:-1:-1;;;11325:3:1;11310:19;11303:35;11222:3;10632:712;-1:-1:-1;;;10632:712:1:o;11349:248::-;11523:25;;;11579:2;11564:18;;11557:34;11511:2;11496:18;;11478:119::o;11602:184::-;11774:4;11762:17;;;;11744:36;;11732:2;11717:18;;11699:87::o;11791:128::-;;11862:1;11858:6;11855:1;11852:13;11849:2;;;11868:18;;:::i;:::-;-1:-1:-1;11904:9:1;;11839:80::o;11924:217::-;;11990:1;11980:2;;-1:-1:-1;;;12015:31:1;;12069:4;12066:1;12059:15;12097:4;12022:1;12087:15;11980:2;-1:-1:-1;12126:9:1;;11970:171::o;12146:453::-;12242:6;12265:5;12279:314;12328:1;12365:2;12355:8;12352:16;12342:2;;12372:5;;;12342:2;12413:4;12408:3;12404:14;12398:4;12395:24;12392:2;;;12422:18;;:::i;:::-;12472:2;12462:8;12458:17;12455:2;;;12487:16;;;;12455:2;12566:17;;;;;12526:15;;12279:314;;;12223:376;;;;;;;:::o;12604:139::-;;12693:44;-1:-1:-1;;12720:8:1;12714:4;12748:922;12832:8;12822:2;;-1:-1:-1;12873:1:1;12887:5;;12822:2;12921:4;12911:2;;-1:-1:-1;12958:1:1;12972:5;;12911:2;13003:4;13021:1;13016:59;;;;13089:1;13084:183;;;;12996:271;;13016:59;13046:1;13037:10;;13060:5;;;13084:183;13121:3;13111:8;13108:17;13105:2;;;13128:18;;:::i;:::-;13184:1;13174:8;13170:16;13161:25;;13212:3;13205:5;13202:14;13199:2;;;13219:18;;:::i;:::-;13252:5;;;12996:271;;13351:2;13341:8;13338:16;13332:3;13326:4;13323:13;13319:36;13313:2;13303:8;13300:16;13295:2;13289:4;13286:12;13282:35;13279:77;13276:2;;;-1:-1:-1;13388:19:1;;;13423:14;;;13420:2;;;13440:18;;:::i;:::-;13473:5;;13276:2;13520:42;13558:3;13548:8;13542:4;13539:1;13520:42;:::i;:::-;13595:6;13590:3;13586:16;13577:7;13574:29;13571:2;;;13606:18;;:::i;:::-;13644:20;;12812:858;-1:-1:-1;;;;12812:858:1:o;13675:168::-;;13781:1;13777;13773:6;13769:14;13766:1;13763:21;13758:1;13751:9;13744:17;13740:45;13737:2;;;13788:18;;:::i;:::-;-1:-1:-1;13828:9:1;;13727:116::o;13848:125::-;;13916:1;13913;13910:8;13907:2;;;13921:18;;:::i;:::-;-1:-1:-1;13958:9:1;;13897:76::o;13978:127::-;14039:10;14034:3;14030:20;14027:1;14020:31;14070:4;14067:1;14060:15;14094:4;14091:1;14084:15;14110:133;-1:-1:-1;;;;;14187:31:1;;14177:42;;14167:2;;14233:1;14230;14223:12;14167:2;14157:86;:::o

Swarm Source

ipfs://a418a21cdb04e1e09e0dab8f0244718edfcc8242a52166365a6e7e8c961f8deb
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.