ETH Price: $3,374.71 (-3.12%)
Gas: 4 Gwei

Token

FUEGO (FUEGO)
 

Overview

Max Total Supply

1,000,000 FUEGO

Holders

100

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,627 FUEGO

Value
$0.00
0x52f7ad78e3d9059449b069fdadabf5276ab714d7
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:
FUEGO

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// 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 FUEGO is Context,IERC20, Ownable{
    using Address for address;

    string private _name = "FUEGO";
    string private _symbol = "FUEGO";
    uint8 private _decimals = 18;
    uint256 totalFeeFortx = 0;
    uint256 maxWalletTreshold = 2;
    uint256 maxTxTreshold = 2;
    uint256 private swapTreshold =2;
    bool public limitsInEffect = true;

    uint256 private currentThreshold = 20; 
    uint256 private _totalSupply = 1_000_000 * 10**_decimals; 
    uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _excludedFromFees;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) _isExcludedMaxTransactionAmount;
    mapping (address => bool) public automatedMarketMakerPairs;
    address _owner;
    address payable public marketingAddress = payable(0xc708512F10F30a61c1C426f878a4D0a057E60768);
    
    uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; 
    uint256 maxTxAmount = _totalSupply*maxTxTreshold/100;
    mapping (address => bool) botWallets;
    bool botTradeEnabled = false;
    bool checkWalletSize = true;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private presaleAddresses;
    uint256 private buyliqFee = 1; 
    uint256 private buyprevLiqFee = 1;
    uint256 private buymktFee = 3;
    uint256 private buyPrevmktFee = 3;
    uint256 private buyBurnFee = 1;
    uint256 private buyPrevBurnFee = 1;
    
    
    bool private tradeEnabled = false;

    
    uint256 private sellliqFee = 1;
    uint256 private sellprevLiqFee = 1;
    uint256 private sellmktFee = 23;
    uint256 private sellPrevmktFee = 23;
    uint256 private sellBurnFee = 1;
    uint256 private sellPrevBurnFee = 1;


    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private mktTokens = 0;
    uint256 private burnTokens =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);
    
    
    IUniswapV2Router02 _router;
    address public uniswapV2Pair;

    //Balances tracker

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

    constructor(){
        _balances[_msgSender()] = _totalSupply;
        
        IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory())
            .createPair(address(this), _uniRouter.WETH());
        
        _excludedFromFees[owner()] = true;         
        _excludedFromFees[address(this)] = true;
        _router = _uniRouter;
        _liquidityHolders[address(_router)] = true;
        _liquidityHolders[owner()] = true;
        _liquidityHolders[address(this)] = true;
        _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 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 removeLimits() public onlyOwner{
        limitsInEffect = false;
    }

    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;
        maxTxAmount = _totalSupply*maxTxTreshold/100;// 1%

    }
     function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{
        maxWalletTreshold = newVal;
        maxWalletAmount = _totalSupply*maxWalletTreshold/100;

    }
    

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

    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 currentBuyBurnfee() public view returns (uint256){
            return buyBurnFee;
    }
   

      function currentsellLiqFee() public view returns (uint256){
            return sellliqFee;
    }
    function currentsellmktfee() public view returns (uint256){
            return sellmktFee;
    }
      function currentsellBurnfee() public view returns (uint256){
            return sellBurnFee;
    }
    
    function currentThresholdInt()public view returns (uint256){
        return currentThreshold;
    }
    function isExcluded(address toCheck)public view returns (bool){
            return _excludedFromFees[toCheck];
    }

    function _transfer(address from, address to, uint256 amount) internal{
        
        require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0,"ERC20: transfered amount must be greater than zero");
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        if(tradeEnabled == false){
            require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled");
        }
        
       
         
          if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead)
            ){

                
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTxAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Unable to exceed Max Wallet");
                    

                } 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTxAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWalletAmount, "Unable to exceed Max Wallet");
                }
            }
        }
         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 burnAmount = 0;
		    uint256 liqAmount = 0;  // Amount to be added to liquidity.

            if(takeFees){
                
                //bot fees
                if(botWallets[from] == true||botWallets[to]==true){
                    revert("No bots allowed to trade");
                }
                //Selling fees
                if (automatedMarketMakerPairs[to] && to != address(_router) ){
                        totalFeeFortx = 0;
                        mktAmount = amount * sellmktFee/100;
                        liqAmount = amount * sellliqFee/100;
                        burnAmount = amount *sellBurnFee/100;
                        totalFeeFortx = mktAmount + liqAmount + burnAmount ;
                }
                //Buy Fees
                else if(automatedMarketMakerPairs[from] && from != address(_router)) {
                    
                    totalFeeFortx = 0;
                    mktAmount = amount * buymktFee/100;
                    liqAmount = amount * buyliqFee/100;
                    burnAmount = amount *sellBurnFee/100;
                    totalFeeFortx = mktAmount + liqAmount+ burnAmount ;
                }

                
            }

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

          if(liqAmount != 0) {
			_balances[address(this)] += totalFeeFortx;
			
            liqTokens += liqAmount;
            mktTokens += mktAmount;
            burnTokens += burnAmount;
            
			emit Transfer(from, address(this), totalFeeFortx);
            
		    }
            emit Transfer(from, to,amount-totalFeeFortx);
            
        
    }
    function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{
        swapAndLiquify(liqTokens);
        swapTokensForETHmkt(mktTokens);
        _transfer(address(this), deadAddress, burnTokens);
        emit tokensSwappedDuringTokenomics(balanceToswap);
        mktTokens = 0;
        liqTokens = 0;
        burnTokens =0;
    }
     function addLimitExempt(address newAddress)external onlyOwner{
        _isExcludedMaxTransactionAmount[newAddress] = true;
     
    }
    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 unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{
        
        tokenToClear.transfer(destination, amount);
    }

    function unstuckETH(address payable destination) public onlyOwner{
        uint256 ethBalance = address(this).balance;
        payable(destination).transfer(ethBalance);
    }

    function tradeStatus(bool status) public onlyOwner{
        tradeEnabled = status;
    }

    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,// tr
			block.timestamp
		);
	}

    function _approve(address owner,address spender, uint256 amount) internal{
        require(owner != address(0), "ERC20: approve from the zero address");
		require(spender != address(0), "ERC20: 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 excludePresaleAddresses(address router, address presale) external onlyOwner {
        
        _liquidityHolders[address(router)] = true;
        _liquidityHolders[presale] = true;
        presaleAddresses[address(router)] = true;
        presaleAddresses[presale] = true;
       
    }

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

    }
    function endPresaleStatus() public onlyOwner{
        buymktFee = 4;
        buyliqFee = 3;
      

        sellmktFee = 7;
        sellliqFee = 3;
        
        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 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 updatecurrentbuyBurnFee(uint256 newAmount) public onlyOwner{
        buyBurnFee = newAmount;

    }
   

      function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{
             sellliqFee= newAmount;
    }
    function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{
             sellmktFee= newAmount;
    }
     function updatecurrentsellBurnFee(uint256 newAmount) public onlyOwner{
        sellBurnFee = newAmount;
        
    }
    
  
    function currentMaxWallet() public view returns(uint256){
        return maxWalletAmount;
    }
    function currentMaxTx() public view returns(uint256){
        return maxTxAmount;
    }
    function updateSwapTreshold(uint256 newVal) public onlyOwner{
        swapTreshold = newVal;
        requiredTokensToSwap = _totalSupply*swapTreshold/1000;
        
    }
    function currentTradeStatus() public view returns (bool){
        return tradeEnabled;   
    }
    function currentSwapTreshold() public view returns(uint256){
        return swapTreshold;
    }
    function currentTokensToSwap() public view returns(uint256){
        return requiredTokensToSwap;
    }
}


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":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","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":"currentBuyBurnfee","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":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","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":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"currentsellBurnfee","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":"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":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","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":"limitsInEffect","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":"removeLimits","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":"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":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","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":"newVal","type":"uint256"}],"name":"updateSwapTreshold","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":"updatecurrentbuyBurnFee","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":"updatecurrentsellBurnFee","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"}]

