ETH Price: $2,286.00 (+2.39%)

Token

Grilled Cheese (CHZ)
 

Overview

Max Total Supply

1,000,000,000,000 CHZ

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,176,613,265.167669282428174522 CHZ

Value
$0.00
0xf69ca4beb5f15e8db16de3909c762187b3ef9739
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:
GrilledCheese

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-10
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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


interface IERC20 {
    
    function totalSupply() external view returns (uint256);
   
    function balanceOf(address account) external view returns (uint256);
   
    function transfer(address recipient, uint256 amount) external returns (bool);
   
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender,address recipient,uint256 amount) external returns (bool); 
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}




contract GrilledCheese is Context,IERC20, Ownable{
    using Address for address;
    
    string private _name = "Grilled Cheese";
    string private _symbol = "CHZ";
    uint8 private _decimals = 18;
    uint256 totalFeeFortx = 0;

    uint256 private currentThreshold = 20; //Once the token value goes up this number can be decreased (To reduce price impact on asset)
    uint256 private _totalSupply = (100000000 * 10**4) * 10**_decimals; //1T supply
    uint256 public requiredTokensToSwap = currentThreshold * 10 ** 5 * 10 ** _decimals; //threshold of around 1000000 0.02% tokens 

    mapping (address => uint256) private _balances;
    mapping (address => bool) private _excludedFromFees;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public automatedMarketMakerPairs;
    address _owner;
    address payable public marketingAddress = payable(0x00AE151397B21eEE2FbB8571C630ad16a16A496D);
    address payable public DevAddress = payable(0x00AE151397B21eEE2FbB8571C630ad16a16A496D);
    uint256 maxWalletTreshold = 3;
    uint256 maxTxTreshold = 1;
    uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; // starting 3%
    uint256 maxTxAmount = _totalSupply*maxTxTreshold/100;// 1%
    mapping (address => bool) botWallets;
    bool botTradeEnabled = false;
    
   

    uint256 private buyliqFee = 6; 
    uint256 private buyprevLiqFee = 6;
    uint256 private buymktFee = 6;
    uint256 private buyPrevmktFee = 6;
    uint256 private buyDevAmount = 2;
    uint256 private buyprevDev = 1;

    uint256 private sellliqFee = 8;
    uint256 private sellprevLiqFee = 8;
    uint256 private sellmktFee = 12;
    uint256 private sellPrevmktFee = 12;
    uint256 private sellDevAmount = 4;
    uint256 private sellprevDev = 4;
   


    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private mktTokens = 0;
    uint256 private devTokens = 0;
    uint256 private liqTokens = 0;

    event SwapAndLiquify(uint256 tokensSwapped,
		uint256 ethReceived,
		uint256 tokensIntoLiquidity
	);
    event tokensSwappedDuringTokenomics(uint256 amount);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    IUniswapV2Router02 _router;
    address public uniswapV2Pair;

    //Balances tracker

    modifier lockTheSwap{
		inSwapAndLiquify = true;
		_;
		inSwapAndLiquify = false;
	}
    

    constructor(){
        _balances[_msgSender()] = _totalSupply;
          //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks
        IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory())
            .createPair(address(this), _uniRouter.WETH());
        
        _excludedFromFees[owner()] = true;         
        _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees
        _router = _uniRouter;
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        emit Transfer(address(0),_msgSender(),_totalSupply);




    }
    receive() external payable{}


    //general token data and tracking of balances to be swapped.
    function getOwner()external view returns(address){
            return owner();
    }
    function currentmktTokens() external view returns (uint256){
            return mktTokens;
     }
     function currentPZTokens() external view returns (uint256){
            return devTokens;
     }
     function currentLiqTokens() external view returns (uint256){
            return liqTokens;
     }

     function totalSupply() external view override returns (uint256){
            return _totalSupply;
     }
   
    function balanceOf(address account) public view override returns (uint256){
        return _balances[account];
    }
   
    function transfer(address recipient, uint256 amount) external override returns (bool){
            _transfer(_msgSender(),recipient,amount);
            return true;

    }
   
    function allowance(address owner, address spender) external view override returns (uint256){
            return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) external override returns (bool){
            _approve(_msgSender(),spender,amount);
            return true;
    }

    function decimals()external view returns(uint256){
        return _decimals;
    }
    function name() external view returns (string memory) {
		return _name;
	}
    function symbol() external view returns (string memory){
        return _symbol;
    }
    
    function updateMaxTxTreshold(uint256 newVal) public onlyOwner{
        maxTxTreshold = newVal;

    }
     function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{
        maxWalletTreshold = newVal;

    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool){
        require(amount <= _allowances[sender][_msgSender()], "BEP20: transfer amount exceeds allowance");
		_transfer(sender, recipient, amount);
		_approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
		return true;
    }



    //Tokenomics related functions
    
   

    function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{
        botWallets[detectedBot] = isBot;
    }
    function currentbuyliqFee() public view returns (uint256){
            return buyliqFee;
    }
    function currentbuymktfee() public view returns (uint256){
            return buymktFee;
    }
    function currentbuyDevAmountfee() public view returns (uint256){
            return buymktFee;
    }

      function currentsellLiqFee() public view returns (uint256){
            return sellliqFee;
    }
    function currentsellmktfee() public view returns (uint256){
            return sellmktFee;
    }
    function currentsellyprizepoolfee() public view returns (uint256){
            return sellDevAmount;
    }
    function currentThresholdInt()public view returns (uint256){
        return currentThreshold;
    }
    function isExcluded(address toCheck)public view returns (bool){
            return _excludedFromFees[toCheck];
    }
    function dayAfter() public onlyOwner{
        sellliqFee = 4;
        
        sellmktFee = 6;
        
        sellDevAmount = 2;
        

    }

    function _transfer(address from, address to, uint256 amount) internal{
        require(from != address(0), "BEP20: transfer from the zero address");
		require(to != address(0), "BEP20: transfer to the zero address");
        require(amount > 0,"BEP20: transfered amount must be greater than zero");
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "BEP20: transfer amount exceeds balance");
        if(from != owner() && to != owner())
            require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        if(to != uniswapV2Pair) {
        require(balanceOf(to) + amount < maxWalletAmount, "MCRON: Balance exceeds wallet size!");
        }
        uint256 inContractBalance = balanceOf(address(this));

        if(inContractBalance >=requiredTokensToSwap && 
			!inSwapAndLiquify && 
			from != uniswapV2Pair && 
			swapAndLiquifyEnabled){
                if(inContractBalance >= requiredTokensToSwap ){
                    inContractBalance = requiredTokensToSwap;
                    swapForTokenomics(inContractBalance);
                }
            }

            bool takeFees = true;
            
            
            if(_excludedFromFees[from] || _excludedFromFees[to]) {
                totalFeeFortx = 0;
                takeFees = false;
                

            }
            uint256 mktAmount = 0;
            uint256 devAmount = 0; // Amount to be added to prize pool.
		    uint256 liqAmount = 0;  // Amount to be added to liquidity.

            if(takeFees){
                
                
                //bot fees
                if(botWallets[from] == true||botWallets[to]==true){
                   require(botTradeEnabled,"Bots cant trade");
                }
                //Selling fees
                if (automatedMarketMakerPairs[to] && to != address(_router) ){
                        totalFeeFortx = 0;
                        mktAmount = amount * sellmktFee/100;
                        liqAmount = amount * sellliqFee/100;
                        devAmount = amount * sellDevAmount/100;
                        totalFeeFortx = mktAmount + liqAmount + devAmount;
                }
                //Buy Fees
                else if(automatedMarketMakerPairs[from] && from != address(_router)) {
                    totalFeeFortx = 0;
                    mktAmount = amount * buymktFee/100;
                    liqAmount = amount * buyliqFee/100;
                    devAmount = amount * buyDevAmount/100;
                    totalFeeFortx = mktAmount + liqAmount + devAmount;
                }

                
            }

            _balances[from] = senderBalance - amount;
            _balances[to] += amount - mktAmount - devAmount - liqAmount;

          if(liqAmount != 0) {
			_balances[address(this)] += totalFeeFortx;
			//tLiqTotal += liqAmount;
            liqTokens += liqAmount;
            devTokens += devAmount;
            mktTokens += mktAmount;
			emit Transfer(from, address(this), totalFeeFortx);
            
		    }
            emit Transfer(from, to,amount-totalFeeFortx);
            
        
    }
    function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{
        swapAndLiquify(liqTokens);
        swapTokensForETHmkt(mktTokens);
        swapTokensForDev(devTokens);
        emit tokensSwappedDuringTokenomics(balanceToswap);
        mktTokens = 0;
        devTokens = 0;
        liqTokens = 0;

            

    }
    function swapTokensForETHmkt(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			marketingAddress,
			block.timestamp
		);

    }
      function swapTokensForDev(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			DevAddress,
			block.timestamp
		);

    }
   
    function swapAndLiquify(uint256 liqTokensPassed) private {
		uint256 half = liqTokensPassed / 2;
		uint256 otherHalf = liqTokensPassed - half;
		uint256 initialBalance = address(this).balance;

		swapTokensForETH(half);
		uint256 newBalance = address(this).balance - (initialBalance); 

		addLiquidity(otherHalf, newBalance);
		emit SwapAndLiquify(half,newBalance,otherHalf);
	}

    function swapTokensForETH(uint256 tokenAmount) private{
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), tokenAmount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			tokenAmount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
	}
    
    function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{
		_approve(address(this), address(_router), tokenAmount);

		_router.addLiquidityETH{value:ethAmount}(
			address(this),
			tokenAmount,
			0,
			0,
			deadAddress,
			block.timestamp
		);
	}

    function _approve(address owner,address spender, uint256 amount) internal{
        require(owner != address(0), "BEP20: approve from the zero address");
		require(spender != address(0), "BEP20: approve to the zero address");

		_allowances[owner][spender] = amount;
		emit Approval(owner, spender, amount);


    }



    //Fees related functions

    function addToExcluded(address toExclude) public onlyOwner{  
        _excludedFromFees[toExclude] = true;
    }

    function removeFromExcluded(address toRemove) public onlyOwner{
        _excludedFromFees[toRemove] = false;
    }
    

    function startPresaleStatus()public onlyOwner{
        
        buymktFee = 0;
        sellmktFee =0;
        buyliqFee =0;
        sellliqFee =0;
        buyDevAmount =0;
        sellDevAmount = 0;
        setSwapAndLiquify(false);

    }
    function endPresaleStatus() public onlyOwner{
        buymktFee = 4;
        buyliqFee = 10;
        buyDevAmount = 1;

        sellmktFee = 5;
        sellliqFee = 13;
        sellDevAmount = 2;
        setSwapAndLiquify(true);
    }

    function updateThreshold(uint newThreshold) public onlyOwner{
        currentThreshold = newThreshold;

    }

    function setSwapAndLiquify(bool _enabled) public onlyOwner{
            swapAndLiquifyEnabled = _enabled;
    }


    //Marketing related 

    function setMktAddress(address newAddress) external onlyOwner{
        marketingAddress = payable(newAddress);
    }
    function transferAssetsETH(address payable to, uint256 amount) internal{
            to.transfer(amount);
    }
    function setDevAddress(address newAddress) external onlyOwner{
        DevAddress = payable(newAddress);
    }
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }
    function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{
            buyliqFee = newAmount;
    }
    function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{
             buymktFee= newAmount;
    }
    function updatecurrentbuyDevAmountfee(uint256 newAmount) public onlyOwner{
             buyDevAmount= newAmount;
    }

      function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{
             sellliqFee= newAmount;
    }
    function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{
             sellmktFee= newAmount;
    }
    
    function updatecurrentsellDevfee(uint256 newAmount) public onlyOwner{
             sellDevAmount= newAmount;
    }
}


interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

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":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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[],"name":"DevAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPZTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyDevAmountfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellyprizepoolfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dayAfter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyDevAmountfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellDevfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600e60a08190526d4772696c6c65642043686565736560901b60c0908152620000319160019190620004d5565b506040805180820190915260038082526221a42d60e91b60209092019182526200005e91600291620004d5565b506003805460ff19166012908117909155600060045560146005556200008690600a62000619565b620000979064e8d4a51000620006da565b600655600354620000ad9060ff16600a62000619565b600554620000bf90620186a0620006da565b620000cb9190620006da565b600755600d805472ae151397b21eee2fbb8571c630ad16a16a496d6001600160a01b03199182168117909255600e805490911690911790556003600f81905560016010556006546064916200012091620006da565b6200012c9190620005ad565b6011556064601054600654620001439190620006da565b6200014f9190620005ad565b6012556014805460ff19169055600660158190556016819055601781905560185560026019556001601a556008601b819055601c55600c601d819055601e556004601f8190556020556021805461ff00191690556ddead000000000000000000000000608052600060228190556023819055602455348015620001d157600080fd5b50620001dd3362000431565b6006543360009081526008602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b1580156200023f57600080fd5b505afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a91906200057b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c357600080fd5b505afa158015620002d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fe91906200057b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200034757600080fd5b505af11580156200035c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038291906200057b565b602680546001600160a01b039283166001600160a01b0319918216178255600080548416815260096020526040808220805460ff1990811660019081179092553084529190922080549091168217905560258054909216858516179091559054620003ef92169062000481565b60065460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3506200074f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b828054620004e390620006fc565b90600052602060002090601f01602090048101928262000507576000855562000552565b82601f106200052257805160ff191683800117855562000552565b8280016001018555821562000552579182015b828111156200055257825182559160200191906001019062000535565b506200056092915062000564565b5090565b5b8082111562000560576000815560010162000565565b6000602082840312156200058e57600080fd5b81516001600160a01b0381168114620005a657600080fd5b9392505050565b600082620005cb57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111562000611578160001904821115620005f557620005f562000739565b808516156200060357918102915b93841c9390800290620005d5565b509250929050565b6000620005a660ff8416836000826200063557506001620006d4565b816200064457506000620006d4565b81600181146200065d5760028114620006685762000688565b6001915050620006d4565b60ff8411156200067c576200067c62000739565b50506001821b620006d4565b5060208310610133831016604e8410600b8410161715620006ad575081810a620006d4565b620006b98383620005d0565b8060001904821115620006d057620006d062000739565b0290505b92915050565b6000816000190483118215151615620006f757620006f762000739565b500290565b600181811c908216806200071157607f821691505b602082108114156200073357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c6122eb620007756000396000818161041b0152611e9801526122eb6000f3fe6080604052600436106102e85760003560e01c806389a4c1a011610190578063b4d95a93116100dc578063d7d7442f11610095578063edcf19b21161006f578063edcf19b2146108a2578063f19abf26146108c2578063f2fde38b146108d7578063f953cf3a146108f757600080fd5b8063d7d7442f14610827578063dd62ed3e14610847578063ddcf9b981461088d57600080fd5b8063b4d95a931461073e578063b62496f51461075e578063bf9eb5401461078e578063cba0e996146107ae578063d0d41fe1146107e7578063d30ff2d91461080757600080fd5b80639b136da411610149578063a6c38f5911610123578063a6c38f59146106c9578063a7a07452146106e9578063a9059cbb14610709578063b195b8391461072957600080fd5b80639b136da4146103f4578063a04bdc8114610693578063a5ece941146106a957600080fd5b806389a4c1a0146106095780638cd0260c146106295780638da5cb5b146105eb57806390f502831461064957806395d89b411461065e5780639a7a23d61461067357600080fd5b806349bd5a5e1161024f5780636573c4df11610208578063715018a6116101e2578063715018a614610596578063801527ce146105ab5780638628c23f146105cb578063893d20e8146105eb57600080fd5b80636573c4df1461052057806369d4eb871461054057806370a082311461056057600080fd5b806349bd5a5e146104825780634a0e963c146104a25780634a74bb02146104c25780634bd7ace5146104e15780635297defd146104f657806364c161631461050b57600080fd5b806322788f86116102a157806322788f86146103bf57806323b872dd146103d457806325f1072b146103f457806327c8f83514610409578063313ce567146104555780633cadd3c61461046d57600080fd5b806306fdde03146102f45780630882a8631461031f578063095ea7b31461034157806314c0eaf91461037157806318160ddd14610390578063220f6696146103a557600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030961090c565b6040516103169190612103565b60405180910390f35b34801561032b57600080fd5b5061033f61033a366004612078565b61099e565b005b34801561034d57600080fd5b5061036161035c366004612031565b6109d6565b6040519015158152602001610316565b34801561037d57600080fd5b506023545b604051908152602001610316565b34801561039c57600080fd5b50600654610382565b3480156103b157600080fd5b506021546103619060ff1681565b3480156103cb57600080fd5b50600554610382565b3480156103e057600080fd5b506103616103ef366004611ff0565b6109ec565b34801561040057600080fd5b50601754610382565b34801561041557600080fd5b5061043d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610316565b34801561046157600080fd5b5060035460ff16610382565b34801561047957600080fd5b50601f54610382565b34801561048e57600080fd5b5060265461043d906001600160a01b031681565b3480156104ae57600080fd5b5061033f6104bd366004611f41565b610ac0565b3480156104ce57600080fd5b5060215461036190610100900460ff1681565b3480156104ed57600080fd5b50601554610382565b34801561050257600080fd5b50601d54610382565b34801561051757600080fd5b50602454610382565b34801561052c57600080fd5b5061033f61053b366004612078565b610b0e565b34801561054c57600080fd5b5061033f61055b366004612078565b610b3d565b34801561056c57600080fd5b5061038261057b366004611f41565b6001600160a01b031660009081526008602052604090205490565b3480156105a257600080fd5b5061033f610b6c565b3480156105b757600080fd5b5061033f6105c636600461205d565b610ba2565b3480156105d757600080fd5b5061033f6105e6366004612078565b610be6565b3480156105f757600080fd5b506000546001600160a01b031661043d565b34801561061557600080fd5b50600e5461043d906001600160a01b031681565b34801561063557600080fd5b5061033f610644366004612078565b610c15565b34801561065557600080fd5b50601b54610382565b34801561066a57600080fd5b50610309610c44565b34801561067f57600080fd5b5061033f61068e366004611f82565b610c53565b34801561069f57600080fd5b5061038260075481565b3480156106b557600080fd5b50600d5461043d906001600160a01b031681565b3480156106d557600080fd5b5061033f6106e4366004611f82565b610d0f565b3480156106f557600080fd5b5061033f610704366004612078565b610d64565b34801561071557600080fd5b50610361610724366004612031565b610d93565b34801561073557600080fd5b5061033f610da0565b34801561074a57600080fd5b5061033f610759366004611f41565b610df3565b34801561076a57600080fd5b50610361610779366004611f41565b600b6020526000908152604090205460ff1681565b34801561079a57600080fd5b5061033f6107a9366004611f41565b610e3e565b3480156107ba57600080fd5b506103616107c9366004611f41565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156107f357600080fd5b5061033f610802366004611f41565b610e8a565b34801561081357600080fd5b5061033f610822366004612078565b610ed6565b34801561083357600080fd5b5061033f610842366004612078565b610f05565b34801561085357600080fd5b50610382610862366004611fb7565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561089957600080fd5b50602254610382565b3480156108ae57600080fd5b5061033f6108bd366004612078565b610f34565b3480156108ce57600080fd5b5061033f610f63565b3480156108e357600080fd5b5061033f6108f2366004611f41565b610f9e565b34801561090357600080fd5b5061033f611039565b60606001805461091b90612239565b80601f016020809104026020016040519081016040528092919081815260200182805461094790612239565b80156109945780601f1061096957610100808354040283529160200191610994565b820191906000526020600020905b81548152906001019060200180831161097757829003601f168201915b5050505050905090565b6000546001600160a01b031633146109d15760405162461bcd60e51b81526004016109c890612158565b60405180910390fd5b601555565b60006109e333848461108c565b50600192915050565b6001600160a01b0383166000908152600a60209081526040808320338452909152812054821115610a705760405162461bcd60e51b815260206004820152602860248201527f42455032303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109c8565b610a7b8484846111b0565b6001600160a01b0384166000908152600a6020908152604080832033808552925290912054610ab6918691610ab1908690612222565b61108c565b5060019392505050565b6000546001600160a01b03163314610aea5760405162461bcd60e51b81526004016109c890612158565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000546001600160a01b03163314610b385760405162461bcd60e51b81526004016109c890612158565b600f55565b6000546001600160a01b03163314610b675760405162461bcd60e51b81526004016109c890612158565b601955565b6000546001600160a01b03163314610b965760405162461bcd60e51b81526004016109c890612158565b610ba060006118cb565b565b6000546001600160a01b03163314610bcc5760405162461bcd60e51b81526004016109c890612158565b602180549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610c105760405162461bcd60e51b81526004016109c890612158565b601d55565b6000546001600160a01b03163314610c3f5760405162461bcd60e51b81526004016109c890612158565b601b55565b60606002805461091b90612239565b6000546001600160a01b03163314610c7d5760405162461bcd60e51b81526004016109c890612158565b6026546001600160a01b0383811691161415610d015760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109c8565b610d0b828261191b565b5050565b6000546001600160a01b03163314610d395760405162461bcd60e51b81526004016109c890612158565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d8e5760405162461bcd60e51b81526004016109c890612158565b601055565b60006109e33384846111b0565b6000546001600160a01b03163314610dca5760405162461bcd60e51b81526004016109c890612158565b60006017819055601d8190556015819055601b8190556019819055601f819055610ba090610ba2565b6000546001600160a01b03163314610e1d5760405162461bcd60e51b81526004016109c890612158565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314610e685760405162461bcd60e51b81526004016109c890612158565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610eb45760405162461bcd60e51b81526004016109c890612158565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f005760405162461bcd60e51b81526004016109c890612158565b601f55565b6000546001600160a01b03163314610f2f5760405162461bcd60e51b81526004016109c890612158565b600555565b6000546001600160a01b03163314610f5e5760405162461bcd60e51b81526004016109c890612158565b601755565b6000546001600160a01b03163314610f8d5760405162461bcd60e51b81526004016109c890612158565b6004601b556006601d556002601f55565b6000546001600160a01b03163314610fc85760405162461bcd60e51b81526004016109c890612158565b6001600160a01b03811661102d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c8565b611036816118cb565b50565b6000546001600160a01b031633146110635760405162461bcd60e51b81526004016109c890612158565b6004601755600a601555600160198190556005601d55600d601b556002601f55610ba090610ba2565b6001600160a01b0383166110ee5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109c8565b6001600160a01b03821661114f5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109c8565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112145760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109c8565b6001600160a01b0382166112765760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109c8565b600081116112e15760405162461bcd60e51b815260206004820152603260248201527f42455032303a207472616e73666572656420616d6f756e74206d7573742062656044820152712067726561746572207468616e207a65726f60701b60648201526084016109c8565b6001600160a01b038316600090815260086020526040902054818110156113595760405162461bcd60e51b815260206004820152602660248201527f42455032303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109c8565b6000546001600160a01b0385811691161480159061138557506000546001600160a01b03848116911614155b156113ed576012548211156113ed5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109c8565b6026546001600160a01b038481169116146114885760115482611425856001600160a01b031660009081526008602052604090205490565b61142f91906121c9565b106114885760405162461bcd60e51b815260206004820152602360248201527f4d43524f4e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016109c8565b3060009081526008602052604090205460075481108015906114ad575060215460ff16155b80156114c757506026546001600160a01b03868116911614155b80156114da5750602154610100900460ff165b156114f55760075481106114f557506007546114f58161196f565b6001600160a01b03851660009081526009602052604090205460019060ff168061153757506001600160a01b03851660009081526009602052604090205460ff165b156115455750600060048190555b60008060008315611740576001600160a01b03891660009081526013602052604090205460ff1615156001148061159957506001600160a01b03881660009081526013602052604090205460ff1615156001145b156115e25760145460ff166115e25760405162461bcd60e51b815260206004820152600f60248201526e426f74732063616e7420747261646560881b60448201526064016109c8565b6001600160a01b0388166000908152600b602052604090205460ff16801561161857506025546001600160a01b03898116911614155b15611693576000600455601d546064906116329089612203565b61163c91906121e1565b92506064601b548861164e9190612203565b61165891906121e1565b90506064601f548861166a9190612203565b61167491906121e1565b91508161168182856121c9565b61168b91906121c9565b600455611740565b6001600160a01b0389166000908152600b602052604090205460ff1680156116c957506025546001600160a01b038a8116911614155b156117405760006004556017546064906116e39089612203565b6116ed91906121e1565b92506064601554886116ff9190612203565b61170991906121e1565b905060646019548861171b9190612203565b61172591906121e1565b91508161173282856121c9565b61173c91906121c9565b6004555b61174a8787612222565b6001600160a01b038a16600090815260086020526040902055808261176f858a612222565b6117799190612222565b6117839190612222565b6001600160a01b038916600090815260086020526040812080549091906117ab9084906121c9565b9091555050801561186c5760045430600090815260086020526040812080549091906117d89084906121c9565b9250508190555080602460008282546117f191906121c9565b92505081905550816023600082825461180a91906121c9565b92505081905550826022600082825461182391906121c9565b909155505060045460405190815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548a6118af9190612222565b60405190815260200160405180910390a3505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6021805460ff19166001179055602454611988906119ed565b611993602254611a74565b61199e602354611be1565b6040518181527f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019049060200160405180910390a1506000602281905560238190556024556021805460ff19169055565b60006119fa6002836121e1565b90506000611a088284612222565b905047611a1483611d18565b6000611a208247612222565b9050611a2c8382611e4b565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611aa957611aa961228a565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611afd57600080fd5b505afa158015611b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b359190611f65565b81600181518110611b4857611b4861228a565b6001600160a01b039283166020918202929092010152602554611b6e913091168461108c565b602554600d5460405163791ac94760e01b81526001600160a01b039283169263791ac94792611bab9287926000928892911690429060040161218d565b600060405180830381600087803b158015611bc557600080fd5b505af1158015611bd9573d6000803e3d6000fd5b505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1657611c1661228a565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611c6a57600080fd5b505afa158015611c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca29190611f65565b81600181518110611cb557611cb561228a565b6001600160a01b039283166020918202929092010152602554611cdb913091168461108c565b602554600e5460405163791ac94760e01b81526001600160a01b039283169263791ac94792611bab9287926000928892911690429060040161218d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d4d57611d4d61228a565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611da157600080fd5b505afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190611f65565b81600181518110611dec57611dec61228a565b6001600160a01b039283166020918202929092010152602554611e12913091168461108c565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bab90859060009086903090429060040161218d565b602554611e639030906001600160a01b03168461108c565b60255460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660848301524260a48301529091169063f305d71990839060c4016060604051808303818588803b158015611eec57600080fd5b505af1158015611f00573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f259190612091565b5050505050565b80358015158114611f3c57600080fd5b919050565b600060208284031215611f5357600080fd5b8135611f5e816122a0565b9392505050565b600060208284031215611f7757600080fd5b8151611f5e816122a0565b60008060408385031215611f9557600080fd5b8235611fa0816122a0565b9150611fae60208401611f2c565b90509250929050565b60008060408385031215611fca57600080fd5b8235611fd5816122a0565b91506020830135611fe5816122a0565b809150509250929050565b60008060006060848603121561200557600080fd5b8335612010816122a0565b92506020840135612020816122a0565b929592945050506040919091013590565b6000806040838503121561204457600080fd5b823561204f816122a0565b946020939093013593505050565b60006020828403121561206f57600080fd5b611f5e82611f2c565b60006020828403121561208a57600080fd5b5035919050565b6000806000606084860312156120a657600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156120f85781516001600160a01b0316875295820195908201906001016120d3565b509495945050505050565b600060208083528351808285015260005b8181101561213057858101830151858201604001528201612114565b81811115612142576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b85815284602082015260a0604082015260006121ac60a08301866120bf565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156121dc576121dc612274565b500190565b6000826121fe57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561221d5761221d612274565b500290565b60008282101561223457612234612274565b500390565b600181811c9082168061224d57607f821691505b6020821081141561226e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461103657600080fdfea2646970667358221220e4c070ecb8e20186e13bff9af01112fd7cc72db53a17d2d8d6620cc4607b815e64736f6c63430008060033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c806389a4c1a011610190578063b4d95a93116100dc578063d7d7442f11610095578063edcf19b21161006f578063edcf19b2146108a2578063f19abf26146108c2578063f2fde38b146108d7578063f953cf3a146108f757600080fd5b8063d7d7442f14610827578063dd62ed3e14610847578063ddcf9b981461088d57600080fd5b8063b4d95a931461073e578063b62496f51461075e578063bf9eb5401461078e578063cba0e996146107ae578063d0d41fe1146107e7578063d30ff2d91461080757600080fd5b80639b136da411610149578063a6c38f5911610123578063a6c38f59146106c9578063a7a07452146106e9578063a9059cbb14610709578063b195b8391461072957600080fd5b80639b136da4146103f4578063a04bdc8114610693578063a5ece941146106a957600080fd5b806389a4c1a0146106095780638cd0260c146106295780638da5cb5b146105eb57806390f502831461064957806395d89b411461065e5780639a7a23d61461067357600080fd5b806349bd5a5e1161024f5780636573c4df11610208578063715018a6116101e2578063715018a614610596578063801527ce146105ab5780638628c23f146105cb578063893d20e8146105eb57600080fd5b80636573c4df1461052057806369d4eb871461054057806370a082311461056057600080fd5b806349bd5a5e146104825780634a0e963c146104a25780634a74bb02146104c25780634bd7ace5146104e15780635297defd146104f657806364c161631461050b57600080fd5b806322788f86116102a157806322788f86146103bf57806323b872dd146103d457806325f1072b146103f457806327c8f83514610409578063313ce567146104555780633cadd3c61461046d57600080fd5b806306fdde03146102f45780630882a8631461031f578063095ea7b31461034157806314c0eaf91461037157806318160ddd14610390578063220f6696146103a557600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030961090c565b6040516103169190612103565b60405180910390f35b34801561032b57600080fd5b5061033f61033a366004612078565b61099e565b005b34801561034d57600080fd5b5061036161035c366004612031565b6109d6565b6040519015158152602001610316565b34801561037d57600080fd5b506023545b604051908152602001610316565b34801561039c57600080fd5b50600654610382565b3480156103b157600080fd5b506021546103619060ff1681565b3480156103cb57600080fd5b50600554610382565b3480156103e057600080fd5b506103616103ef366004611ff0565b6109ec565b34801561040057600080fd5b50601754610382565b34801561041557600080fd5b5061043d7f000000000000000000000000000000000000000000000000000000000000dead81565b6040516001600160a01b039091168152602001610316565b34801561046157600080fd5b5060035460ff16610382565b34801561047957600080fd5b50601f54610382565b34801561048e57600080fd5b5060265461043d906001600160a01b031681565b3480156104ae57600080fd5b5061033f6104bd366004611f41565b610ac0565b3480156104ce57600080fd5b5060215461036190610100900460ff1681565b3480156104ed57600080fd5b50601554610382565b34801561050257600080fd5b50601d54610382565b34801561051757600080fd5b50602454610382565b34801561052c57600080fd5b5061033f61053b366004612078565b610b0e565b34801561054c57600080fd5b5061033f61055b366004612078565b610b3d565b34801561056c57600080fd5b5061038261057b366004611f41565b6001600160a01b031660009081526008602052604090205490565b3480156105a257600080fd5b5061033f610b6c565b3480156105b757600080fd5b5061033f6105c636600461205d565b610ba2565b3480156105d757600080fd5b5061033f6105e6366004612078565b610be6565b3480156105f757600080fd5b506000546001600160a01b031661043d565b34801561061557600080fd5b50600e5461043d906001600160a01b031681565b34801561063557600080fd5b5061033f610644366004612078565b610c15565b34801561065557600080fd5b50601b54610382565b34801561066a57600080fd5b50610309610c44565b34801561067f57600080fd5b5061033f61068e366004611f82565b610c53565b34801561069f57600080fd5b5061038260075481565b3480156106b557600080fd5b50600d5461043d906001600160a01b031681565b3480156106d557600080fd5b5061033f6106e4366004611f82565b610d0f565b3480156106f557600080fd5b5061033f610704366004612078565b610d64565b34801561071557600080fd5b50610361610724366004612031565b610d93565b34801561073557600080fd5b5061033f610da0565b34801561074a57600080fd5b5061033f610759366004611f41565b610df3565b34801561076a57600080fd5b50610361610779366004611f41565b600b6020526000908152604090205460ff1681565b34801561079a57600080fd5b5061033f6107a9366004611f41565b610e3e565b3480156107ba57600080fd5b506103616107c9366004611f41565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156107f357600080fd5b5061033f610802366004611f41565b610e8a565b34801561081357600080fd5b5061033f610822366004612078565b610ed6565b34801561083357600080fd5b5061033f610842366004612078565b610f05565b34801561085357600080fd5b50610382610862366004611fb7565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561089957600080fd5b50602254610382565b3480156108ae57600080fd5b5061033f6108bd366004612078565b610f34565b3480156108ce57600080fd5b5061033f610f63565b3480156108e357600080fd5b5061033f6108f2366004611f41565b610f9e565b34801561090357600080fd5b5061033f611039565b60606001805461091b90612239565b80601f016020809104026020016040519081016040528092919081815260200182805461094790612239565b80156109945780601f1061096957610100808354040283529160200191610994565b820191906000526020600020905b81548152906001019060200180831161097757829003601f168201915b5050505050905090565b6000546001600160a01b031633146109d15760405162461bcd60e51b81526004016109c890612158565b60405180910390fd5b601555565b60006109e333848461108c565b50600192915050565b6001600160a01b0383166000908152600a60209081526040808320338452909152812054821115610a705760405162461bcd60e51b815260206004820152602860248201527f42455032303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109c8565b610a7b8484846111b0565b6001600160a01b0384166000908152600a6020908152604080832033808552925290912054610ab6918691610ab1908690612222565b61108c565b5060019392505050565b6000546001600160a01b03163314610aea5760405162461bcd60e51b81526004016109c890612158565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000546001600160a01b03163314610b385760405162461bcd60e51b81526004016109c890612158565b600f55565b6000546001600160a01b03163314610b675760405162461bcd60e51b81526004016109c890612158565b601955565b6000546001600160a01b03163314610b965760405162461bcd60e51b81526004016109c890612158565b610ba060006118cb565b565b6000546001600160a01b03163314610bcc5760405162461bcd60e51b81526004016109c890612158565b602180549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610c105760405162461bcd60e51b81526004016109c890612158565b601d55565b6000546001600160a01b03163314610c3f5760405162461bcd60e51b81526004016109c890612158565b601b55565b60606002805461091b90612239565b6000546001600160a01b03163314610c7d5760405162461bcd60e51b81526004016109c890612158565b6026546001600160a01b0383811691161415610d015760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109c8565b610d0b828261191b565b5050565b6000546001600160a01b03163314610d395760405162461bcd60e51b81526004016109c890612158565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d8e5760405162461bcd60e51b81526004016109c890612158565b601055565b60006109e33384846111b0565b6000546001600160a01b03163314610dca5760405162461bcd60e51b81526004016109c890612158565b60006017819055601d8190556015819055601b8190556019819055601f819055610ba090610ba2565b6000546001600160a01b03163314610e1d5760405162461bcd60e51b81526004016109c890612158565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314610e685760405162461bcd60e51b81526004016109c890612158565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610eb45760405162461bcd60e51b81526004016109c890612158565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f005760405162461bcd60e51b81526004016109c890612158565b601f55565b6000546001600160a01b03163314610f2f5760405162461bcd60e51b81526004016109c890612158565b600555565b6000546001600160a01b03163314610f5e5760405162461bcd60e51b81526004016109c890612158565b601755565b6000546001600160a01b03163314610f8d5760405162461bcd60e51b81526004016109c890612158565b6004601b556006601d556002601f55565b6000546001600160a01b03163314610fc85760405162461bcd60e51b81526004016109c890612158565b6001600160a01b03811661102d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c8565b611036816118cb565b50565b6000546001600160a01b031633146110635760405162461bcd60e51b81526004016109c890612158565b6004601755600a601555600160198190556005601d55600d601b556002601f55610ba090610ba2565b6001600160a01b0383166110ee5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109c8565b6001600160a01b03821661114f5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109c8565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112145760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109c8565b6001600160a01b0382166112765760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109c8565b600081116112e15760405162461bcd60e51b815260206004820152603260248201527f42455032303a207472616e73666572656420616d6f756e74206d7573742062656044820152712067726561746572207468616e207a65726f60701b60648201526084016109c8565b6001600160a01b038316600090815260086020526040902054818110156113595760405162461bcd60e51b815260206004820152602660248201527f42455032303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109c8565b6000546001600160a01b0385811691161480159061138557506000546001600160a01b03848116911614155b156113ed576012548211156113ed5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109c8565b6026546001600160a01b038481169116146114885760115482611425856001600160a01b031660009081526008602052604090205490565b61142f91906121c9565b106114885760405162461bcd60e51b815260206004820152602360248201527f4d43524f4e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016109c8565b3060009081526008602052604090205460075481108015906114ad575060215460ff16155b80156114c757506026546001600160a01b03868116911614155b80156114da5750602154610100900460ff165b156114f55760075481106114f557506007546114f58161196f565b6001600160a01b03851660009081526009602052604090205460019060ff168061153757506001600160a01b03851660009081526009602052604090205460ff165b156115455750600060048190555b60008060008315611740576001600160a01b03891660009081526013602052604090205460ff1615156001148061159957506001600160a01b03881660009081526013602052604090205460ff1615156001145b156115e25760145460ff166115e25760405162461bcd60e51b815260206004820152600f60248201526e426f74732063616e7420747261646560881b60448201526064016109c8565b6001600160a01b0388166000908152600b602052604090205460ff16801561161857506025546001600160a01b03898116911614155b15611693576000600455601d546064906116329089612203565b61163c91906121e1565b92506064601b548861164e9190612203565b61165891906121e1565b90506064601f548861166a9190612203565b61167491906121e1565b91508161168182856121c9565b61168b91906121c9565b600455611740565b6001600160a01b0389166000908152600b602052604090205460ff1680156116c957506025546001600160a01b038a8116911614155b156117405760006004556017546064906116e39089612203565b6116ed91906121e1565b92506064601554886116ff9190612203565b61170991906121e1565b905060646019548861171b9190612203565b61172591906121e1565b91508161173282856121c9565b61173c91906121c9565b6004555b61174a8787612222565b6001600160a01b038a16600090815260086020526040902055808261176f858a612222565b6117799190612222565b6117839190612222565b6001600160a01b038916600090815260086020526040812080549091906117ab9084906121c9565b9091555050801561186c5760045430600090815260086020526040812080549091906117d89084906121c9565b9250508190555080602460008282546117f191906121c9565b92505081905550816023600082825461180a91906121c9565b92505081905550826022600082825461182391906121c9565b909155505060045460405190815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548a6118af9190612222565b60405190815260200160405180910390a3505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6021805460ff19166001179055602454611988906119ed565b611993602254611a74565b61199e602354611be1565b6040518181527f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019049060200160405180910390a1506000602281905560238190556024556021805460ff19169055565b60006119fa6002836121e1565b90506000611a088284612222565b905047611a1483611d18565b6000611a208247612222565b9050611a2c8382611e4b565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611aa957611aa961228a565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611afd57600080fd5b505afa158015611b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b359190611f65565b81600181518110611b4857611b4861228a565b6001600160a01b039283166020918202929092010152602554611b6e913091168461108c565b602554600d5460405163791ac94760e01b81526001600160a01b039283169263791ac94792611bab9287926000928892911690429060040161218d565b600060405180830381600087803b158015611bc557600080fd5b505af1158015611bd9573d6000803e3d6000fd5b505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1657611c1661228a565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611c6a57600080fd5b505afa158015611c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca29190611f65565b81600181518110611cb557611cb561228a565b6001600160a01b039283166020918202929092010152602554611cdb913091168461108c565b602554600e5460405163791ac94760e01b81526001600160a01b039283169263791ac94792611bab9287926000928892911690429060040161218d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d4d57611d4d61228a565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611da157600080fd5b505afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190611f65565b81600181518110611dec57611dec61228a565b6001600160a01b039283166020918202929092010152602554611e12913091168461108c565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bab90859060009086903090429060040161218d565b602554611e639030906001600160a01b03168461108c565b60255460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead811660848301524260a48301529091169063f305d71990839060c4016060604051808303818588803b158015611eec57600080fd5b505af1158015611f00573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f259190612091565b5050505050565b80358015158114611f3c57600080fd5b919050565b600060208284031215611f5357600080fd5b8135611f5e816122a0565b9392505050565b600060208284031215611f7757600080fd5b8151611f5e816122a0565b60008060408385031215611f9557600080fd5b8235611fa0816122a0565b9150611fae60208401611f2c565b90509250929050565b60008060408385031215611fca57600080fd5b8235611fd5816122a0565b91506020830135611fe5816122a0565b809150509250929050565b60008060006060848603121561200557600080fd5b8335612010816122a0565b92506020840135612020816122a0565b929592945050506040919091013590565b6000806040838503121561204457600080fd5b823561204f816122a0565b946020939093013593505050565b60006020828403121561206f57600080fd5b611f5e82611f2c565b60006020828403121561208a57600080fd5b5035919050565b6000806000606084860312156120a657600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156120f85781516001600160a01b0316875295820195908201906001016120d3565b509495945050505050565b600060208083528351808285015260005b8181101561213057858101830151858201604001528201612114565b81811115612142576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b85815284602082015260a0604082015260006121ac60a08301866120bf565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156121dc576121dc612274565b500190565b6000826121fe57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561221d5761221d612274565b500290565b60008282101561223457612234612274565b500390565b600181811c9082168061224d57607f821691505b6020821081141561226e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461103657600080fdfea2646970667358221220e4c070ecb8e20186e13bff9af01112fd7cc72db53a17d2d8d6620cc4607b815e64736f6c63430008060033