60e0604052600560a081905264465545474f60d81b60c0908152620000289160019190620005c0565b5060408051808201909152600580825264465545474f60d81b60209092019182526200005791600291620005c0565b506003805460ff1990811660121791829055600060045560026005819055600681905560075560088054909116600117905560146009556200009e9060ff16600a62000727565b620000ad90620f424062000812565b600a556103e8600754600a54620000c5919062000812565b620000d19190620006b9565b600b55601280546001600160a01b03191673c708512f10f30a61c1c426f878a4d0a057e60768179055600554600a546064916200010e9162000812565b6200011a9190620006b9565b6013556064600654600a5462000131919062000812565b6200013d9190620006b9565b6014556016805461ffff191661010090811790915560016019819055601a8190556003601b819055601c55601d819055601e819055601f805460ff19169055602081905560218190556017602281905560235560248190556025556026805461ff00191690911790556ddead000000000000000000000000608052600060278190556028819055602955348015620001d457600080fd5b50620001e9620001e362000509565b6200050d565b600a54600c6000620001fa62000509565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027157600080fd5b505afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac919062000666565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002f557600080fd5b505afa1580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000330919062000666565b6040518363ffffffff1660e01b81526004016200034f92919062000696565b602060405180830381600087803b1580156200036a57600080fd5b505af11580156200037f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a5919062000666565b602b80546001600160a01b0319166001600160a01b03929092169190911790556001600d6000620003d56200055d565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600d8452828120805486166001908117909155602a80548885166001600160a01b03199091161790819055909216815260179384905291822080549094168117909355620004536200055d565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526017909352912080549092166001908117909255602b54620004a9929116906200056c565b620004b362000509565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620004fa9190620006b0565b60405180910390a35062000887565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031690565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b828054620005ce9062000834565b90600052602060002090601f016020900481019282620005f257600085556200063d565b82601f106200060d57805160ff19168380011785556200063d565b828001600101855582156200063d579182015b828111156200063d57825182559160200191906001019062000620565b506200064b9291506200064f565b5090565b5b808211156200064b576000815560010162000650565b60006020828403121562000678578081fd5b81516001600160a01b03811681146200068f578182fd5b9392505050565b6001600160a01b0392831681529116602082015260400190565b90815260200190565b600082620006d557634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611620006ee57506200071e565b81870482111562000703576200070362000871565b808616156200071157918102915b9490941c938002620006dd565b94509492505050565b60006200068f60001960ff85168460008262000746575060016200068f565b8162000755575060006200068f565b81600181146200076e57600281146200077957620007ad565b60019150506200068f565b60ff8411156200078d576200078d62000871565b6001841b915084821115620007a657620007a662000871565b506200068f565b5060208310610133831016604e8410600b8410161715620007e5575081810a83811115620007df57620007df62000871565b6200068f565b620007f48484846001620006da565b80860482111562000809576200080962000871565b02949350505050565b60008160001904831182151516156200082f576200082f62000871565b500290565b6002810460018216806200084957607f821691505b602082108114156200086b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c612c54620008b460003960008181610d2501528181611f6f015261238d0152612c546000f3fe60806040526004361061039b5760003560e01c8063893d20e8116101dc578063b62496f511610102578063d7d7442f116100a0578063edcf19b21161006f578063edcf19b21461099c578063f2fde38b146109bc578063f7da6785146109dc578063f953cf3a146109fc576103a2565b8063d7d7442f14610932578063dd62ed3e14610952578063ddcf9b9814610972578063e1370dd314610987576103a2565b8063cb664534116100dc578063cb664534146108bd578063cba0e996146108dd578063d1294d4c146108fd578063d15bcf0f1461091d576103a2565b8063b62496f514610868578063bf9b015914610888578063bf9eb5401461089d576103a2565b80639b136da41161017a578063a7a0745211610149578063a7a07452146107f3578063a9059cbb14610813578063b195b83914610833578063b4d95a9314610848576103a2565b80639b136da414610794578063a04bdc81146107a9578063a5ece941146107be578063a6c38f59146107d3576103a2565b8063909b385b116101b6578063909b385b1461073557806390f502831461074a57806395d89b411461075f5780639a7a23d614610774576103a2565b8063893d20e8146106eb5780638cd0260c146107005780638da5cb5b14610720576103a2565b806349bd5a5e116102c157806364c161631161025f578063715018a61161022e578063715018a614610681578063751039fc14610696578063801527ce146106ab5780638628c23f146106cb576103a2565b806364c16163146106175780636573c4df1461062c5780636df3333a1461064c57806370a0823114610661576103a2565b80634a74bb021161029b5780634a74bb02146105b85780634bd7ace5146105cd5780635297defd146105e25780635be76f11146105f7576103a2565b806349bd5a5e1461056e5780634a0e963c146105835780634a62bb65146105a3576103a2565b806322788f861161033957806327c8f8351161030857806327c8f835146105025780632d03420b14610524578063313ce56714610544578063487a690514610559576103a2565b806322788f861461048d57806323b872dd146104a25780632484edfd146104c2578063256e67f0146104e2576103a2565b80630e86790d116103755780630e86790d1461042157806313b4a7f41461044357806318160ddd14610463578063220f669614610478576103a2565b806306fdde03146103a75780630882a863146103d2578063095ea7b3146103f4576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610a11565b6040516103c99190612678565b60405180910390f35b3480156103de57600080fd5b506103f26103ed36600461257d565b610aa3565b005b34801561040057600080fd5b5061041461040f366004612506565b610af0565b6040516103c9919061266d565b34801561042d57600080fd5b50610436610b0d565b6040516103c99190612ae1565b34801561044f57600080fd5b506103f261045e366004612487565b610b13565b34801561046f57600080fd5b50610436610bb2565b34801561048457600080fd5b50610414610bb8565b34801561049957600080fd5b50610436610bc1565b3480156104ae57600080fd5b506104146104bd3660046124b4565b610bc7565b3480156104ce57600080fd5b506103f26104dd36600461257d565b610c9b565b3480156104ee57600080fd5b506103f26104fd36600461257d565b610cdf565b34801561050e57600080fd5b50610517610d23565b6040516103c99190612605565b34801561053057600080fd5b506103f261053f366004612531565b610d47565b34801561055057600080fd5b50610436610d99565b34801561056557600080fd5b50610436610da2565b34801561057a57600080fd5b50610517610da8565b34801561058f57600080fd5b506103f261059e366004612410565b610db7565b3480156105af57600080fd5b50610414610e1a565b3480156105c457600080fd5b50610414610e23565b3480156105d957600080fd5b50610436610e31565b3480156105ee57600080fd5b50610436610e37565b34801561060357600080fd5b506103f2610612366004612410565b610e3d565b34801561062357600080fd5b50610436610eb9565b34801561063857600080fd5b506103f261064736600461257d565b610ebf565b34801561065857600080fd5b50610436610f24565b34801561066d57600080fd5b5061043661067c366004612410565b610f2a565b34801561068d57600080fd5b506103f2610f45565b3480156106a257600080fd5b506103f2610f90565b3480156106b757600080fd5b506103f26106c6366004612531565b610fdb565b3480156106d757600080fd5b506103f26106e636600461257d565b611034565b3480156106f757600080fd5b50610517611078565b34801561070c57600080fd5b506103f261071b36600461257d565b611087565b34801561072c57600080fd5b506105176110cb565b34801561074157600080fd5b506104366110da565b34801561075657600080fd5b506104366110e0565b34801561076b57600080fd5b506103bc6110e6565b34801561078057600080fd5b506103f261078f3660046124f4565b6110f5565b3480156107a057600080fd5b50610436611170565b3480156107b557600080fd5b50610436611176565b3480156107ca57600080fd5b5061051761117c565b3480156107df57600080fd5b506103f26107ee36600461244f565b61118b565b3480156107ff57600080fd5b506103f261080e36600461257d565b6111f5565b34801561081f57600080fd5b5061041461082e366004612506565b61125a565b34801561083f57600080fd5b506103f261126e565b34801561085457600080fd5b506103f2610863366004612410565b6112cc565b34801561087457600080fd5b50610414610883366004612410565b61132c565b34801561089457600080fd5b50610436611341565b3480156108a957600080fd5b506103f26108b8366004612410565b611347565b3480156108c957600080fd5b506103f26108d8366004612410565b6113a8565b3480156108e957600080fd5b506104146108f8366004612410565b61140b565b34801561090957600080fd5b506103f261091836600461257d565b611429565b34801561092957600080fd5b5061041461148f565b34801561093e57600080fd5b506103f261094d36600461257d565b611498565b34801561095e57600080fd5b5061043661096d366004612487565b6114dc565b34801561097e57600080fd5b50610436611507565b34801561099357600080fd5b5061043661150d565b3480156109a857600080fd5b506103f26109b736600461257d565b611513565b3480156109c857600080fd5b506103f26109d7366004612410565b611557565b3480156109e857600080fd5b506103f26109f7366004612569565b6115c8565b348015610a0857600080fd5b506103f261168d565b606060018054610a2090612baa565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90612baa565b8015610a995780601f10610a6e57610100808354040283529160200191610a99565b820191906000526020600020905b815481529060010190602001808311610a7c57829003601f168201915b5050505050905090565b610aab6116ea565b6001600160a01b0316610abc6110cb565b6001600160a01b031614610aeb5760405162461bcd60e51b8152600401610ae2906129b5565b60405180910390fd5b601955565b6000610b04610afd6116ea565b84846116ee565b50600192915050565b60245490565b610b1b6116ea565b6001600160a01b0316610b2c6110cb565b6001600160a01b031614610b525760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b0391821660008181526017602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601890915280822080548516861790559181522080549091169091179055565b600a5490565b60265460ff1681565b60095490565b6001600160a01b0383166000908152600e6020526040812081610be86116ea565b6001600160a01b03166001600160a01b0316815260200190815260200160002054821115610c285760405162461bcd60e51b8152600401610ae29061296d565b610c338484846117a2565b610c9184610c3f6116ea565b6001600160a01b0387166000908152600e602052604081208691610c616116ea565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610c8c9190612b93565b6116ee565b5060019392505050565b610ca36116ea565b6001600160a01b0316610cb46110cb565b6001600160a01b031614610cda5760405162461bcd60e51b8152600401610ae2906129b5565b601d55565b610ce76116ea565b6001600160a01b0316610cf86110cb565b6001600160a01b031614610d1e5760405162461bcd60e51b8152600401610ae2906129b5565b602455565b7f000000000000000000000000000000000000000000000000000000000000000081565b610d4f6116ea565b6001600160a01b0316610d606110cb565b6001600160a01b031614610d865760405162461bcd60e51b8152600401610ae2906129b5565b601f805460ff1916911515919091179055565b60035460ff1690565b600b5490565b602b546001600160a01b031681565b610dbf6116ea565b6001600160a01b0316610dd06110cb565b6001600160a01b031614610df65760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b60085460ff1681565b602654610100900460ff1681565b60195490565b60225490565b610e456116ea565b6001600160a01b0316610e566110cb565b6001600160a01b031614610e7c5760405162461bcd60e51b8152600401610ae2906129b5565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610eb4573d6000803e3d6000fd5b505050565b60295490565b610ec76116ea565b6001600160a01b0316610ed86110cb565b6001600160a01b031614610efe5760405162461bcd60e51b8152600401610ae2906129b5565b6005819055600a54606490610f14908390612b74565b610f1e9190612b54565b60135550565b60075490565b6001600160a01b03166000908152600c602052604090205490565b610f4d6116ea565b6001600160a01b0316610f5e6110cb565b6001600160a01b031614610f845760405162461bcd60e51b8152600401610ae2906129b5565b610f8e6000611ea1565b565b610f986116ea565b6001600160a01b0316610fa96110cb565b6001600160a01b031614610fcf5760405162461bcd60e51b8152600401610ae2906129b5565b6008805460ff19169055565b610fe36116ea565b6001600160a01b0316610ff46110cb565b6001600160a01b03161461101a5760405162461bcd60e51b8152600401610ae2906129b5565b602680549115156101000261ff0019909216919091179055565b61103c6116ea565b6001600160a01b031661104d6110cb565b6001600160a01b0316146110735760405162461bcd60e51b8152600401610ae2906129b5565b602255565b60006110826110cb565b905090565b61108f6116ea565b6001600160a01b03166110a06110cb565b6001600160a01b0316146110c65760405162461bcd60e51b8152600401610ae2906129b5565b602055565b6000546001600160a01b031690565b601d5490565b60205490565b606060028054610a2090612baa565b6110fd6116ea565b6001600160a01b031661110e6110cb565b6001600160a01b0316146111345760405162461bcd60e51b8152600401610ae2906129b5565b602b546001600160a01b03838116911614156111625760405162461bcd60e51b8152600401610ae290612796565b61116c8282611ef1565b5050565b601b5490565b600b5481565b6012546001600160a01b031681565b6111936116ea565b6001600160a01b03166111a46110cb565b6001600160a01b0316146111ca5760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6111fd6116ea565b6001600160a01b031661120e6110cb565b6001600160a01b0316146112345760405162461bcd60e51b8152600401610ae2906129b5565b6006819055600a5460649061124a908390612b74565b6112549190612b54565b60145550565b6000610b046112676116ea565b84846117a2565b6112766116ea565b6001600160a01b03166112876110cb565b6001600160a01b0316146112ad5760405162461bcd60e51b8152600401610ae2906129b5565b6000601b819055602281905560198190556020819055610f8e90610fdb565b6112d46116ea565b6001600160a01b03166112e56110cb565b6001600160a01b03161461130b5760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b03166000908152600d60205260409020805460ff19169055565b60106020526000908152604090205460ff1681565b60145490565b61134f6116ea565b6001600160a01b03166113606110cb565b6001600160a01b0316146113865760405162461bcd60e51b8152600401610ae2906129b5565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6113b06116ea565b6001600160a01b03166113c16110cb565b6001600160a01b0316146113e75760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6001600160a01b03166000908152600d602052604090205460ff1690565b6114316116ea565b6001600160a01b03166114426110cb565b6001600160a01b0316146114685760405162461bcd60e51b8152600401610ae2906129b5565b6007819055600a546103e89061147f908390612b74565b6114899190612b54565b600b5550565b601f5460ff1690565b6114a06116ea565b6001600160a01b03166114b16110cb565b6001600160a01b0316146114d75760405162461bcd60e51b8152600401610ae2906129b5565b600955565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b60275490565b60135490565b61151b6116ea565b6001600160a01b031661152c6110cb565b6001600160a01b0316146115525760405162461bcd60e51b8152600401610ae2906129b5565b601b55565b61155f6116ea565b6001600160a01b03166115706110cb565b6001600160a01b0316146115965760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b0381166115bc5760405162461bcd60e51b8152600401610ae29061270e565b6115c581611ea1565b50565b6115d06116ea565b6001600160a01b03166115e16110cb565b6001600160a01b0316146116075760405162461bcd60e51b8152600401610ae2906129b5565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906116359085908590600401612619565b602060405180830381600087803b15801561164f57600080fd5b505af1158015611663573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611687919061254d565b50505050565b6116956116ea565b6001600160a01b03166116a66110cb565b6001600160a01b0316146116cc5760405162461bcd60e51b8152600401610ae2906129b5565b6004601b55600360198190556007602255602055610f8e6001610fdb565b3390565b6001600160a01b0383166117145760405162461bcd60e51b8152600401610ae290612a9d565b6001600160a01b03821661173a5760405162461bcd60e51b8152600401610ae290612754565b6001600160a01b038084166000818152600e602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611795908590612ae1565b60405180910390a3505050565b6001600160a01b0383166117c85760405162461bcd60e51b8152600401610ae290612a58565b6001600160a01b0382166117ee5760405162461bcd60e51b8152600401610ae2906126cb565b6000811161180e5760405162461bcd60e51b8152600401610ae29061288f565b6001600160a01b0383166000908152600c6020526040902054818110156118475760405162461bcd60e51b8152600401610ae2906127f3565b601f5460ff166118ac576001600160a01b03831660009081526017602052604090205460ff168061189057506001600160a01b03841660009081526017602052604090205460ff165b6118ac5760405162461bcd60e51b8152600401610ae2906128e1565b60085460ff1615611a86576118bf6110cb565b6001600160a01b0316846001600160a01b0316141580156118f957506118e36110cb565b6001600160a01b0316836001600160a01b031614155b801561190d57506001600160a01b03831615155b801561192457506001600160a01b03831661dead14155b15611a86576001600160a01b03841660009081526010602052604090205460ff16801561196a57506001600160a01b0383166000908152600f602052604090205460ff16155b156119ca576014548211156119915760405162461bcd60e51b8152600401610ae290612918565b60135461199d84610f2a565b6119a79084612b3c565b11156119c55760405162461bcd60e51b8152600401610ae2906129ea565b611a86565b6001600160a01b03831660009081526010602052604090205460ff168015611a0b57506001600160a01b0384166000908152600f602052604090205460ff16155b15611a32576014548211156119c55760405162461bcd60e51b8152600401610ae290612839565b6001600160a01b0383166000908152600f602052604090205460ff16611a8657601354611a5e84610f2a565b611a689084612b3c565b1115611a865760405162461bcd60e51b8152600401610ae2906129ea565b6000611a9130610f2a565b9050600b548110158015611aa8575060265460ff16155b8015611ac25750602b546001600160a01b03868116911614155b8015611ad55750602654610100900460ff165b15611af057600b548110611af05750600b54611af081611f45565b6001600160a01b0385166000908152600d602052604090205460019060ff1680611b3257506001600160a01b0385166000908152600d602052604090205460ff165b15611b405750600060048190555b60008060008315611d0f576001600160a01b03891660009081526015602052604090205460ff16151560011480611b9457506001600160a01b03881660009081526015602052604090205460ff1615156001145b15611bb15760405162461bcd60e51b8152600401610ae290612a21565b6001600160a01b03881660009081526010602052604090205460ff168015611be75750602a546001600160a01b03898116911614155b15611c62576000600455602254606490611c019089612b74565b611c0b9190612b54565b9250606460205488611c1d9190612b74565b611c279190612b54565b9050606460245488611c399190612b74565b611c439190612b54565b915081611c508285612b3c565b611c5a9190612b3c565b600455611d0f565b6001600160a01b03891660009081526010602052604090205460ff168015611c985750602a546001600160a01b038a8116911614155b15611d0f576000600455601b54606490611cb29089612b74565b611cbc9190612b54565b9250606460195488611cce9190612b74565b611cd89190612b54565b9050606460245488611cea9190612b74565b611cf49190612b54565b915081611d018285612b3c565b611d0b9190612b3c565b6004555b611d198787612b93565b6001600160a01b038a166000908152600c60205260409020558181611d3e858a612b93565b611d489190612b93565b611d529190612b93565b6001600160a01b0389166000908152600c602052604081208054909190611d7a908490612b3c565b90915550508015611e3e57600454306000908152600c602052604081208054909190611da7908490612b3c565b925050819055508060296000828254611dc09190612b3c565b925050819055508260276000828254611dd99190612b3c565b925050819055508160286000828254611df29190612b3c565b909155505060045460405130916001600160a01b038c16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91611e3591612ae1565b60405180910390a35b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548a611e819190612b93565b604051611e8e9190612ae1565b60405180910390a3505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6026805460ff19166001179055602954611f5e90611fe9565b611f6960275461206a565b611f96307f00000000000000000000000000000000000000000000000000000000000000006028546117a2565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f0190481604051611fc59190612ae1565b60405180910390a1506000602781905560298190556028556026805460ff19169055565b6000611ff6600283612b54565b905060006120048284612b93565b905047612010836121f3565b600061201c8247612b93565b90506120288382612342565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161205b93929190612b26565b60405180910390a15050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120ad57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561210157600080fd5b505afa158015612115573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121399190612433565b8160018151811061215a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602a5461218091309116846116ee565b602a5460125460405163791ac94760e01b81526001600160a01b039283169263791ac947926121bd92879260009288929116904290600401612aea565b600060405180830381600087803b1580156121d757600080fd5b505af11580156121eb573d6000803e3d6000fd5b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061223657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561228a57600080fd5b505afa15801561229e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c29190612433565b816001815181106122e357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602a5461230991309116846116ee565b602a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906121bd908590600090869030904290600401612aea565b602a5461235a9030906001600160a01b0316846116ee565b602a5460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906123b7903090879060009081907f0000000000000000000000000000000000000000000000000000000000000000904290600401612632565b6060604051808303818588803b1580156123d057600080fd5b505af11580156123e4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124099190612595565b5050505050565b600060208284031215612421578081fd5b813561242c81612bfb565b9392505050565b600060208284031215612444578081fd5b815161242c81612bfb565b60008060408385031215612461578081fd5b823561246c81612bfb565b9150602083013561247c81612c10565b809150509250929050565b60008060408385031215612499578182fd5b82356124a481612bfb565b9150602083013561247c81612bfb565b6000806000606084860312156124c8578081fd5b83356124d381612bfb565b925060208401356124e381612bfb565b929592945050506040919091013590565b60008060408385031215612461578182fd5b60008060408385031215612518578182fd5b823561252381612bfb565b946020939093013593505050565b600060208284031215612542578081fd5b813561242c81612c10565b60006020828403121561255e578081fd5b815161242c81612c10565b6000806000606084860312156124c8578283fd5b60006020828403121561258e578081fd5b5035919050565b6000806000606084860312156125a9578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156125fa5781516001600160a01b0316875295820195908201906001016125d5565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b818110156126a457858101830151858201604001528201612688565b818111156126b55783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526039908201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060408201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526036908201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656040820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606082015260800190565b60208082526032908201527f45524332303a207472616e73666572656420616d6f756e74206d7573742062656040820152712067726561746572207468616e207a65726f60701b606082015260800190565b6020808252601d908201527f43616e742074726164652c2074726164652069732064697361626c6564000000604082015260600190565b60208082526035908201527f427579207472616e7366657220616d6f756e742065786365656473207468652060408201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601b908201527f556e61626c6520746f20657863656564204d61782057616c6c65740000000000604082015260600190565b60208082526018908201527f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b600086825285602083015260a06040830152612b0960a08301866125c2565b6001600160a01b0394909416606083015250608001529392505050565b9283526020830191909152604082015260600190565b60008219821115612b4f57612b4f612be5565b500190565b600082612b6f57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612b8e57612b8e612be5565b500290565b600082821015612ba557612ba5612be5565b500390565b600281046001821680612bbe57607f821691505b60208210811415612bdf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146115c557600080fd5b80151581146115c557600080fdfea2646970667358221220c736307020fc5d6b0cd7237fe3fb972b4f5cdf91398ce13347cf242b4afd2b7464736f6c63430008000033

Deployed Bytecode

0x60806040526004361061039b5760003560e01c8063893d20e8116101dc578063b62496f511610102578063d7d7442f116100a0578063edcf19b21161006f578063edcf19b21461099c578063f2fde38b146109bc578063f7da6785146109dc578063f953cf3a146109fc576103a2565b8063d7d7442f14610932578063dd62ed3e14610952578063ddcf9b9814610972578063e1370dd314610987576103a2565b8063cb664534116100dc578063cb664534146108bd578063cba0e996146108dd578063d1294d4c146108fd578063d15bcf0f1461091d576103a2565b8063b62496f514610868578063bf9b015914610888578063bf9eb5401461089d576103a2565b80639b136da41161017a578063a7a0745211610149578063a7a07452146107f3578063a9059cbb14610813578063b195b83914610833578063b4d95a9314610848576103a2565b80639b136da414610794578063a04bdc81146107a9578063a5ece941146107be578063a6c38f59146107d3576103a2565b8063909b385b116101b6578063909b385b1461073557806390f502831461074a57806395d89b411461075f5780639a7a23d614610774576103a2565b8063893d20e8146106eb5780638cd0260c146107005780638da5cb5b14610720576103a2565b806349bd5a5e116102c157806364c161631161025f578063715018a61161022e578063715018a614610681578063751039fc14610696578063801527ce146106ab5780638628c23f146106cb576103a2565b806364c16163146106175780636573c4df1461062c5780636df3333a1461064c57806370a0823114610661576103a2565b80634a74bb021161029b5780634a74bb02146105b85780634bd7ace5146105cd5780635297defd146105e25780635be76f11146105f7576103a2565b806349bd5a5e1461056e5780634a0e963c146105835780634a62bb65146105a3576103a2565b806322788f861161033957806327c8f8351161030857806327c8f835146105025780632d03420b14610524578063313ce56714610544578063487a690514610559576103a2565b806322788f861461048d57806323b872dd146104a25780632484edfd146104c2578063256e67f0146104e2576103a2565b80630e86790d116103755780630e86790d1461042157806313b4a7f41461044357806318160ddd14610463578063220f669614610478576103a2565b806306fdde03146103a75780630882a863146103d2578063095ea7b3146103f4576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610a11565b6040516103c99190612678565b60405180910390f35b3480156103de57600080fd5b506103f26103ed36600461257d565b610aa3565b005b34801561040057600080fd5b5061041461040f366004612506565b610af0565b6040516103c9919061266d565b34801561042d57600080fd5b50610436610b0d565b6040516103c99190612ae1565b34801561044f57600080fd5b506103f261045e366004612487565b610b13565b34801561046f57600080fd5b50610436610bb2565b34801561048457600080fd5b50610414610bb8565b34801561049957600080fd5b50610436610bc1565b3480156104ae57600080fd5b506104146104bd3660046124b4565b610bc7565b3480156104ce57600080fd5b506103f26104dd36600461257d565b610c9b565b3480156104ee57600080fd5b506103f26104fd36600461257d565b610cdf565b34801561050e57600080fd5b50610517610d23565b6040516103c99190612605565b34801561053057600080fd5b506103f261053f366004612531565b610d47565b34801561055057600080fd5b50610436610d99565b34801561056557600080fd5b50610436610da2565b34801561057a57600080fd5b50610517610da8565b34801561058f57600080fd5b506103f261059e366004612410565b610db7565b3480156105af57600080fd5b50610414610e1a565b3480156105c457600080fd5b50610414610e23565b3480156105d957600080fd5b50610436610e31565b3480156105ee57600080fd5b50610436610e37565b34801561060357600080fd5b506103f2610612366004612410565b610e3d565b34801561062357600080fd5b50610436610eb9565b34801561063857600080fd5b506103f261064736600461257d565b610ebf565b34801561065857600080fd5b50610436610f24565b34801561066d57600080fd5b5061043661067c366004612410565b610f2a565b34801561068d57600080fd5b506103f2610f45565b3480156106a257600080fd5b506103f2610f90565b3480156106b757600080fd5b506103f26106c6366004612531565b610fdb565b3480156106d757600080fd5b506103f26106e636600461257d565b611034565b3480156106f757600080fd5b50610517611078565b34801561070c57600080fd5b506103f261071b36600461257d565b611087565b34801561072c57600080fd5b506105176110cb565b34801561074157600080fd5b506104366110da565b34801561075657600080fd5b506104366110e0565b34801561076b57600080fd5b506103bc6110e6565b34801561078057600080fd5b506103f261078f3660046124f4565b6110f5565b3480156107a057600080fd5b50610436611170565b3480156107b557600080fd5b50610436611176565b3480156107ca57600080fd5b5061051761117c565b3480156107df57600080fd5b506103f26107ee36600461244f565b61118b565b3480156107ff57600080fd5b506103f261080e36600461257d565b6111f5565b34801561081f57600080fd5b5061041461082e366004612506565b61125a565b34801561083f57600080fd5b506103f261126e565b34801561085457600080fd5b506103f2610863366004612410565b6112cc565b34801561087457600080fd5b50610414610883366004612410565b61132c565b34801561089457600080fd5b50610436611341565b3480156108a957600080fd5b506103f26108b8366004612410565b611347565b3480156108c957600080fd5b506103f26108d8366004612410565b6113a8565b3480156108e957600080fd5b506104146108f8366004612410565b61140b565b34801561090957600080fd5b506103f261091836600461257d565b611429565b34801561092957600080fd5b5061041461148f565b34801561093e57600080fd5b506103f261094d36600461257d565b611498565b34801561095e57600080fd5b5061043661096d366004612487565b6114dc565b34801561097e57600080fd5b50610436611507565b34801561099357600080fd5b5061043661150d565b3480156109a857600080fd5b506103f26109b736600461257d565b611513565b3480156109c857600080fd5b506103f26109d7366004612410565b611557565b3480156109e857600080fd5b506103f26109f7366004612569565b6115c8565b348015610a0857600080fd5b506103f261168d565b606060018054610a2090612baa565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90612baa565b8015610a995780601f10610a6e57610100808354040283529160200191610a99565b820191906000526020600020905b815481529060010190602001808311610a7c57829003601f168201915b5050505050905090565b610aab6116ea565b6001600160a01b0316610abc6110cb565b6001600160a01b031614610aeb5760405162461bcd60e51b8152600401610ae2906129b5565b60405180910390fd5b601955565b6000610b04610afd6116ea565b84846116ee565b50600192915050565b60245490565b610b1b6116ea565b6001600160a01b0316610b2c6110cb565b6001600160a01b031614610b525760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b0391821660008181526017602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601890915280822080548516861790559181522080549091169091179055565b600a5490565b60265460ff1681565b60095490565b6001600160a01b0383166000908152600e6020526040812081610be86116ea565b6001600160a01b03166001600160a01b0316815260200190815260200160002054821115610c285760405162461bcd60e51b8152600401610ae29061296d565b610c338484846117a2565b610c9184610c3f6116ea565b6001600160a01b0387166000908152600e602052604081208691610c616116ea565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610c8c9190612b93565b6116ee565b5060019392505050565b610ca36116ea565b6001600160a01b0316610cb46110cb565b6001600160a01b031614610cda5760405162461bcd60e51b8152600401610ae2906129b5565b601d55565b610ce76116ea565b6001600160a01b0316610cf86110cb565b6001600160a01b031614610d1e5760405162461bcd60e51b8152600401610ae2906129b5565b602455565b7f000000000000000000000000000000000000000000000000000000000000dead81565b610d4f6116ea565b6001600160a01b0316610d606110cb565b6001600160a01b031614610d865760405162461bcd60e51b8152600401610ae2906129b5565b601f805460ff1916911515919091179055565b60035460ff1690565b600b5490565b602b546001600160a01b031681565b610dbf6116ea565b6001600160a01b0316610dd06110cb565b6001600160a01b031614610df65760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b60085460ff1681565b602654610100900460ff1681565b60195490565b60225490565b610e456116ea565b6001600160a01b0316610e566110cb565b6001600160a01b031614610e7c5760405162461bcd60e51b8152600401610ae2906129b5565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610eb4573d6000803e3d6000fd5b505050565b60295490565b610ec76116ea565b6001600160a01b0316610ed86110cb565b6001600160a01b031614610efe5760405162461bcd60e51b8152600401610ae2906129b5565b6005819055600a54606490610f14908390612b74565b610f1e9190612b54565b60135550565b60075490565b6001600160a01b03166000908152600c602052604090205490565b610f4d6116ea565b6001600160a01b0316610f5e6110cb565b6001600160a01b031614610f845760405162461bcd60e51b8152600401610ae2906129b5565b610f8e6000611ea1565b565b610f986116ea565b6001600160a01b0316610fa96110cb565b6001600160a01b031614610fcf5760405162461bcd60e51b8152600401610ae2906129b5565b6008805460ff19169055565b610fe36116ea565b6001600160a01b0316610ff46110cb565b6001600160a01b03161461101a5760405162461bcd60e51b8152600401610ae2906129b5565b602680549115156101000261ff0019909216919091179055565b61103c6116ea565b6001600160a01b031661104d6110cb565b6001600160a01b0316146110735760405162461bcd60e51b8152600401610ae2906129b5565b602255565b60006110826110cb565b905090565b61108f6116ea565b6001600160a01b03166110a06110cb565b6001600160a01b0316146110c65760405162461bcd60e51b8152600401610ae2906129b5565b602055565b6000546001600160a01b031690565b601d5490565b60205490565b606060028054610a2090612baa565b6110fd6116ea565b6001600160a01b031661110e6110cb565b6001600160a01b0316146111345760405162461bcd60e51b8152600401610ae2906129b5565b602b546001600160a01b03838116911614156111625760405162461bcd60e51b8152600401610ae290612796565b61116c8282611ef1565b5050565b601b5490565b600b5481565b6012546001600160a01b031681565b6111936116ea565b6001600160a01b03166111a46110cb565b6001600160a01b0316146111ca5760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6111fd6116ea565b6001600160a01b031661120e6110cb565b6001600160a01b0316146112345760405162461bcd60e51b8152600401610ae2906129b5565b6006819055600a5460649061124a908390612b74565b6112549190612b54565b60145550565b6000610b046112676116ea565b84846117a2565b6112766116ea565b6001600160a01b03166112876110cb565b6001600160a01b0316146112ad5760405162461bcd60e51b8152600401610ae2906129b5565b6000601b819055602281905560198190556020819055610f8e90610fdb565b6112d46116ea565b6001600160a01b03166112e56110cb565b6001600160a01b03161461130b5760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b03166000908152600d60205260409020805460ff19169055565b60106020526000908152604090205460ff1681565b60145490565b61134f6116ea565b6001600160a01b03166113606110cb565b6001600160a01b0316146113865760405162461bcd60e51b8152600401610ae2906129b5565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6113b06116ea565b6001600160a01b03166113c16110cb565b6001600160a01b0316146113e75760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6001600160a01b03166000908152600d602052604090205460ff1690565b6114316116ea565b6001600160a01b03166114426110cb565b6001600160a01b0316146114685760405162461bcd60e51b8152600401610ae2906129b5565b6007819055600a546103e89061147f908390612b74565b6114899190612b54565b600b5550565b601f5460ff1690565b6114a06116ea565b6001600160a01b03166114b16110cb565b6001600160a01b0316146114d75760405162461bcd60e51b8152600401610ae2906129b5565b600955565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b60275490565b60135490565b61151b6116ea565b6001600160a01b031661152c6110cb565b6001600160a01b0316146115525760405162461bcd60e51b8152600401610ae2906129b5565b601b55565b61155f6116ea565b6001600160a01b03166115706110cb565b6001600160a01b0316146115965760405162461bcd60e51b8152600401610ae2906129b5565b6001600160a01b0381166115bc5760405162461bcd60e51b8152600401610ae29061270e565b6115c581611ea1565b50565b6115d06116ea565b6001600160a01b03166115e16110cb565b6001600160a01b0316146116075760405162461bcd60e51b8152600401610ae2906129b5565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906116359085908590600401612619565b602060405180830381600087803b15801561164f57600080fd5b505af1158015611663573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611687919061254d565b50505050565b6116956116ea565b6001600160a01b03166116a66110cb565b6001600160a01b0316146116cc5760405162461bcd60e51b8152600401610ae2906129b5565b6004601b55600360198190556007602255602055610f8e6001610fdb565b3390565b6001600160a01b0383166117145760405162461bcd60e51b8152600401610ae290612a9d565b6001600160a01b03821661173a5760405162461bcd60e51b8152600401610ae290612754565b6001600160a01b038084166000818152600e602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611795908590612ae1565b60405180910390a3505050565b6001600160a01b0383166117c85760405162461bcd60e51b8152600401610ae290612a58565b6001600160a01b0382166117ee5760405162461bcd60e51b8152600401610ae2906126cb565b6000811161180e5760405162461bcd60e51b8152600401610ae29061288f565b6001600160a01b0383166000908152600c6020526040902054818110156118475760405162461bcd60e51b8152600401610ae2906127f3565b601f5460ff166118ac576001600160a01b03831660009081526017602052604090205460ff168061189057506001600160a01b03841660009081526017602052604090205460ff165b6118ac5760405162461bcd60e51b8152600401610ae2906128e1565b60085460ff1615611a86576118bf6110cb565b6001600160a01b0316846001600160a01b0316141580156118f957506118e36110cb565b6001600160a01b0316836001600160a01b031614155b801561190d57506001600160a01b03831615155b801561192457506001600160a01b03831661dead14155b15611a86576001600160a01b03841660009081526010602052604090205460ff16801561196a57506001600160a01b0383166000908152600f602052604090205460ff16155b156119ca576014548211156119915760405162461bcd60e51b8152600401610ae290612918565b60135461199d84610f2a565b6119a79084612b3c565b11156119c55760405162461bcd60e51b8152600401610ae2906129ea565b611a86565b6001600160a01b03831660009081526010602052604090205460ff168015611a0b57506001600160a01b0384166000908152600f602052604090205460ff16155b15611a32576014548211156119c55760405162461bcd60e51b8152600401610ae290612839565b6001600160a01b0383166000908152600f602052604090205460ff16611a8657601354611a5e84610f2a565b611a689084612b3c565b1115611a865760405162461bcd60e51b8152600401610ae2906129ea565b6000611a9130610f2a565b9050600b548110158015611aa8575060265460ff16155b8015611ac25750602b546001600160a01b03868116911614155b8015611ad55750602654610100900460ff165b15611af057600b548110611af05750600b54611af081611f45565b6001600160a01b0385166000908152600d602052604090205460019060ff1680611b3257506001600160a01b0385166000908152600d602052604090205460ff165b15611b405750600060048190555b60008060008315611d0f576001600160a01b03891660009081526015602052604090205460ff16151560011480611b9457506001600160a01b03881660009081526015602052604090205460ff1615156001145b15611bb15760405162461bcd60e51b8152600401610ae290612a21565b6001600160a01b03881660009081526010602052604090205460ff168015611be75750602a546001600160a01b03898116911614155b15611c62576000600455602254606490611c019089612b74565b611c0b9190612b54565b9250606460205488611c1d9190612b74565b611c279190612b54565b9050606460245488611c399190612b74565b611c439190612b54565b915081611c508285612b3c565b611c5a9190612b3c565b600455611d0f565b6001600160a01b03891660009081526010602052604090205460ff168015611c985750602a546001600160a01b038a8116911614155b15611d0f576000600455601b54606490611cb29089612b74565b611cbc9190612b54565b9250606460195488611cce9190612b74565b611cd89190612b54565b9050606460245488611cea9190612b74565b611cf49190612b54565b915081611d018285612b3c565b611d0b9190612b3c565b6004555b611d198787612b93565b6001600160a01b038a166000908152600c60205260409020558181611d3e858a612b93565b611d489190612b93565b611d529190612b93565b6001600160a01b0389166000908152600c602052604081208054909190611d7a908490612b3c565b90915550508015611e3e57600454306000908152600c602052604081208054909190611da7908490612b3c565b925050819055508060296000828254611dc09190612b3c565b925050819055508260276000828254611dd99190612b3c565b925050819055508160286000828254611df29190612b3c565b909155505060045460405130916001600160a01b038c16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91611e3591612ae1565b60405180910390a35b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548a611e819190612b93565b604051611e8e9190612ae1565b60405180910390a3505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6026805460ff19166001179055602954611f5e90611fe9565b611f6960275461206a565b611f96307f000000000000000000000000000000000000000000000000000000000000dead6028546117a2565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f0190481604051611fc59190612ae1565b60405180910390a1506000602781905560298190556028556026805460ff19169055565b6000611ff6600283612b54565b905060006120048284612b93565b905047612010836121f3565b600061201c8247612b93565b90506120288382612342565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161205b93929190612b26565b60405180910390a15050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120ad57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561210157600080fd5b505afa158015612115573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121399190612433565b8160018151811061215a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602a5461218091309116846116ee565b602a5460125460405163791ac94760e01b81526001600160a01b039283169263791ac947926121bd92879260009288929116904290600401612aea565b600060405180830381600087803b1580156121d757600080fd5b505af11580156121eb573d6000803e3d6000fd5b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061223657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561228a57600080fd5b505afa15801561229e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c29190612433565b816001815181106122e357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602a5461230991309116846116ee565b602a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906121bd908590600090869030904290600401612aea565b602a5461235a9030906001600160a01b0316846116ee565b602a5460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906123b7903090879060009081907f000000000000000000000000000000000000000000000000000000000000dead904290600401612632565b6060604051808303818588803b1580156123d057600080fd5b505af11580156123e4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124099190612595565b5050505050565b600060208284031215612421578081fd5b813561242c81612bfb565b9392505050565b600060208284031215612444578081fd5b815161242c81612bfb565b60008060408385031215612461578081fd5b823561246c81612bfb565b9150602083013561247c81612c10565b809150509250929050565b60008060408385031215612499578182fd5b82356124a481612bfb565b9150602083013561247c81612bfb565b6000806000606084860312156124c8578081fd5b83356124d381612bfb565b925060208401356124e381612bfb565b929592945050506040919091013590565b60008060408385031215612461578182fd5b60008060408385031215612518578182fd5b823561252381612bfb565b946020939093013593505050565b600060208284031215612542578081fd5b813561242c81612c10565b60006020828403121561255e578081fd5b815161242c81612c10565b6000806000606084860312156124c8578283fd5b60006020828403121561258e578081fd5b5035919050565b6000806000606084860312156125a9578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156125fa5781516001600160a01b0316875295820195908201906001016125d5565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b818110156126a457858101830151858201604001528201612688565b818111156126b55783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526039908201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060408201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526036908201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656040820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606082015260800190565b60208082526032908201527f45524332303a207472616e73666572656420616d6f756e74206d7573742062656040820152712067726561746572207468616e207a65726f60701b606082015260800190565b6020808252601d908201527f43616e742074726164652c2074726164652069732064697361626c6564000000604082015260600190565b60208082526035908201527f427579207472616e7366657220616d6f756e742065786365656473207468652060408201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601b908201527f556e61626c6520746f20657863656564204d61782057616c6c65740000000000604082015260600190565b60208082526018908201527f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b600086825285602083015260a06040830152612b0960a08301866125c2565b6001600160a01b0394909416606083015250608001529392505050565b9283526020830191909152604082015260600190565b60008219821115612b4f57612b4f612be5565b500190565b600082612b6f57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612b8e57612b8e612be5565b500290565b600082821015612ba557612ba5612be5565b500390565b600281046001821680612bbe57607f821691505b60208210811415612bdf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146115c557600080fd5b80151581146115c557600080fdfea2646970667358221220c736307020fc5d6b0cd7237fe3fb972b4f5cdf91398ce13347cf242b4afd2b7464736f6c63430008000033