Deployed Bytecode Sourcemap

5417:15156:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10153:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19847:111;;;;;;;;;;-1:-1:-1;19847:111:0;;;;;:::i;:::-;;:::i;:::-;;9887:168;;;;;;;;;;-1:-1:-1;9887:168:0;;;;;:::i;:::-;;:::i;:::-;;;4865:14:1;;4858:22;4840:41;;4828:2;4813:18;9887:168:0;4795:92:1;9084:98:0;;;;;;;;;;-1:-1:-1;9164:9:0;;9084:98;;;10844:25:1;;;10832:2;10817:18;9084:98:0;10799:76:1;9297:106:0;;;;;;;;;;-1:-1:-1;9382:12:0;;9297:106;;7269:28;;;;;;;;;;-1:-1:-1;7269:28:0;;;;;;;;11789:101;;;;;;;;;;-1:-1:-1;11866:16:0;;11789:101;;10566:388;;;;;;;;;;-1:-1:-1;10566:388:0;;;;;:::i;:::-;;:::i;11355:102::-;;;;;;;;;;-1:-1:-1;11440:9:0;;11355:102;;7352:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3820:32:1;;;3802:51;;3790:2;3775:18;7352:81:0;3757:102:1;10063:84:0;;;;;;;;;;-1:-1:-1;10130:9:0;;;;10063:84;;11675:108;;;;;;;;;;-1:-1:-1;11762:13:0;;11675:108;;7889:28;;;;;;;;;;-1:-1:-1;7889:28:0;;;;-1:-1:-1;;;;;7889:28:0;;;18015:114;;;;;;;;;;-1:-1:-1;18015:114:0;;;;;:::i;:::-;;:::i;7304:41::-;;;;;;;;;;-1:-1:-1;7304:41:0;;;;;;;;;;;11151:96;;;;;;;;;;-1:-1:-1;11230:9:0;;11151:96;;11571:98;;;;;;;;;;-1:-1:-1;11651:10:0;;11571:98;;9189:99;;;;;;;;;;-1:-1:-1;9270:9:0;;9189:99;;10446:112;;;;;;;;;;-1:-1:-1;10446:112:0;;;;;:::i;:::-;;:::i;20081:120::-;;;;;;;;;;-1:-1:-1;20081:120:0;;;;;:::i;:::-;;:::i;9414:118::-;;;;;;;;;;-1:-1:-1;9414:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;9506:18:0;9480:7;9506:18;;;:9;:18;;;;;;;9414:118;4782:94;;;;;;;;;;;;;:::i;18893:113::-;;;;;;;;;;-1:-1:-1;18893:113:0;;;;;:::i;:::-;;:::i;20330:112::-;;;;;;;;;;-1:-1:-1;20330:112:0;;;;;:::i;:::-;;:::i;8886:86::-;;;;;;;;;;-1:-1:-1;8927:7:0;4204:6;-1:-1:-1;;;;;4204:6:0;8886:86;;6394:87;;;;;;;;;;-1:-1:-1;6394:87:0;;;;-1:-1:-1;;;;;6394:87:0;;;20211:113;;;;;;;;;;-1:-1:-1;20211:113:0;;;;;:::i;:::-;;:::i;11467:98::-;;;;;;;;;;-1:-1:-1;11547:10:0;;11467:98;;10235:88;;;;;;;;;;;;;:::i;19405:242::-;;;;;;;;;;-1:-1:-1;19405:242:0;;;;;:::i;:::-;;:::i;5886:82::-;;;;;;;;;;;;;;;;6294:93;;;;;;;;;;-1:-1:-1;6294:93:0;;;;-1:-1:-1;;;;;6294:93:0;;;11015:130;;;;;;;;;;-1:-1:-1;11015:130:0;;;;;:::i;:::-;;:::i;10335:104::-;;;;;;;;;;-1:-1:-1;10335:104:0;;;;;:::i;:::-;;:::i;9543:176::-;;;;;;;;;;-1:-1:-1;9543:176:0;;;;;:::i;:::-;;:::i;18267:249::-;;;;;;;;;;;;;:::i;18137:116::-;;;;;;;;;;-1:-1:-1;18137:116:0;;;;;:::i;:::-;;:::i;6208:58::-;;;;;;;;;;-1:-1:-1;6208:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19044:118;;;;;;;;;;-1:-1:-1;19044:118:0;;;;;:::i;:::-;;:::i;11896:::-;;;;;;;;;;-1:-1:-1;11896:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;11980:26:0;11953:4;11980:26;;;:17;:26;;;;;;;;;11896:118;19287:112;;;;;;;;;;-1:-1:-1;19287:112:0;;;;;:::i;:::-;;:::i;20454:116::-;;;;;;;;;;-1:-1:-1;20454:116:0;;;;;:::i;:::-;;:::i;18773:112::-;;;;;;;;;;-1:-1:-1;18773:112:0;;;;;:::i;:::-;;:::i;9730:148::-;;;;;;;;;;-1:-1:-1;9730:148:0;;;;;:::i;:::-;-1:-1:-1;;;;;9843:18:0;;;9813:7;9843:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9730:148;8978:99;;;;;;;;;;-1:-1:-1;9059:9:0;;8978:99;;19964:111;;;;;;;;;;-1:-1:-1;19964:111:0;;;;;:::i;:::-;;:::i;12020:154::-;;;;;;;;;;;;;:::i;5031:192::-;;;;;;;;;;-1:-1:-1;5031:192:0;;;;;:::i;:::-;;:::i;18522:243::-;;;;;;;;;;;;;:::i;10153:76::-;10192:13;10219:5;10212:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10153:76;:::o;19847:111::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;;;;;;;;;19929:9:::1;:21:::0;19847:111::o;9887:168::-;9964:4;9984:37;171:10;10006:7;10014:6;9984:8;:37::i;:::-;-1:-1:-1;10043:4:0;9887:168;;;;:::o;10566:388::-;-1:-1:-1;;;;;10732:19:0;;10698:4;10732:19;;;:11;:19;;;;;;;;171:10;10732:33;;;;;;;;10722:43;;;10714:96;;;;-1:-1:-1;;;10714:96:0;;7759:2:1;10714:96:0;;;7741:21:1;7798:2;7778:18;;;7771:30;7837:34;7817:18;;;7810:62;-1:-1:-1;;;7888:18:1;;;7881:38;7936:19;;10714:96:0;7731:230:1;10714:96:0;10815:36;10825:6;10833:9;10844:6;10815:9;:36::i;:::-;-1:-1:-1;;;;;10887:19:0;;;;;;:11;:19;;;;;;;;171:10;10887:33;;;;;;;;;10856:74;;10865:6;;10887:42;;10923:6;;10887:42;:::i;:::-;10856:8;:74::i;:::-;-1:-1:-1;10942:4:0;10566:388;;;;;:::o;18015:114::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18086:28:0::1;;::::0;;;:17:::1;:28;::::0;;;;:35;;-1:-1:-1;;18086:35:0::1;18117:4;18086:35;::::0;;18015:114::o;10446:112::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;10522:17:::1;:26:::0;10446:112::o;20081:120::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;20170:12:::1;:23:::0;20081:120::o;4782:94::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;4847:21:::1;4865:1;4847:9;:21::i;:::-;4782:94::o:0;18893:113::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;18966:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;18966:32:0;;::::1;::::0;;;::::1;::::0;;18893:113::o;20330:112::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;20413:10:::1;:21:::0;20330:112::o;20211:113::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;20295:10:::1;:21:::0;20211:113::o;10235:88::-;10276:13;10308:7;10301:14;;;;;:::i;19405:242::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;19512:13:::1;::::0;-1:-1:-1;;;;;19504:21:0;;::::1;19512:13:::0;::::1;19504:21;;19496:91;;;::::0;-1:-1:-1;;;19496:91:0;;7333:2:1;19496:91:0::1;::::0;::::1;7315:21:1::0;7372:2;7352:18;;;7345:30;7411:34;7391:18;;;7384:62;7482:27;7462:18;;;7455:55;7527:19;;19496:91:0::1;7305:247:1::0;19496:91:0::1;19598:41;19627:4;19633:5;19598:28;:41::i;:::-;19405:242:::0;;:::o;11015:130::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11106:23:0;;;::::1;;::::0;;;:10:::1;:23;::::0;;;;:31;;-1:-1:-1;;11106:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11015:130::o;10335:104::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;10407:13:::1;:22:::0;10335:104::o;9543:176::-;9623:4;9643:40;171:10;9666:9;9676:6;9643:9;:40::i;18267:249::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;18345:1:::1;18333:9;:13:::0;;;18357:10:::1;:13:::0;;;18381:9:::1;:12:::0;;;18404:10:::1;:13:::0;;;18428:12:::1;:15:::0;;;18454:13:::1;:17:::0;;;18482:24:::1;::::0;:17:::1;:24::i;18137:116::-:0;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18210:27:0::1;18240:5;18210:27:::0;;;:17:::1;:27;::::0;;;;:35;;-1:-1:-1;;18210:35:0::1;::::0;;18137:116::o;19044:118::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;19116:16:::1;:38:::0;;-1:-1:-1;;;;;;19116:38:0::1;-1:-1:-1::0;;;;;19116:38:0;;;::::1;::::0;;;::::1;::::0;;19044:118::o;19287:112::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;19359:10:::1;:32:::0;;-1:-1:-1;;;;;;19359:32:0::1;-1:-1:-1::0;;;;;19359:32:0;;;::::1;::::0;;;::::1;::::0;;19287:112::o;20454:116::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;20538:13:::1;:24:::0;20454:116::o;18773:112::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;18844:16:::1;:31:::0;18773:112::o;19964:111::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;20047:9:::1;:20:::0;19964:111::o;12020:154::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;12080:1:::1;12067:10;:14:::0;12115:1:::1;12102:10;:14:::0;12153:1:::1;12137:13;:17:::0;12020:154::o;5031:192::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5120:22:0;::::1;5112:73;;;::::0;-1:-1:-1;;;5112:73:0;;6926:2:1;5112:73:0::1;::::0;::::1;6908:21:1::0;6965:2;6945:18;;;6938:30;7004:34;6984:18;;;6977:62;-1:-1:-1;;;7055:18:1;;;7048:36;7101:19;;5112:73:0::1;6898:228:1::0;5112:73:0::1;5196:19;5206:8;5196:9;:19::i;:::-;5031:192:::0;:::o;18522:243::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;171:10;4351:23;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;18589:1:::1;18577:9;:13:::0;18613:2:::1;18601:9;:14:::0;18641:1:::1;18626:12;:16:::0;;;18668:1:::1;18655:10;:14:::0;18693:2:::1;18680:10;:15:::0;-1:-1:-1;18706:13:0::1;:17:::0;18734:23:::1;::::0;:17:::1;:23::i;17649:322::-:0;-1:-1:-1;;;;;17741:19:0;;17733:68;;;;-1:-1:-1;;;17733:68:0;;6521:2:1;17733:68:0;;;6503:21:1;6560:2;6540:18;;;6533:30;6599:34;6579:18;;;6572:62;-1:-1:-1;;;6650:18:1;;;6643:34;6694:19;;17733:68:0;6493:226:1;17733:68:0;-1:-1:-1;;;;;17814:21:0;;17806:68;;;;-1:-1:-1;;;17806:68:0;;10497:2:1;17806:68:0;;;10479:21:1;10536:2;10516:18;;;10509:30;10575:34;10555:18;;;10548:62;-1:-1:-1;;;10626:18:1;;;10619:32;10668:19;;17806:68:0;10469:224:1;17806:68:0;-1:-1:-1;;;;;17881:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17927:32;;10844:25:1;;;17927:32:0;;10817:18:1;17927:32:0;;;;;;;17649:322;;;:::o;12182:3220::-;-1:-1:-1;;;;;12270:18:0;;12262:68;;;;-1:-1:-1;;;12262:68:0;;6115:2:1;12262:68:0;;;6097:21:1;6154:2;6134:18;;;6127:30;6193:34;6173:18;;;6166:62;-1:-1:-1;;;6244:18:1;;;6237:35;6289:19;;12262:68:0;6087:227:1;12262:68:0;-1:-1:-1;;;;;12343:16:0;;12335:64;;;;-1:-1:-1;;;12335:64:0;;9689:2:1;12335:64:0;;;9671:21:1;9728:2;9708:18;;;9701:30;9767:34;9747:18;;;9740:62;-1:-1:-1;;;9818:18:1;;;9811:33;9861:19;;12335:64:0;9661:225:1;12335:64:0;12427:1;12418:6;:10;12410:72;;;;-1:-1:-1;;;12410:72:0;;5696:2:1;12410:72:0;;;5678:21:1;5735:2;5715:18;;;5708:30;5774:34;5754:18;;;5747:62;-1:-1:-1;;;5825:18:1;;;5818:48;5883:19;;12410:72:0;5668:240:1;12410:72:0;-1:-1:-1;;;;;12517:15:0;;12493:21;12517:15;;;:9;:15;;;;;;12551:23;;;;12543:74;;;;-1:-1:-1;;;12543:74:0;;9282:2:1;12543:74:0;;;9264:21:1;9321:2;9301:18;;;9294:30;9360:34;9340:18;;;9333:62;-1:-1:-1;;;9411:18:1;;;9404:36;9457:19;;12543:74:0;9254:228:1;12543:74:0;4177:7;4204:6;-1:-1:-1;;;;;12631:15:0;;;4204:6;;12631:15;;;;:32;;-1:-1:-1;4177:7:0;4204:6;-1:-1:-1;;;;;12650:13:0;;;4204:6;;12650:13;;12631:32;12628:124;;;12696:11;;12686:6;:21;;12678:74;;;;-1:-1:-1;;;12678:74:0;;8168:2:1;12678:74:0;;;8150:21:1;8207:2;8187:18;;;8180:30;8246:34;8226:18;;;8219:62;-1:-1:-1;;;8297:18:1;;;8290:38;8345:19;;12678:74:0;8140:230:1;12678:74:0;12772:13;;-1:-1:-1;;;;;12766:19:0;;;12772:13;;12766:19;12763:135;;12831:15;;12822:6;12806:13;12816:2;-1:-1:-1;;;;;9506:18:0;9480:7;9506:18;;;:9;:18;;;;;;;9414:118;12806:13;:22;;;;:::i;:::-;:40;12798:88;;;;-1:-1:-1;;;12798:88:0;;10093:2:1;12798:88:0;;;10075:21:1;10132:2;10112:18;;;10105:30;10171:34;10151:18;;;10144:62;-1:-1:-1;;;10222:18:1;;;10215:33;10265:19;;12798:88:0;10065:225:1;12798:88:0;12954:4;12908:25;9506:18;;;:9;:18;;;;;;12996:20;;12976:40;;;;;:66;;-1:-1:-1;13026:16:0;;;;13025:17;12976:66;:96;;;;-1:-1:-1;13059:13:0;;-1:-1:-1;;;;;13051:21:0;;;13059:13;;13051:21;;12976:96;:126;;;;-1:-1:-1;13081:21:0;;;;;;;12976:126;12973:352;;;13146:20;;13125:17;:41;13122:188;;-1:-1:-1;13211:20:0;;13254:36;13211:20;13254:17;:36::i;:::-;-1:-1:-1;;;;;13407:23:0;;13341:13;13407:23;;;:17;:23;;;;;;13357:4;;13407:23;;;:48;;-1:-1:-1;;;;;;13434:21:0;;;;;;:17;:21;;;;;;;;13407:48;13404:160;;;-1:-1:-1;13492:1:0;13476:13;:17;;;13404:160;13578:17;13614;13681;13759:8;13756:1125;;;-1:-1:-1;;;;;13854:16:0;;;;;;:10;:16;;;;;;;;:24;;:16;:24;;:46;;-1:-1:-1;;;;;;13880:14:0;;;;;;:10;:14;;;;;;;;:20;;:14;:20;13854:46;13851:134;;;13931:15;;;;13923:42;;;;-1:-1:-1;;;13923:42:0;;8577:2:1;13923:42:0;;;8559:21:1;8616:2;8596:18;;;8589:30;-1:-1:-1;;;8635:18:1;;;8628:45;8690:18;;13923:42:0;8549:165:1;13923:42:0;-1:-1:-1;;;;;14039:29:0;;;;;;:25;:29;;;;;;;;:55;;;;-1:-1:-1;14086:7:0;;-1:-1:-1;;;;;14072:22:0;;;14086:7;;14072:22;;14039:55;14035:811;;;14139:1;14123:13;:17;14188:10;;14199:3;;14179:19;;:6;:19;:::i;:::-;:23;;;;:::i;:::-;14167:35;;14261:3;14250:10;;14241:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;14229:35;;14326:3;14312:13;;14303:6;:22;;;;:::i;:::-;:26;;;;:::i;:::-;14291:38;-1:-1:-1;14291:38:0;14372:21;14384:9;14372;:21;:::i;:::-;:33;;;;:::i;:::-;14356:13;:49;14035:811;;;-1:-1:-1;;;;;14479:31:0;;;;;;:25;:31;;;;;;;;:59;;;;-1:-1:-1;14530:7:0;;-1:-1:-1;;;;;14514:24:0;;;14530:7;;14514:24;;14479:59;14476:370;;;14579:1;14563:13;:17;14624:9;;14634:3;;14615:18;;:6;:18;:::i;:::-;:22;;;;:::i;:::-;14603:34;;14691:3;14681:9;;14672:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;14660:34;;14751:3;14738:12;;14729:6;:21;;;;:::i;:::-;:25;;;;:::i;:::-;14717:37;-1:-1:-1;14717:37:0;14793:21;14805:9;14793;:21;:::i;:::-;:33;;;;:::i;:::-;14777:13;:49;14476:370;14915:22;14931:6;14915:13;:22;:::i;:::-;-1:-1:-1;;;;;14897:15:0;;;;;;:9;:15;;;;;:40;15002:9;14990;14969:18;14978:9;14969:6;:18;:::i;:::-;:30;;;;:::i;:::-;:42;;;;:::i;:::-;-1:-1:-1;;;;;14952:13:0;;;;;;:9;:13;;;;;:59;;:13;;;:59;;;;;:::i;:::-;;;;-1:-1:-1;;15029:14:0;;15026:286;;15079:13;;15069:4;15051:24;;;;:9;:24;;;;;:41;;:24;;;:41;;15079:13;;15051:41;:::i;:::-;;;;;;;;15150:9;15137;;:22;;;;;;;:::i;:::-;;;;;;;;15187:9;15174;;:22;;;;;;;:::i;:::-;;;;;;;;15224:9;15211;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;15274:13:0;;15244:44;;10844:25:1;;;15267:4:0;;-1:-1:-1;;;;;15244:44:0;;;;;10832:2:1;10817:18;15244:44:0;;;;;;;15026:286;15346:2;-1:-1:-1;;;;;15331:39:0;15340:4;-1:-1:-1;;;;;15331:39:0;;15356:13;;15349:6;:20;;;;:::i;:::-;15331:39;;10844:25:1;;;10832:2;10817:18;15331:39:0;;;;;;;12251:3151;;;;;;12182:3220;;;:::o;5231:173::-;5287:16;5306:6;;-1:-1:-1;;;;;5323:17:0;;;-1:-1:-1;;;;;;5323:17:0;;;;;;5356:40;;5306:6;;;;;;;5356:40;;5287:16;5356:40;5276:128;5231:173;:::o;19653:188::-;-1:-1:-1;;;;;19736:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;19736:39:0;;;;;;;;;;19793:40;;19736:39;;:31;19793:40;;;19653:188;;:::o;15408:342::-;7977:16;:23;;-1:-1:-1;;7977:23:0;7996:4;7977:23;;;15503:9:::1;::::0;15488:25:::1;::::0;:14:::1;:25::i;:::-;15524:30;15544:9;;15524:19;:30::i;:::-;15565:27;15582:9;;15565:16;:27::i;:::-;15608:44;::::0;10844:25:1;;;15608:44:0::1;::::0;10832:2:1;10817:18;15608:44:0::1;;;;;;;-1:-1:-1::0;15675:1:0::1;15663:9;:13:::0;;;15687:9:::1;:13:::0;;;15711:9:::1;:13:::0;8011:16;:24;;-1:-1:-1;;8011:24:0;;;15408:342::o;16564:388::-;16626:12;16641:19;16659:1;16641:15;:19;:::i;:::-;16626:34;-1:-1:-1;16665:17:0;16685:22;16626:34;16685:15;:22;:::i;:::-;16665:42;-1:-1:-1;16737:21:0;16765:22;16782:4;16765:16;:22::i;:::-;16792:18;16813:40;16838:14;16813:21;:40;:::i;:::-;16792:61;;16861:35;16874:9;16885:10;16861:12;:35::i;:::-;16906:41;;;12264:25:1;;;12320:2;12305:18;;12298:34;;;12348:18;;;12341:34;;;16906:41:0;;12252:2:1;12237:18;16906:41:0;;;;;;;16621:331;;;;16564:388;:::o;15756:399::-;15843:16;;;15857:1;15843:16;;;;;;;;15819:21;;15843:16;;;;;;;;;;-1:-1:-1;15843:16:0;15819:40;;15882:4;15864;15869:1;15864:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15864:23:0;;;:7;;;;;;;;;;:23;;;;15902:7;;:14;;;-1:-1:-1;;;15902:14:0;;;;:7;;;;;:12;;:14;;;;;15864:7;;15902:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15892:4;15897:1;15892:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15892:24:0;;;:7;;;;;;;;;:24;15953:7;;15921:49;;15938:4;;15953:7;15963:6;15921:8;:49::i;:::-;15981:7;;16103:16;;15981:164;;-1:-1:-1;;;15981:164:0;;-1:-1:-1;;;;;15981:7:0;;;;:58;;:164;;16045:6;;15981:7;;16093:4;;16103:16;;;16125:15;;15981:164;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15808:347;15756:399;:::o;16163:390::-;16247:16;;;16261:1;16247:16;;;;;;;;16223:21;;16247:16;;;;;;;;;;-1:-1:-1;16247:16:0;16223:40;;16286:4;16268;16273:1;16268:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16268:23:0;;;:7;;;;;;;;;;:23;;;;16306:7;;:14;;;-1:-1:-1;;;16306:14:0;;;;:7;;;;;:12;;:14;;;;;16268:7;;16306:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16296:4;16301:1;16296:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16296:24:0;;;:7;;;;;;;;;:24;16357:7;;16325:49;;16342:4;;16357:7;16367:6;16325:8;:49::i;:::-;16385:7;;16507:10;;16385:158;;-1:-1:-1;;;16385:158:0;;-1:-1:-1;;;;;16385:7:0;;;;:58;;:158;;16449:6;;16385:7;;16497:4;;16507:10;;;16523:15;;16385:158;;;:::i;16960:397::-;17043:16;;;17057:1;17043:16;;;;;;;;17019:21;;17043:16;;;;;;;;;;-1:-1:-1;17043:16:0;17019:40;;17082:4;17064;17069:1;17064:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17064:23:0;;;:7;;;;;;;;;;:23;;;;17102:7;;:14;;;-1:-1:-1;;;17102:14:0;;;;:7;;;;;:12;;:14;;;;;17064:7;;17102:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17092:4;17097:1;17092:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17092:24:0;;;:7;;;;;;;;;:24;17153:7;;17121:54;;17138:4;;17153:7;17163:11;17121:8;:54::i;:::-;17186:7;;:166;;-1:-1:-1;;;17186:166:0;;-1:-1:-1;;;;;17186:7:0;;;;:58;;:166;;17250:11;;17186:7;;17303:4;;17321;;17332:15;;17186:166;;;:::i;17369:272::-;17474:7;;17442:54;;17459:4;;-1:-1:-1;;;;;17474:7:0;17484:11;17442:8;:54::i;:::-;17503:7;;:133;;-1:-1:-1;;;17503:133:0;;17557:4;17503:133;;;4429:34:1;4479:18;;;4472:34;;;-1:-1:-1;4522:18:1;;;4515:34;;;4565:18;;;4558:34;-1:-1:-1;;;;;17599:11:0;4629:15:1;;4608:19;;;4601:44;17616:15:0;4661:19:1;;;4654:35;17503:7:0;;;;:23;;17533:9;;4363:19:1;;17503:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17369:272;;:::o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;307:1;304;297:12;259:2;346:9;333:23;365:31;390:5;365:31;:::i;:::-;415:5;249:177;-1:-1:-1;;;249:177:1:o;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:2;;;570:1;567;560:12;522:2;602:9;596:16;621:31;646:5;621:31;:::i;687:323::-;760:6;768;821:2;809:9;800:7;796:23;792:32;789:2;;;837:1;834;827:12;789:2;876:9;863:23;895:31;920:5;895:31;:::i;:::-;945:5;-1:-1:-1;969:35:1;1000:2;985:18;;969:35;:::i;:::-;959:45;;779:231;;;;;:::o;1015:388::-;1083:6;1091;1144:2;1132:9;1123:7;1119:23;1115:32;1112:2;;;1160:1;1157;1150:12;1112:2;1199:9;1186:23;1218:31;1243:5;1218:31;:::i;:::-;1268:5;-1:-1:-1;1325:2:1;1310:18;;1297:32;1338:33;1297:32;1338:33;:::i;:::-;1390:7;1380:17;;;1102:301;;;;;:::o;1408:456::-;1485:6;1493;1501;1554:2;1542:9;1533:7;1529:23;1525:32;1522:2;;;1570:1;1567;1560:12;1522:2;1609:9;1596:23;1628:31;1653:5;1628:31;:::i;:::-;1678:5;-1:-1:-1;1735:2:1;1720:18;;1707:32;1748:33;1707:32;1748:33;:::i;:::-;1512:352;;1800:7;;-1:-1:-1;;;1854:2:1;1839:18;;;;1826:32;;1512:352::o;2189:315::-;2257:6;2265;2318:2;2306:9;2297:7;2293:23;2289:32;2286:2;;;2334:1;2331;2324:12;2286:2;2373:9;2360:23;2392:31;2417:5;2392:31;:::i;:::-;2442:5;2494:2;2479:18;;;;2466:32;;-1:-1:-1;;;2276:228:1:o;2509:180::-;2565:6;2618:2;2606:9;2597:7;2593:23;2589:32;2586:2;;;2634:1;2631;2624:12;2586:2;2657:26;2673:9;2657:26;:::i;2694:180::-;2753:6;2806:2;2794:9;2785:7;2781:23;2777:32;2774:2;;;2822:1;2819;2812:12;2774:2;-1:-1:-1;2845:23:1;;2764:110;-1:-1:-1;2764:110:1:o;2879:306::-;2967:6;2975;2983;3036:2;3024:9;3015:7;3011:23;3007:32;3004:2;;;3052:1;3049;3042:12;3004:2;3081:9;3075:16;3065:26;;3131:2;3120:9;3116:18;3110:25;3100:35;;3175:2;3164:9;3160:18;3154:25;3144:35;;2994:191;;;;;:::o;3190:461::-;3243:3;3281:5;3275:12;3308:6;3303:3;3296:19;3334:4;3363:2;3358:3;3354:12;3347:19;;3400:2;3393:5;3389:14;3421:1;3431:195;3445:6;3442:1;3439:13;3431:195;;;3510:13;;-1:-1:-1;;;;;3506:39:1;3494:52;;3566:12;;;;3601:15;;;;3542:1;3460:9;3431:195;;;-1:-1:-1;3642:3:1;;3251:400;-1:-1:-1;;;;;3251:400:1:o;4892:597::-;5004:4;5033:2;5062;5051:9;5044:21;5094:6;5088:13;5137:6;5132:2;5121:9;5117:18;5110:34;5162:1;5172:140;5186:6;5183:1;5180:13;5172:140;;;5281:14;;;5277:23;;5271:30;5247:17;;;5266:2;5243:26;5236:66;5201:10;;5172:140;;;5330:6;5327:1;5324:13;5321:2;;;5400:1;5395:2;5386:6;5375:9;5371:22;5367:31;5360:42;5321:2;-1:-1:-1;5473:2:1;5452:15;-1:-1:-1;;5448:29:1;5433:45;;;;5480:2;5429:54;;5013:476;-1:-1:-1;;;5013:476:1:o;8719:356::-;8921:2;8903:21;;;8940:18;;;8933:30;8999:34;8994:2;8979:18;;8972:62;9066:2;9051:18;;8893:182::o;10880:590::-;11187:6;11176:9;11169:25;11230:6;11225:2;11214:9;11210:18;11203:34;11273:3;11268:2;11257:9;11253:18;11246:31;11150:4;11294:57;11346:3;11335:9;11331:19;11323:6;11294:57;:::i;:::-;-1:-1:-1;;;;;11387:32:1;;;;11382:2;11367:18;;11360:60;-1:-1:-1;11451:3:1;11436:19;11429:35;11286:65;11159:311;-1:-1:-1;;;11159:311:1:o;12386:128::-;12426:3;12457:1;12453:6;12450:1;12447:13;12444:2;;;12463:18;;:::i;:::-;-1:-1:-1;12499:9:1;;12434:80::o;12519:217::-;12559:1;12585;12575:2;;12629:10;12624:3;12620:20;12617:1;12610:31;12664:4;12661:1;12654:15;12692:4;12689:1;12682:15;12575:2;-1:-1:-1;12721:9:1;;12565:171::o;12741:168::-;12781:7;12847:1;12843;12839:6;12835:14;12832:1;12829:21;12824:1;12817:9;12810:17;12806:45;12803:2;;;12854:18;;:::i;:::-;-1:-1:-1;12894:9:1;;12793:116::o;12914:125::-;12954:4;12982:1;12979;12976:8;12973:2;;;12987:18;;:::i;:::-;-1:-1:-1;13024:9:1;;12963:76::o;13044:380::-;13123:1;13119:12;;;;13166;;;13187:2;;13241:4;13233:6;13229:17;13219:27;;13187:2;13294;13286:6;13283:14;13263:18;13260:38;13257:2;;;13340:10;13335:3;13331:20;13328:1;13321:31;13375:4;13372:1;13365:15;13403:4;13400:1;13393:15;13257:2;;13099:325;;;:::o;13429:127::-;13490:10;13485:3;13481:20;13478:1;13471:31;13521:4;13518:1;13511:15;13545:4;13542:1;13535:15;13561:127;13622:10;13617:3;13613:20;13610:1;13603:31;13653:4;13650:1;13643:15;13677:4;13674:1;13667:15;13825:131;-1:-1:-1;;;;;13900:31:1;;13890:42;;13880:2;;13946:1;13943;13936:12

Swarm Source

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