Deployed Bytecode Sourcemap

5417:17076:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10161:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21066:111;;;;;;;;;;-1:-1:-1;21066:111:0;;;;;:::i;:::-;;:::i;:::-;;9808:168;;;;;;;;;;-1:-1:-1;9808:168:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11762:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19365:302::-;;;;;;;;;;-1:-1:-1;19365:302:0;;;;;:::i;:::-;;:::i;9218:106::-;;;;;;;;;;;;;:::i;7307:28::-;;;;;;;;;;;;;:::i;11874:101::-;;;;;;;;;;;;;:::i;10701:388::-;;;;;;;;;;-1:-1:-1;10701:388:0;;;;;:::i;:::-;;:::i;21300:111::-;;;;;;;;;;-1:-1:-1;21300:111:0;;;;;:::i;:::-;;:::i;21664:121::-;;;;;;;;;;-1:-1:-1;21664:121:0;;;;;:::i;:::-;;:::i;7389:81::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17563:90::-;;;;;;;;;;-1:-1:-1;17563:90:0;;;;;:::i;:::-;;:::i;10071:84::-;;;;;;;;;;;;;:::i;22385:105::-;;;;;;;;;;;;;:::i;7887:28::-;;;;;;;;;;;;;:::i;19119:114::-;;;;;;;;;;-1:-1:-1;19119:114:0;;;;;:::i;:::-;;:::i;5748:33::-;;;;;;;;;;;;;:::i;7342:40::-;;;;;;;;;;;;;:::i;11233:96::-;;;;;;;;;;;;;:::i;11656:98::-;;;;;;;;;;;;;:::i;17377:178::-;;;;;;;;;;-1:-1:-1;17377:178:0;;;;;:::i;:::-;;:::i;9110:99::-;;;;;;;;;;;;;:::i;10512:175::-;;;;;;;;;;-1:-1:-1;10512:175:0;;;;;:::i;:::-;;:::i;22282:97::-;;;;;;;;;;;;;:::i;9335:118::-;;;;;;;;;;-1:-1:-1;9335:118:0;;;;;:::i;:::-;;:::i;4782:94::-;;;;;;;;;;;;;:::i;9982:81::-;;;;;;;;;;;;;:::i;20218:113::-;;;;;;;;;;-1:-1:-1;20218:113:0;;;;;:::i;:::-;;:::i;21545:112::-;;;;;;;;;;-1:-1:-1;21545:112:0;;;;;:::i;:::-;;:::i;8907:86::-;;;;;;;;;;;;;:::i;21426:113::-;;;;;;;;;;-1:-1:-1;21426:113:0;;;;;:::i;:::-;;:::i;4131:87::-;;;;;;;;;;;;;:::i;11439:98::-;;;;;;;;;;;;;:::i;11552:::-;;;;;;;;;;;;;:::i;10243:88::-;;;;;;;;;;;;;:::i;20622:242::-;;;;;;;;;;-1:-1:-1;20622:242:0;;;;;:::i;:::-;;:::i;11335:96::-;;;;;;;;;;;;;:::i;5899:71::-;;;;;;;;;;;;;:::i;6314:93::-;;;;;;;;;;;;;:::i;11097:130::-;;;;;;;;;;-1:-1:-1;11097:130:0;;;;;:::i;:::-;;:::i;10341:164::-;;;;;;;;;;-1:-1:-1;10341:164:0;;;;;:::i;:::-;;:::i;9464:176::-;;;;;;;;;;-1:-1:-1;9464:176:0;;;;;:::i;:::-;;:::i;19675:205::-;;;;;;;;;;;;;:::i;19241:116::-;;;;;;;;;;-1:-1:-1;19241:116:0;;;;;:::i;:::-;;:::i;6228:58::-;;;;;;;;;;-1:-1:-1;6228:58:0;;;;;:::i;:::-;;:::i;21904:89::-;;;;;;;;;;;;;:::i;20369:118::-;;;;;;;;;;-1:-1:-1;20369:118:0;;;;;:::i;:::-;;:::i;16636:137::-;;;;;;;;;;-1:-1:-1;16636:137:0;;;;;:::i;:::-;;:::i;11981:118::-;;;;;;;;;;-1:-1:-1;11981:118:0;;;;;:::i;:::-;;:::i;21999:174::-;;;;;;;;;;-1:-1:-1;21999:174:0;;;;;:::i;:::-;;:::i;22179:97::-;;;;;;;;;;;;;:::i;20098:112::-;;;;;;;;;;-1:-1:-1;20098:112:0;;;;;:::i;:::-;;:::i;9651:148::-;;;;;;;;;;-1:-1:-1;9651:148:0;;;;;:::i;:::-;;:::i;8999:99::-;;;;;;;;;;;;;:::i;21801:97::-;;;;;;;;;;;;;:::i;21183:111::-;;;;;;;;;;-1:-1:-1;21183:111:0;;;;;:::i;:::-;;:::i;5031:192::-;;;;;;;;;;-1:-1:-1;5031:192:0;;;;;:::i;:::-;;:::i;17192:177::-;;;;;;;;;;-1:-1:-1;17192:177:0;;;;;:::i;:::-;;:::i;19886:204::-;;;;;;;;;;;;;:::i;10161:76::-;10200:13;10227:5;10220:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10161:76;:::o;21066:111::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;;;;;;;;;21148:9:::1;:21:::0;21066:111::o;9808:168::-;9885:4;9905:37;9914:12;:10;:12::i;:::-;9927:7;9935:6;9905:8;:37::i;:::-;-1:-1:-1;9964:4:0;9808:168;;;;:::o;11762:100::-;11843:11;;11762:100;:::o;19365:302::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19471:34:0;;::::1;;::::0;;;:17:::1;:34;::::0;;;;;;;:41;;19508:4:::1;-1:-1:-1::0;;19471:41:0;;::::1;::::0;::::1;::::0;;;19523:26;;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;19567;;;:16:::1;:33:::0;;;;;;:40;;;::::1;::::0;::::1;::::0;;19618:25;;;;:32;;;;::::1;::::0;;::::1;::::0;;19365:302::o;9218:106::-;9303:12;;9218:106;:::o;7307:28::-;;;;;;:::o;11874:101::-;11951:16;;11874:101;:::o;10701:388::-;-1:-1:-1;;;;;10867:19:0;;10833:4;10867:19;;;:11;:19;;;;;10833:4;10887:12;:10;:12::i;:::-;-1:-1:-1;;;;;10867:33:0;-1:-1:-1;;;;;10867:33:0;;;;;;;;;;;;;10857:6;:43;;10849:96;;;;-1:-1:-1;;;10849:96:0;;;;;;;:::i;:::-;10950:36;10960:6;10968:9;10979:6;10950:9;:36::i;:::-;10991:74;11000:6;11008:12;:10;:12::i;:::-;-1:-1:-1;;;;;11022:19:0;;;;;;:11;:19;;;;;11058:6;;11042:12;:10;:12::i;:::-;-1:-1:-1;;;;;11022:33:0;-1:-1:-1;;;;;11022:33:0;;;;;;;;;;;;;:42;;;;:::i;:::-;10991:8;:74::i;:::-;-1:-1:-1;11077:4:0;10701:388;;;;;:::o;21300:111::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;21379:10:::1;:22:::0;21300:111::o;21664:121::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;21744:11:::1;:23:::0;21664:121::o;7389:81::-;;;:::o;17563:90::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;17624:12:::1;:21:::0;;-1:-1:-1;;17624:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17563:90::o;10071:84::-;10138:9;;;;10071:84;:::o;22385:105::-;22462:20;;22385:105;:::o;7887:28::-;;;-1:-1:-1;;;;;7887:28:0;;:::o;19119:114::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19190:28:0::1;;::::0;;;:17:::1;:28;::::0;;;;:35;;-1:-1:-1;;19190:35:0::1;19221:4;19190:35;::::0;;19119:114::o;5748:33::-;;;;;;:::o;7342:40::-;;;;;;;;;:::o;11233:96::-;11312:9;;11233:96;:::o;11656:98::-;11736:10;;11656:98;:::o;17377:178::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;17506:41:::1;::::0;17474:21:::1;::::0;-1:-1:-1;;;;;17506:29:0;::::1;::::0;:41;::::1;;;::::0;17474:21;;17453:18:::1;17506:41:::0;17453:18;17506:41;17474:21;17506:29;:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;4422:1;17377:178:::0;:::o;9110:99::-;9191:9;;9110:99;:::o;10512:175::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;10588:17:::1;:26:::0;;;10643:12:::1;::::0;10674:3:::1;::::0;10643:30:::1;::::0;10608:6;;10643:30:::1;:::i;:::-;:34;;;;:::i;:::-;10625:15;:52:::0;-1:-1:-1;10512:175:0:o;22282:97::-;22359:12;;22282:97;:::o;9335:118::-;-1:-1:-1;;;;;9427:18:0;9401:7;9427:18;;;:9;:18;;;;;;;9335:118::o;4782:94::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;4847:21:::1;4865:1;4847:9;:21::i;:::-;4782:94::o:0;9982:81::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;10033:14:::1;:22:::0;;-1:-1:-1;;10033:22:0::1;::::0;;9982:81::o;20218:113::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;20291:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;20291:32:0;;::::1;::::0;;;::::1;::::0;;20218:113::o;21545:112::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;21628:10:::1;:21:::0;21545:112::o;8907:86::-;8948:7;8978;:5;:7::i;:::-;8971:14;;8907:86;:::o;21426:113::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;21510:10:::1;:21:::0;21426:113::o;4131:87::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;4131:87;:::o;11439:98::-;11519:10;;11439:98;:::o;11552:::-;11632:10;;11552:98;:::o;10243:88::-;10284:13;10316:7;10309:14;;;;;:::i;20622:242::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;20729:13:::1;::::0;-1:-1:-1;;;;;20721:21:0;;::::1;20729:13:::0;::::1;20721:21;;20713:91;;;;-1:-1:-1::0;;;20713:91:0::1;;;;;;;:::i;:::-;20815:41;20844:4;20850:5;20815:28;:41::i;:::-;20622:242:::0;;:::o;11335:96::-;11414:9;;11335:96;:::o;5899:71::-;;;;:::o;6314:93::-;;;-1:-1:-1;;;;;6314:93:0;;:::o;11097:130::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11188:23:0;;;::::1;;::::0;;;:10:::1;:23;::::0;;;;:31;;-1:-1:-1;;11188:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11097:130::o;10341:164::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;10413:13:::1;:22:::0;;;10460:12:::1;::::0;10487:3:::1;::::0;10460:26:::1;::::0;10429:6;;10460:26:::1;:::i;:::-;:30;;;;:::i;:::-;10446:11;:44:::0;-1:-1:-1;10341:164:0:o;9464:176::-;9544:4;9564:40;9574:12;:10;:12::i;:::-;9587:9;9597:6;9564:9;:40::i;19675:205::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;19753:1:::1;19741:9;:13:::0;;;19765:10:::1;:13:::0;;;19789:9:::1;:12:::0;;;19812:10:::1;:13:::0;;;19846:24:::1;::::0;:17:::1;:24::i;19241:116::-:0;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19314:27:0::1;19344:5;19314:27:::0;;;:17:::1;:27;::::0;;;;:35;;-1:-1:-1;;19314:35:0::1;::::0;;19241:116::o;6228:58::-;;;;;;;;;;;;;;;:::o;21904:89::-;21974:11;;21904:89;:::o;20369:118::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;20441:16:::1;:38:::0;;-1:-1:-1;;;;;;20441:38:0::1;-1:-1:-1::0;;;;;20441:38:0;;;::::1;::::0;;;::::1;::::0;;20369:118::o;16636:137::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16708:43:0::1;;::::0;;;:31:::1;:43;::::0;;;;:50;;-1:-1:-1;;16708:50:0::1;16754:4;16708:50;::::0;;16636:137::o;11981:118::-;-1:-1:-1;;;;;12065:26:0;12038:4;12065:26;;;:17;:26;;;;;;;;;11981:118::o;21999:174::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;22070:12:::1;:21:::0;;;22125:12:::1;::::0;22151:4:::1;::::0;22125:25:::1;::::0;22085:6;;22125:25:::1;:::i;:::-;:30;;;;:::i;:::-;22102:20;:53:::0;-1:-1:-1;21999:174:0:o;22179:97::-;22253:12;;;;22179:97;:::o;20098:112::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;20169:16:::1;:31:::0;20098:112::o;9651:148::-;-1:-1:-1;;;;;9764:18:0;;;9734:7;9764:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9651:148::o;8999:99::-;9080:9;;8999:99;:::o;21801:97::-;21875:15;;21801:97;:::o;21183:111::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;21266:9:::1;:20:::0;21183:111::o;5031:192::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5120:22:0;::::1;5112:73;;;;-1:-1:-1::0;;;5112:73:0::1;;;;;;;:::i;:::-;5196:19;5206:8;5196:9;:19::i;:::-;5031:192:::0;:::o;17192:177::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;17319:42:::1;::::0;-1:-1:-1;;;17319:42:0;;-1:-1:-1;;;;;17319:21:0;::::1;::::0;::::1;::::0;:42:::1;::::0;17341:11;;17354:6;;17319:42:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17192:177:::0;;;:::o;19886:204::-;4362:12;:10;:12::i;:::-;-1:-1:-1;;;;;4351:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;4351:23:0;;4343:68;;;;-1:-1:-1;;;4343:68:0;;;;;;;:::i;:::-;19953:1:::1;19941:9;:13:::0;19977:1:::1;19965:9;:13:::0;;;20012:1:::1;19999:10;:14:::0;20024:10:::1;:14:::0;20059:23:::1;20077:4;20059:17;:23::i;91:98::-:0;171:10;91:98;:::o;18751:322::-;-1:-1:-1;;;;;18843:19:0;;18835:68;;;;-1:-1:-1;;;18835:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18916:21:0;;18908:68;;;;-1:-1:-1;;;18908:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18983:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;19029:32;;;;;19013:6;;19029:32;:::i;:::-;;;;;;;;18751:322;;;:::o;12107:4170::-;-1:-1:-1;;;;;12205:18:0;;12197:68;;;;-1:-1:-1;;;12197:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12278:16:0;;12270:64;;;;-1:-1:-1;;;12270:64:0;;;;;;;:::i;:::-;12362:1;12353:6;:10;12345:72;;;;-1:-1:-1;;;12345:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12452:15:0;;12428:21;12452:15;;;:9;:15;;;;;;12486:23;;;;12478:74;;;;-1:-1:-1;;;12478:74:0;;;;;;;:::i;:::-;12566:12;;;;12563:141;;-1:-1:-1;;;;;12611:21:0;;;;;;:17;:21;;;;;;;;;:48;;-1:-1:-1;;;;;;12636:23:0;;;;;;:17;:23;;;;;;;;12611:48;12603:89;;;;-1:-1:-1;;;12603:89:0;;;;;;;:::i;:::-;12749:14;;;;12746:1075;;;12809:7;:5;:7::i;:::-;-1:-1:-1;;;;;12801:15:0;:4;-1:-1:-1;;;;;12801:15:0;;;:49;;;;;12843:7;:5;:7::i;:::-;-1:-1:-1;;;;;12837:13:0;:2;-1:-1:-1;;;;;12837:13:0;;;12801:49;:86;;;;-1:-1:-1;;;;;;12871:16:0;;;;12801:86;:128;;;;-1:-1:-1;;;;;;12908:21:0;;12922:6;12908:21;;12801:128;12779:1031;;;-1:-1:-1;;;;;13015:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;13051:35:0;;;;;;:31;:35;;;;;;;;13050:36;13015:71;13011:784;;;13129:11;;13119:6;:21;;13111:87;;;;-1:-1:-1;;;13111:87:0;;;;;;;:::i;:::-;13255:15;;13238:13;13248:2;13238:9;:13::i;:::-;13229:22;;:6;:22;:::i;:::-;:41;;13221:81;;;;-1:-1:-1;;;13221:81:0;;;;;;;:::i;:::-;13011:784;;;-1:-1:-1;;;;;13403:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;13437:37:0;;;;;;:31;:37;;;;;;;;13436:38;13403:71;13399:396;;;13517:11;;13507:6;:21;;13499:88;;;;-1:-1:-1;;;13499:88:0;;;;;;;:::i;13399:396::-;-1:-1:-1;;;;;13634:35:0;;;;;;:31;:35;;;;;;;;13630:165;;13728:15;;13711:13;13721:2;13711:9;:13::i;:::-;13702:22;;:6;:22;:::i;:::-;:41;;13694:81;;;;-1:-1:-1;;;13694:81:0;;;;;;;:::i;:::-;13832:25;13860:24;13878:4;13860:9;:24::i;:::-;13832:52;;13920:20;;13900:17;:40;;:66;;;;-1:-1:-1;13950:16:0;;;;13949:17;13900:66;:96;;;;-1:-1:-1;13983:13:0;;-1:-1:-1;;;;;13975:21:0;;;13983:13;;13975:21;;13900:96;:126;;;;-1:-1:-1;14005:21:0;;;;;;;13900:126;13897:352;;;14070:20;;14049:17;:41;14046:188;;-1:-1:-1;14135:20:0;;14178:36;14135:20;14178:17;:36::i;:::-;-1:-1:-1;;;;;14331:23:0;;14265:13;14331:23;;;:17;:23;;;;;;14281:4;;14331:23;;;:48;;-1:-1:-1;;;;;;14358:21:0;;;;;;:17;:21;;;;;;;;14331:48;14328:159;;;-1:-1:-1;14416:1:0;14400:13;:17;;;14328:159;14501:17;14537:18;14568:17;14646:8;14643:1122;;;-1:-1:-1;;;;;14723:16:0;;;;;;:10;:16;;;;;;;;:24;;:16;:24;;:46;;-1:-1:-1;;;;;;14749:14:0;;;;;;:10;:14;;;;;;;;:20;;:14;:20;14723:46;14720:127;;;14793:34;;-1:-1:-1;;;14793:34:0;;;;;;;:::i;14720:127::-;-1:-1:-1;;;;;14901:29:0;;;;;;:25;:29;;;;;;;;:55;;;;-1:-1:-1;14948:7:0;;-1:-1:-1;;;;;14934:22:0;;;14948:7;;14934:22;;14901:55;14897:833;;;15001:1;14985:13;:17;15050:10;;15061:3;;15041:19;;:6;:19;:::i;:::-;:23;;;;:::i;:::-;15029:35;;15123:3;15112:10;;15103:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;15091:35;;15186:3;15174:11;;15166:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;15153:36;-1:-1:-1;15153:36:0;15232:21;15244:9;15232;:21;:::i;:::-;:34;;;;:::i;:::-;15216:13;:50;14897:833;;;-1:-1:-1;;;;;15341:31:0;;;;;;:25;:31;;;;;;;;:59;;;;-1:-1:-1;15392:7:0;;-1:-1:-1;;;;;15376:24:0;;;15392:7;;15376:24;;15341:59;15338:392;;;15463:1;15447:13;:17;15508:9;;15518:3;;15499:18;;:6;:18;:::i;:::-;:22;;;;:::i;:::-;15487:34;;15575:3;15565:9;;15556:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;15544:34;;15634:3;15622:11;;15614:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;15601:36;-1:-1:-1;15601:36:0;15676:21;15688:9;15676;:21;:::i;:::-;:33;;;;:::i;:::-;15660:13;:49;15338:392;15799:22;15815:6;15799:13;:22;:::i;:::-;-1:-1:-1;;;;;15781:15:0;;;;;;:9;:15;;;;;:40;15885:10;15874:9;15853:18;15862:9;15853:6;:18;:::i;:::-;:30;;;;:::i;:::-;:42;;;;:::i;:::-;-1:-1:-1;;;;;15836:13:0;;;;;;:9;:13;;;;;:59;;:13;;;:59;;;;;:::i;:::-;;;;-1:-1:-1;;15913:14:0;;15910:277;;15963:13;;15953:4;15935:24;;;;:9;:24;;;;;:41;;:24;;;:41;;15963:13;;15935:41;:::i;:::-;;;;;;;;16009:9;15996;;:22;;;;;;;:::i;:::-;;;;;;;;16046:9;16033;;:22;;;;;;;:::i;:::-;;;;;;;;16084:10;16070;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;16149:13:0;;16119:44;;16142:4;;-1:-1:-1;;;;;16119:44:0;;;;;;;;:::i;:::-;;;;;;;;15910:277;16221:2;-1:-1:-1;;;;;16206:39:0;16215:4;-1:-1:-1;;;;;16206:39:0;;16231:13;;16224:6;:20;;;;:::i;:::-;16206:39;;;;;;:::i;:::-;;;;;;;;12107:4170;;;;;;;;;:::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;5231:173;;:::o;20870:188::-;-1:-1:-1;;;;;20953:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;20953:39:0;;;;;;;;;;21010:40;;20953:39;;:31;21010:40;;;20870:188;;:::o;16283:346::-;7975:16;:23;;-1:-1:-1;;7975:23:0;7994:4;7975:23;;;16378:9:::1;::::0;16363:25:::1;::::0;:14:::1;:25::i;:::-;16399:30;16419:9;;16399:19;:30::i;:::-;16440:49;16458:4;16465:11;16478:10;;16440:9;:49::i;:::-;16505:44;16535:13;16505:44;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;16572:1:0::1;16560:9;:13:::0;;;16584:9:::1;:13:::0;;;16608:10:::1;:13:::0;8009:16;:24;;-1:-1:-1;;8009:24:0;;;16283:346::o;17661:388::-;17723:12;17738:19;17756:1;17738:15;:19;:::i;:::-;17723:34;-1:-1:-1;17762:17:0;17782:22;17723:34;17782:15;:22;:::i;:::-;17762:42;-1:-1:-1;17834:21:0;17862:22;17879:4;17862:16;:22::i;:::-;17889:18;17910:40;17935:14;17910:21;:40;:::i;:::-;17889:61;;17958:35;17971:9;17982:10;17958:12;:35::i;:::-;18003:41;18018:4;18023:10;18034:9;18003:41;;;;;;;;:::i;:::-;;;;;;;;17661:388;;;;;:::o;16779:399::-;16866:16;;;16880:1;16866:16;;;;;;;;16842:21;;16866:16;;;;;;;;;;-1:-1:-1;16866:16:0;16842:40;;16905:4;16887;16892:1;16887:7;;;;;;-1:-1:-1;;;16887:7:0;;;;;;;;;-1:-1:-1;;;;;16887:23:0;;;:7;;;;;;;;;;:23;;;;16925:7;;:14;;;-1:-1:-1;;;16925:14:0;;;;:7;;;;;:12;;:14;;;;;16887:7;;16925:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16915:4;16920:1;16915:7;;;;;;-1:-1:-1;;;16915:7:0;;;;;;;;;-1:-1:-1;;;;;16915:24:0;;;:7;;;;;;;;;:24;16976:7;;16944:49;;16961:4;;16976:7;16986:6;16944:8;:49::i;:::-;17004:7;;17126:16;;17004:164;;-1:-1:-1;;;17004:164:0;;-1:-1:-1;;;;;17004:7:0;;;;:58;;:164;;17068:6;;17004:7;;17116:4;;17126:16;;;17148:15;;17004:164;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16779:399;;:::o;18057:397::-;18140:16;;;18154:1;18140:16;;;;;;;;18116:21;;18140:16;;;;;;;;;;-1:-1:-1;18140:16:0;18116:40;;18179:4;18161;18166:1;18161:7;;;;;;-1:-1:-1;;;18161:7:0;;;;;;;;;-1:-1:-1;;;;;18161:23:0;;;:7;;;;;;;;;;:23;;;;18199:7;;:14;;;-1:-1:-1;;;18199:14:0;;;;:7;;;;;:12;;:14;;;;;18161:7;;18199:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18189:4;18194:1;18189:7;;;;;;-1:-1:-1;;;18189:7:0;;;;;;;;;-1:-1:-1;;;;;18189:24:0;;;:7;;;;;;;;;:24;18250:7;;18218:54;;18235:4;;18250:7;18260:11;18218:8;:54::i;:::-;18283:7;;:166;;-1:-1:-1;;;18283:166:0;;-1:-1:-1;;;;;18283:7:0;;;;:58;;:166;;18347:11;;18283:7;;18400:4;;18418;;18429:15;;18283:166;;;:::i;18466:277::-;18571:7;;18539:54;;18556:4;;-1:-1:-1;;;;;18571:7:0;18581:11;18539:8;:54::i;:::-;18600:7;;:138;;-1:-1:-1;;;18600:138:0;;-1:-1:-1;;;;;18600:7:0;;;;:23;;18630:9;;18600:138;;18654:4;;18665:11;;18600:7;;;;18696:11;;18718:15;;18600:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18466:277;;:::o;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;:::-;262:5;84:189;-1:-1:-1;;;84:189:1:o;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;818:404::-;;;952:2;940:9;931:7;927:23;923:32;920:2;;;973:6;965;958:22;920:2;1017:9;1004:23;1036:33;1063:5;1036:33;:::i;:::-;1088:5;-1:-1:-1;1145:2:1;1130:18;;1117:32;1158;1117;1158;:::i;:::-;1209:7;1199:17;;;910:312;;;;;:::o;1227:402::-;;;1356:2;1344:9;1335:7;1331:23;1327:32;1324:2;;;1377:6;1369;1362:22;1324:2;1421:9;1408:23;1440:33;1467:5;1440:33;:::i;:::-;1492:5;-1:-1:-1;1549:2:1;1534:18;;1521:32;1562:35;1521:32;1562:35;:::i;1634:470::-;;;;1780:2;1768:9;1759:7;1755:23;1751:32;1748:2;;;1801:6;1793;1786:22;1748:2;1845:9;1832:23;1864:33;1891:5;1864:33;:::i;:::-;1916:5;-1:-1:-1;1973:2:1;1958:18;;1945:32;1986:35;1945:32;1986:35;:::i;:::-;1738:366;;2040:7;;-1:-1:-1;;;2094:2:1;2079:18;;;;2066:32;;1738:366::o;2109:396::-;;;2235:2;2223:9;2214:7;2210:23;2206:32;2203:2;;;2256:6;2248;2241:22;2510:327;;;2639:2;2627:9;2618:7;2614:23;2610:32;2607:2;;;2660:6;2652;2645:22;2607:2;2704:9;2691:23;2723:33;2750:5;2723:33;:::i;:::-;2775:5;2827:2;2812:18;;;;2799:32;;-1:-1:-1;;;2597:240:1:o;2842:253::-;;2951:2;2939:9;2930:7;2926:23;2922:32;2919:2;;;2972:6;2964;2957:22;2919:2;3016:9;3003:23;3035:30;3059:5;3035:30;:::i;3100:257::-;;3220:2;3208:9;3199:7;3195:23;3191:32;3188:2;;;3241:6;3233;3226:22;3188:2;3278:9;3272:16;3297:30;3321:5;3297:30;:::i;3362:491::-;;;;3529:2;3517:9;3508:7;3504:23;3500:32;3497:2;;;3550:6;3542;3535:22;3858:190;;3970:2;3958:9;3949:7;3945:23;3941:32;3938:2;;;3991:6;3983;3976:22;3938:2;-1:-1:-1;4019:23:1;;3928:120;-1:-1:-1;3928:120:1:o;4053:316::-;;;;4210:2;4198:9;4189:7;4185:23;4181:32;4178:2;;;4231:6;4223;4216:22;4178:2;4265:9;4259:16;4249:26;;4315:2;4304:9;4300:18;4294:25;4284:35;;4359:2;4348:9;4344:18;4338:25;4328:35;;4168:201;;;;;:::o;4374:469::-;;4471:5;4465:12;4498:6;4493:3;4486:19;4524:4;4553:2;4548:3;4544:12;4537:19;;4590:2;4583:5;4579:14;4611:3;4623:195;4637:6;4634:1;4631:13;4623:195;;;4702:13;;-1:-1:-1;;;;;4698:39:1;4686:52;;4758:12;;;;4793:15;;;;4734:1;4652:9;4623:195;;;-1:-1:-1;4834:3:1;;4441:402;-1:-1:-1;;;;;4441:402:1:o;4848:203::-;-1:-1:-1;;;;;5012:32:1;;;;4994:51;;4982:2;4967:18;;4949:102::o;5280:282::-;-1:-1:-1;;;;;5480:32:1;;;;5462:51;;5544:2;5529:18;;5522:34;5450:2;5435:18;;5417:145::o;5567:607::-;-1:-1:-1;;;;;5926:15:1;;;5908:34;;5973:2;5958:18;;5951:34;;;;6016:2;6001:18;;5994:34;;;;6059:2;6044:18;;6037:34;;;;6108:15;;;6102:3;6087:19;;6080:44;5888:3;6140:19;;6133:35;;;;5857:3;5842:19;;5824:350::o;6179:187::-;6344:14;;6337:22;6319:41;;6307:2;6292:18;;6274:92::o;6371:603::-;;6512:2;6541;6530:9;6523:21;6573:6;6567:13;6616:6;6611:2;6600:9;6596:18;6589:34;6641:4;6654:140;6668:6;6665:1;6662:13;6654:140;;;6763:14;;;6759:23;;6753:30;6729:17;;;6748:2;6725:26;6718:66;6683:10;;6654:140;;;6812:6;6809:1;6806:13;6803:2;;;6882:4;6877:2;6868:6;6857:9;6853:22;6849:31;6842:45;6803:2;-1:-1:-1;6958:2:1;6937:15;-1:-1:-1;;6933:29:1;6918:45;;;;6965:2;6914:54;;6492:482;-1:-1:-1;;;6492:482:1:o;6979:399::-;7181:2;7163:21;;;7220:2;7200:18;;;7193:30;7259:34;7254:2;7239:18;;7232:62;-1:-1:-1;;;7325:2:1;7310:18;;7303:33;7368:3;7353:19;;7153:225::o;7383:402::-;7585:2;7567:21;;;7624:2;7604:18;;;7597:30;7663:34;7658:2;7643:18;;7636:62;-1:-1:-1;;;7729:2:1;7714:18;;7707:36;7775:3;7760:19;;7557:228::o;7790:398::-;7992:2;7974:21;;;8031:2;8011:18;;;8004:30;8070:34;8065:2;8050:18;;8043:62;-1:-1:-1;;;8136:2:1;8121:18;;8114:32;8178:3;8163:19;;7964:224::o;8193:421::-;8395:2;8377:21;;;8434:2;8414:18;;;8407:30;8473:34;8468:2;8453:18;;8446:62;8544:27;8539:2;8524:18;;8517:55;8604:3;8589:19;;8367:247::o;8619:402::-;8821:2;8803:21;;;8860:2;8840:18;;;8833:30;8899:34;8894:2;8879:18;;8872:62;-1:-1:-1;;;8965:2:1;8950:18;;8943:36;9011:3;8996:19;;8793:228::o;9026:418::-;9228:2;9210:21;;;9267:2;9247:18;;;9240:30;9306:34;9301:2;9286:18;;9279:62;-1:-1:-1;;;9372:2:1;9357:18;;9350:52;9434:3;9419:19;;9200:244::o;9449:414::-;9651:2;9633:21;;;9690:2;9670:18;;;9663:30;9729:34;9724:2;9709:18;;9702:62;-1:-1:-1;;;9795:2:1;9780:18;;9773:48;9853:3;9838:19;;9623:240::o;9868:353::-;10070:2;10052:21;;;10109:2;10089:18;;;10082:30;10148:31;10143:2;10128:18;;10121:59;10212:2;10197:18;;10042:179::o;10226:417::-;10428:2;10410:21;;;10467:2;10447:18;;;10440:30;10506:34;10501:2;10486:18;;10479:62;-1:-1:-1;;;10572:2:1;10557:18;;10550:51;10633:3;10618:19;;10400:243::o;10648:404::-;10850:2;10832:21;;;10889:2;10869:18;;;10862:30;10928:34;10923:2;10908:18;;10901:62;-1:-1:-1;;;10994:2:1;10979:18;;10972:38;11042:3;11027:19;;10822:230::o;11057:356::-;11259:2;11241:21;;;11278:18;;;11271:30;11337:34;11332:2;11317:18;;11310:62;11404:2;11389:18;;11231:182::o;11418:351::-;11620:2;11602:21;;;11659:2;11639:18;;;11632:30;11698:29;11693:2;11678:18;;11671:57;11760:2;11745:18;;11592:177::o;11774:348::-;11976:2;11958:21;;;12015:2;11995:18;;;11988:30;12054:26;12049:2;12034:18;;12027:54;12113:2;12098:18;;11948:174::o;12127:401::-;12329:2;12311:21;;;12368:2;12348:18;;;12341:30;12407:34;12402:2;12387:18;;12380:62;-1:-1:-1;;;12473:2:1;12458:18;;12451:35;12518:3;12503:19;;12301:227::o;12533:400::-;12735:2;12717:21;;;12774:2;12754:18;;;12747:30;12813:34;12808:2;12793:18;;12786:62;-1:-1:-1;;;12879:2:1;12864:18;;12857:34;12923:3;12908:19;;12707:226::o;12938:177::-;13084:25;;;13072:2;13057:18;;13039:76::o;13120:596::-;;13427:6;13416:9;13409:25;13470:6;13465:2;13454:9;13450:18;13443:34;13513:3;13508:2;13497:9;13493:18;13486:31;13534:63;13592:3;13581:9;13577:19;13569:6;13534:63;:::i;:::-;-1:-1:-1;;;;;13633:32:1;;;;13628:2;13613:18;;13606:60;-1:-1:-1;13697:3:1;13682:19;13675:35;13526:71;13399:317;-1:-1:-1;;;13399:317:1:o;14314:319::-;14516:25;;;14572:2;14557:18;;14550:34;;;;14615:2;14600:18;;14593:34;14504:2;14489:18;;14471:162::o;14638:128::-;;14709:1;14705:6;14702:1;14699:13;14696:2;;;14715:18;;:::i;:::-;-1:-1:-1;14751:9:1;;14686:80::o;14771:217::-;;14837:1;14827:2;;-1:-1:-1;;;14862:31:1;;14916:4;14913:1;14906:15;14944:4;14869:1;14934:15;14827:2;-1:-1:-1;14973:9:1;;14817:171::o;14993:168::-;;15099:1;15095;15091:6;15087:14;15084:1;15081:21;15076:1;15069:9;15062:17;15058:45;15055:2;;;15106:18;;:::i;:::-;-1:-1:-1;15146:9:1;;15045:116::o;15166:125::-;;15234:1;15231;15228:8;15225:2;;;15239:18;;:::i;:::-;-1:-1:-1;15276:9:1;;15215:76::o;15296:380::-;15381:1;15371:12;;15428:1;15418:12;;;15439:2;;15493:4;15485:6;15481:17;15471:27;;15439:2;15546;15538:6;15535:14;15515:18;15512:38;15509:2;;;15592:10;15587:3;15583:20;15580:1;15573:31;15627:4;15624:1;15617:15;15655:4;15652:1;15645:15;15509:2;;15351:325;;;:::o;15681:127::-;15742:10;15737:3;15733:20;15730:1;15723:31;15773:4;15770:1;15763:15;15797:4;15794:1;15787:15;15813:133;-1:-1:-1;;;;;15890:31:1;;15880:42;;15870:2;;15936:1;15933;15926:12;15951:120;16039:5;16032:13;16025:21;16018:5;16015:32;16005:2;;16061:1;16058;16051:12

Swarm Source

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