ETH Price: $3,427.66 (+5.29%)
Gas: 10 Gwei

Token

Sheeba Inu (SHEEB)
 

Overview

Max Total Supply

1,000,000,000,000 SHEEB

Holders

1,825

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
150,000 SHEEB

Value
$0.00
0xdf674d1e7d151e33326fe4787824ab967a99d3c9
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:
SheebaInu

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 2022-02-23
*/

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

    string private _name = "Sheeba Inu";
    string private _symbol = "SHEEB";
    uint8 private _decimals = 18;
    uint256 totalFeeFortx = 0;
      uint256 maxWalletTreshold = 5;
    uint256 maxTxTreshold = 5;
    uint256 private swapTreshold =2;

    uint256 private currentThreshold = 20; //Once the token value goes up this number can be decreased (To reduce price impact on asset)
    uint256 private _totalSupply = (100000000 * 10**4) * 10**_decimals; //1T supply
    uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _excludedFromFees;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public automatedMarketMakerPairs;
    address _owner;
    address payable public marketingAddress = payable(0x910Ad70E105224f503067DAe10b518F73B07b5cD);
    address payable public prizePoolAddress = payable(0x0d5cC40d34243ae68519f6d10D0e0B61Cd297DFE);
    uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; // starting 3%
    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;
    //15% buy tax 20% sell tax

    uint256 private buyliqFee = 0; //10
    uint256 private buyprevLiqFee = 10;
    uint256 private buymktFee = 0;//4
    uint256 private buyPrevmktFee = 4;
    uint256 private buyprizePool = 0;//1
    uint256 private buyprevPrizePool = 1;
    uint256 GoldenDaycooldown = 0;

    
    uint256 private sellliqFee = 13;
    uint256 private sellprevLiqFee = 13;
    uint256 private sellmktFee = 5;
    uint256 private sellPrevmktFee = 5;
    uint256 private sellprizePool = 2;
    uint256 private sellprevPrizePool = 2;


    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private mktTokens = 0;
    uint256 private prizepoolTokens = 0;
    uint256 private liqTokens = 0;

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

    //Balances tracker

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

    constructor(){
        _balances[_msgSender()] = _totalSupply;
        //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks
        IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory())
            .createPair(address(this), _uniRouter.WETH());
        
        _excludedFromFees[owner()] = true;         
        _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees
        _router = _uniRouter;
        _liquidityHolders[address(_router)] = true;
        _liquidityHolders[owner()] = 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 currentPZTokens() external view returns (uint256){
            return prizepoolTokens;
     }
     function currentLiqTokens() external view returns (uint256){
            return liqTokens;
     }

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

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

    function decimals()external view returns(uint256){
        return _decimals;
    }
    function name() external view returns (string memory) {
		return _name;
	}
    function symbol() external view returns (string memory){
        return _symbol;
    }
        function updateMaxTxTreshold(uint256 newVal) public onlyOwner{
        maxTxTreshold = newVal;
        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()], "BEP20: transfer amount exceeds allowance");
		_transfer(sender, recipient, amount);
		_approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
		return true;
    }



    //Tokenomics related functions
    
    function goldenDay() public onlyOwner{
         require(block.timestamp > GoldenDaycooldown, "You cant call golden Day more than once per day");
         buyPrevmktFee = buymktFee;
         buyprevLiqFee = buyliqFee;
         buyprevPrizePool = buyprizePool;
         
         buyliqFee = 0;
         buymktFee = 0;
         buyprizePool = 0;
    }
    function goldenDayOver() public onlyOwner{
         buyliqFee = buyprevLiqFee;
         buymktFee = buyPrevmktFee;
         buyprizePool = buyprevPrizePool;
         GoldenDaycooldown = block.timestamp + 86400;
    }

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

      function currentsellLiqFee() public view returns (uint256){
            return sellliqFee;
    }
    function currentsellmktfee() public view returns (uint256){
            return sellmktFee;
    }
    function currentsellyprizepoolfee() public view returns (uint256){
            return sellprizePool;
    }
    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), "BEP20: transfer from the zero address");
		require(to != address(0), "BEP20: transfer to the zero address");
        require(amount > 0,"BEP20: transfered amount must be greater than zero");
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "BEP20: transfer amount exceeds balance");
        if(_liquidityHolders[to]==false && _liquidityHolders[from]==false){
        require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }
        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 prizePoolAmount = 0; // Amount to be added to prize pool.
		    uint256 liqAmount = 0;  // Amount to be added to liquidity.

            if(takeFees){
                
                
                //bot fees
                if(botWallets[from] == true||botWallets[to]==true){
                    totalFeeFortx = 0;
                    mktAmount = amount * 15/100;
                    liqAmount = amount * 75/100;
                    prizePoolAmount = amount * 5/100;
                    totalFeeFortx = mktAmount + liqAmount + prizePoolAmount;
                }
                //Selling fees
                if (automatedMarketMakerPairs[to] && to != address(_router) ){
                        totalFeeFortx = 0;
                        mktAmount = amount * sellmktFee/100;
                        liqAmount = amount * sellliqFee/100;
                        prizePoolAmount = amount * sellprizePool/100;
                        totalFeeFortx = mktAmount + liqAmount + prizePoolAmount;
                }
                //Buy Fees
                else if(automatedMarketMakerPairs[from] && from != address(_router)) {
                
                    totalFeeFortx = 0;
                    mktAmount = amount * buymktFee/100;
                    liqAmount = amount * buyliqFee/100;
                    prizePoolAmount = amount * buyprizePool/100;
                    totalFeeFortx = mktAmount + liqAmount + prizePoolAmount;
                }

                
            }

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

          if(liqAmount != 0) {
			_balances[address(this)] += totalFeeFortx;
			//tLiqTotal += liqAmount;
            liqTokens += liqAmount;
            prizepoolTokens += prizePoolAmount;
            mktTokens += mktAmount;
			emit Transfer(from, address(this), totalFeeFortx);
            
		    }
            emit Transfer(from, to,amount-totalFeeFortx);
            
        
    }
    function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{
        swapAndLiquify(liqTokens);
        swapTokensForETHmkt(mktTokens);
        sendToPrizePool(prizepoolTokens);
        emit tokensSwappedDuringTokenomics(balanceToswap);
        mktTokens = 0;
        prizepoolTokens = 0;
        liqTokens = 0;
    }
     function addLimitExempt(address newAddress)external onlyOwner{
        _liquidityHolders[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 sendToPrizePool(uint256 amount)private {
      _transfer(address(this), prizePoolAddress, amount);

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

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

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

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

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

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

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

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


    }



    //Fees related functions

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

    function removeFromExcluded(address toRemove) public onlyOwner{
        _excludedFromFees[toRemove] = false;
    }
      function 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;
        buyprizePool =0;
        sellprizePool = 0;
        setSwapAndLiquify(false);

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

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

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

    }

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


    //Marketing related 

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

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

      function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{
             sellliqFee= newAmount;
    }
    function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{
             sellmktFee= newAmount;
    }
    
    function updatecurrentsellyprizepoolfee(uint256 newAmount) public onlyOwner{
             sellprizePool= newAmount;
    }
        function updatecurrentsellDevfee(uint256 newAmount) public onlyOwner{
             sellprizePool= 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 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":"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":"currentPZTokens","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":"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":"currentbuyprizepoolfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellyprizepoolfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"goldenDay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"goldenDayOver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prizePoolAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setPrizePoolAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"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":"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":"updatecurrentbuyprizepoolfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellDevfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellyprizepoolfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600a60a08190526953686565626120496e7560b01b60c09081526200002d9160019190620005bb565b506040805180820190915260058082526429a422a2a160d91b60209092019182526200005c91600291620005bb565b506003805460ff1916601217908190556000600455600580805560065560026007556014600855620000939060ff16600a62000722565b620000a49064e8d4a510006200080d565b6009556103e8600754600954620000bc91906200080d565b620000c89190620006b4565b600a55601080546001600160a01b031990811673910ad70e105224f503067dae10b518f73b07b5cd1790915560118054909116730d5cc40d34243ae68519f6d10d0e0b61cd297dfe17905560055460095460649162000127916200080d565b620001339190620006b4565b60125560646006546009546200014a91906200080d565b620001569190620006b4565b6013556015805461ffff191661010090811790915560006018819055600a601955601a8190556004601b55601c8190556001601d55601e819055600d601f81905560205560056021819055602255600260238190556024556025805461ff0019169092179091556ddead00000000000000000000000060805260268190556027819055602855348015620001e957600080fd5b50620001fe620001f862000504565b62000508565b600954600b60006200020f62000504565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028657600080fd5b505afa1580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c1919062000661565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030a57600080fd5b505afa1580156200031f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000345919062000661565b6040518363ffffffff1660e01b81526004016200036492919062000691565b602060405180830381600087803b1580156200037f57600080fd5b505af115801562000394573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ba919062000661565b602a80546001600160a01b0319166001600160a01b03929092169190911790556001600c6000620003ea62000558565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600c8452828120805486166001908117909155602980548885166001600160a01b031990911617908190559092168152601693849052918220805490941681179093556200046862000558565b6001600160a01b0390811682526020820192909252604001600020805460ff191692151592909217909155602a54620004a49116600162000567565b620004ae62000504565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620004f59190620006ab565b60405180910390a35062000882565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031690565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b828054620005c9906200082f565b90600052602060002090601f016020900481019282620005ed576000855562000638565b82601f106200060857805160ff191683800117855562000638565b8280016001018555821562000638579182015b82811115620006385782518255916020019190600101906200061b565b50620006469291506200064a565b5090565b5b808211156200064657600081556001016200064b565b60006020828403121562000673578081fd5b81516001600160a01b03811681146200068a578182fd5b9392505050565b6001600160a01b0392831681529116602082015260400190565b90815260200190565b600082620006d057634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611620006e9575062000719565b818704821115620006fe57620006fe6200086c565b808616156200070c57918102915b9490941c938002620006d8565b94509492505050565b60006200068a60001960ff85168460008262000741575060016200068a565b8162000750575060006200068a565b81600181146200076957600281146200077457620007a8565b60019150506200068a565b60ff8411156200078857620007886200086c565b6001841b915084821115620007a157620007a16200086c565b506200068a565b5060208310610133831016604e8410600b8410161715620007e0575081810a83811115620007da57620007da6200086c565b6200068a565b620007ef8484846001620006d5565b8086048211156200080457620008046200086c565b02949350505050565b60008160001904831182151516156200082a576200082a6200086c565b500290565b6002810460018216806200084457607f821691505b602082108114156200086657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c6128a5620008a860003960008181610ce401526120d901526128a56000f3fe60806040526004361061039b5760003560e01c80638cd0260c116101dc578063bf9eb54011610102578063dd62ed3e116100a0578063edcf19b21161006f578063edcf19b214610543578063f2fde38b14610967578063f953cf3a14610987578063ff31e9301461099c576103a2565b8063dd62ed3e146108fd578063ddcf9b981461091d578063e1370dd314610932578063eb04c61814610947576103a2565b8063cba0e996116100dc578063cba0e9961461089d578063d1294d4c146108bd578063d30ff2d914610421578063d7d7442f146108dd576103a2565b8063bf9eb5401461085d578063c5cb68a114610754578063cb6645341461087d576103a2565b8063a5ece9411161017a578063b195b83911610149578063b195b839146107f3578063b4d95a9314610808578063b62496f514610828578063bf9b015914610848576103a2565b8063a5ece9411461077e578063a6c38f5914610793578063a7a07452146107b3578063a9059cbb146107d3576103a2565b806395d89b41116101b657806395d89b411461071f5780639a7a23d6146107345780639b136da414610754578063a04bdc8114610769576103a2565b80638cd0260c146106d55780638da5cb5b146106f557806390f502831461070a576103a2565b8063487a6905116102c15780636573c4df1161025f578063715018a61161022e578063715018a61461066b578063801527ce146106805780638628c23f146106a0578063893d20e8146106c0576103a2565b80636573c4df146106015780636611f938146106215780636df3333a1461063657806370a082311461064b576103a2565b80634a74bb021161029b5780634a74bb02146105ad5780634bd7ace5146105c25780635297defd146105d757806364c16163146105ec576103a2565b8063487a69051461056357806349bd5a5e146105785780634a0e963c1461058d576103a2565b8063220f66961161033957806327c8f8351161030857806327c8f835146104f7578063313ce567146105195780633cadd3c61461052e578063425ebf4814610543576103a2565b8063220f66961461049857806322788f86146104ad578063232b6406146104c257806323b872dd146104d7576103a2565b806311abb0811161037557806311abb0811461042157806313b4a7f41461044157806314c0eaf91461046157806318160ddd14610483576103a2565b806306fdde03146103a75780630882a863146103d2578063095ea7b3146103f4576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc6109b1565b6040516103c99190612390565b60405180910390f35b3480156103de57600080fd5b506103f26103ed3660046122ae565b610a43565b005b34801561040057600080fd5b5061041461040f366004612269565b610a90565b6040516103c99190612385565b34801561042d57600080fd5b506103f261043c3660046122ae565b610aad565b34801561044d57600080fd5b506103f261045c3660046121df565b610af1565b34801561046d57600080fd5b50610476610b90565b6040516103c99190612740565b34801561048f57600080fd5b50610476610b96565b3480156104a457600080fd5b50610414610b9c565b3480156104b957600080fd5b50610476610ba5565b3480156104ce57600080fd5b506103f2610bab565b3480156104e357600080fd5b506104146104f2366004612217565b610c0e565b34801561050357600080fd5b5061050c610ce2565b6040516103c99190612336565b34801561052557600080fd5b50610476610d06565b34801561053a57600080fd5b50610476610d0f565b34801561054f57600080fd5b506103f261055e3660046122ae565b610d15565b34801561056f57600080fd5b50610476610d59565b34801561058457600080fd5b5061050c610d5f565b34801561059957600080fd5b506103f26105a836600461216c565b610d6e565b3480156105b957600080fd5b50610414610dd1565b3480156105ce57600080fd5b50610476610ddf565b3480156105e357600080fd5b50610476610de5565b3480156105f857600080fd5b50610476610deb565b34801561060d57600080fd5b506103f261061c3660046122ae565b610df1565b34801561062d57600080fd5b506103f2610e56565b34801561064257600080fd5b50610476610ed9565b34801561065757600080fd5b5061047661066636600461216c565b610edf565b34801561067757600080fd5b506103f2610efe565b34801561068c57600080fd5b506103f261069b366004612294565b610f49565b3480156106ac57600080fd5b506103f26106bb3660046122ae565b610fa2565b3480156106cc57600080fd5b5061050c610fe6565b3480156106e157600080fd5b506103f26106f03660046122ae565b610ff5565b34801561070157600080fd5b5061050c611039565b34801561071657600080fd5b50610476611048565b34801561072b57600080fd5b506103bc61104e565b34801561074057600080fd5b506103f261074f366004612257565b61105d565b34801561076057600080fd5b506104766110d8565b34801561077557600080fd5b506104766110de565b34801561078a57600080fd5b5061050c6110e4565b34801561079f57600080fd5b506103f26107ae3660046121ab565b6110f3565b3480156107bf57600080fd5b506103f26107ce3660046122ae565b61115d565b3480156107df57600080fd5b506104146107ee366004612269565b6111c2565b3480156107ff57600080fd5b506103f26111d6565b34801561081457600080fd5b506103f261082336600461216c565b61123e565b34801561083457600080fd5b5061041461084336600461216c565b61129e565b34801561085457600080fd5b506104766112b3565b34801561086957600080fd5b506103f261087836600461216c565b6112b9565b34801561088957600080fd5b506103f261089836600461216c565b61131a565b3480156108a957600080fd5b506104146108b836600461216c565b61137d565b3480156108c957600080fd5b506103f26108d83660046122ae565b61139b565b3480156108e957600080fd5b506103f26108f83660046122ae565b611401565b34801561090957600080fd5b506104766109183660046121df565b611445565b34801561092957600080fd5b50610476611470565b34801561093e57600080fd5b50610476611476565b34801561095357600080fd5b506103f261096236600461216c565b61147c565b34801561097357600080fd5b506103f261098236600461216c565b6114dd565b34801561099357600080fd5b506103f261154e565b3480156109a857600080fd5b5061050c6115b6565b6060600180546109c090612809565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec90612809565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050905090565b610a4b6115c5565b6001600160a01b0316610a5c611039565b6001600160a01b031614610a8b5760405162461bcd60e51b8152600401610a82906125f1565b60405180910390fd5b601855565b6000610aa4610a9d6115c5565b84846115c9565b50600192915050565b610ab56115c5565b6001600160a01b0316610ac6611039565b6001600160a01b031614610aec5760405162461bcd60e51b8152600401610a82906125f1565b602355565b610af96115c5565b6001600160a01b0316610b0a611039565b6001600160a01b031614610b305760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b0391821660008181526016602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601790915280822080548516861790559181522080549091169091179055565b60275490565b60095490565b60255460ff1681565b60085490565b610bb36115c5565b6001600160a01b0316610bc4611039565b6001600160a01b031614610bea5760405162461bcd60e51b8152600401610a82906125f1565b601954601855601b54601a55601d54601c55610c09426201518061279b565b601e55565b6001600160a01b0383166000908152600d6020526040812081610c2f6115c5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054821115610c6f5760405162461bcd60e51b8152600401610a8290612561565b610c7a84848461167d565b610cd884610c866115c5565b6001600160a01b0387166000908152600d602052604081208691610ca86115c5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610cd391906127f2565b6115c9565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035460ff1690565b60235490565b610d1d6115c5565b6001600160a01b0316610d2e611039565b6001600160a01b031614610d545760405162461bcd60e51b8152600401610a82906125f1565b601a55565b600a5490565b602a546001600160a01b031681565b610d766115c5565b6001600160a01b0316610d87611039565b6001600160a01b031614610dad5760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b602554610100900460ff1681565b60185490565b60215490565b60285490565b610df96115c5565b6001600160a01b0316610e0a611039565b6001600160a01b031614610e305760405162461bcd60e51b8152600401610a82906125f1565b6005819055600954606490610e469083906127d3565b610e5091906127b3565b60125550565b610e5e6115c5565b6001600160a01b0316610e6f611039565b6001600160a01b031614610e955760405162461bcd60e51b8152600401610a82906125f1565b601e544211610eb65760405162461bcd60e51b8152600401610a8290612626565b601a8054601b5560188054601955601c8054601d55600091829055918190559055565b60075490565b6001600160a01b0381166000908152600b60205260409020545b919050565b610f066115c5565b6001600160a01b0316610f17611039565b6001600160a01b031614610f3d5760405162461bcd60e51b8152600401610a82906125f1565b610f476000611bf7565b565b610f516115c5565b6001600160a01b0316610f62611039565b6001600160a01b031614610f885760405162461bcd60e51b8152600401610a82906125f1565b602580549115156101000261ff0019909216919091179055565b610faa6115c5565b6001600160a01b0316610fbb611039565b6001600160a01b031614610fe15760405162461bcd60e51b8152600401610a82906125f1565b602155565b6000610ff0611039565b905090565b610ffd6115c5565b6001600160a01b031661100e611039565b6001600160a01b0316146110345760405162461bcd60e51b8152600401610a82906125f1565b601f55565b6000546001600160a01b031690565b601f5490565b6060600280546109c090612809565b6110656115c5565b6001600160a01b0316611076611039565b6001600160a01b03161461109c5760405162461bcd60e51b8152600401610a82906125f1565b602a546001600160a01b03838116911614156110ca5760405162461bcd60e51b8152600401610a8290612504565b6110d48282611c47565b5050565b601a5490565b600a5481565b6010546001600160a01b031681565b6110fb6115c5565b6001600160a01b031661110c611039565b6001600160a01b0316146111325760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6111656115c5565b6001600160a01b0316611176611039565b6001600160a01b03161461119c5760405162461bcd60e51b8152600401610a82906125f1565b60068190556009546064906111b29083906127d3565b6111bc91906127b3565b60135550565b6000610aa46111cf6115c5565b848461167d565b6111de6115c5565b6001600160a01b03166111ef611039565b6001600160a01b0316146112155760405162461bcd60e51b8152600401610a82906125f1565b6000601a81905560218190556018819055601f819055601c8190556023819055610f4790610f49565b6112466115c5565b6001600160a01b0316611257611039565b6001600160a01b03161461127d5760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b600e6020526000908152604090205460ff1681565b60135490565b6112c16115c5565b6001600160a01b03166112d2611039565b6001600160a01b0316146112f85760405162461bcd60e51b8152600401610a82906125f1565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6113226115c5565b6001600160a01b0316611333611039565b6001600160a01b0316146113595760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b03166000908152601660205260409020805460ff19166001179055565b6001600160a01b03166000908152600c602052604090205460ff1690565b6113a36115c5565b6001600160a01b03166113b4611039565b6001600160a01b0316146113da5760405162461bcd60e51b8152600401610a82906125f1565b60078190556009546103e8906113f19083906127d3565b6113fb91906127b3565b600a5550565b6114096115c5565b6001600160a01b031661141a611039565b6001600160a01b0316146114405760405162461bcd60e51b8152600401610a82906125f1565b600855565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b60265490565b60125490565b6114846115c5565b6001600160a01b0316611495611039565b6001600160a01b0316146114bb5760405162461bcd60e51b8152600401610a82906125f1565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6114e56115c5565b6001600160a01b03166114f6611039565b6001600160a01b03161461151c5760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b0381166115425760405162461bcd60e51b8152600401610a82906124be565b61154b81611bf7565b50565b6115566115c5565b6001600160a01b0316611567611039565b6001600160a01b03161461158d5760405162461bcd60e51b8152600401610a82906125f1565b6004601a55600a6018556001601c8190556005602155600d601f556002602355610f4790610f49565b6011546001600160a01b031681565b3390565b6001600160a01b0383166115ef5760405162461bcd60e51b8152600401610a829061247a565b6001600160a01b0382166116155760405162461bcd60e51b8152600401610a82906126fe565b6001600160a01b038084166000818152600d602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611670908590612740565b60405180910390a3505050565b6001600160a01b0383166116a35760405162461bcd60e51b8152600401610a8290612435565b6001600160a01b0382166116c95760405162461bcd60e51b8152600401610a82906126bb565b600081116116e95760405162461bcd60e51b8152600401610a82906123e3565b6001600160a01b0383166000908152600b6020526040902054818110156117225760405162461bcd60e51b8152600401610a8290612675565b6001600160a01b03831660009081526016602052604090205460ff1615801561176457506001600160a01b03841660009081526016602052604090205460ff16155b1561178b5760135482111561178b5760405162461bcd60e51b8152600401610a82906125a9565b600061179630610edf565b9050600a5481101580156117ad575060255460ff16155b80156117c75750602a546001600160a01b03868116911614155b80156117da5750602554610100900460ff165b156117f557600a5481106117f55750600a546117f581611c9b565b6001600160a01b0385166000908152600c602052604090205460019060ff168061183757506001600160a01b0385166000908152600c602052604090205460ff165b156118455750600060048190555b60008060008315611a65576001600160a01b03891660009081526014602052604090205460ff1615156001148061189957506001600160a01b03881660009081526014602052604090205460ff1615156001145b1561190757600060045560646118b088600f6127d3565b6118ba91906127b3565b925060646118c988604b6127d3565b6118d391906127b3565b905060646118e28860056127d3565b6118ec91906127b3565b9150816118f9828561279b565b611903919061279b565b6004555b6001600160a01b0388166000908152600e602052604090205460ff16801561193d57506029546001600160a01b03898116911614155b156119b857600060045560215460649061195790896127d3565b61196191906127b3565b92506064601f548861197391906127d3565b61197d91906127b3565b905060646023548861198f91906127d3565b61199991906127b3565b9150816119a6828561279b565b6119b0919061279b565b600455611a65565b6001600160a01b0389166000908152600e602052604090205460ff1680156119ee57506029546001600160a01b038a8116911614155b15611a65576000600455601a54606490611a0890896127d3565b611a1291906127b3565b9250606460185488611a2491906127d3565b611a2e91906127b3565b90506064601c5488611a4091906127d3565b611a4a91906127b3565b915081611a57828561279b565b611a61919061279b565b6004555b611a6f87876127f2565b6001600160a01b038a166000908152600b60205260409020558082611a94858a6127f2565b611a9e91906127f2565b611aa891906127f2565b6001600160a01b0389166000908152600b602052604081208054909190611ad090849061279b565b90915550508015611b9457600454306000908152600b602052604081208054909190611afd90849061279b565b925050819055508060286000828254611b16919061279b565b925050819055508160276000828254611b2f919061279b565b925050819055508260266000828254611b48919061279b565b909155505060045460405130916001600160a01b038c16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91611b8b91612740565b60405180910390a35b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548a611bd791906127f2565b604051611be49190612740565b60405180910390a3505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6025805460ff19166001179055602854611cb490611d1d565b611cbf602654611d9e565b611cca602754611f27565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f0190481604051611cf99190612740565b60405180910390a1506000602681905560278190556028556025805460ff19169055565b6000611d2a6002836127b3565b90506000611d3882846127f2565b905047611d4483611f3f565b6000611d5082476127f2565b9050611d5c838261208e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611d8f93929190612785565b60405180910390a15050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611de157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611e3557600080fd5b505afa158015611e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6d919061218f565b81600181518110611e8e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602954611eb491309116846115c9565b60295460105460405163791ac94760e01b81526001600160a01b039283169263791ac94792611ef192879260009288929116904290600401612749565b600060405180830381600087803b158015611f0b57600080fd5b505af1158015611f1f573d6000803e3d6000fd5b505050505050565b60115461154b9030906001600160a01b03168361167d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f8257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611fd657600080fd5b505afa158015611fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200e919061218f565b8160018151811061202f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260295461205591309116846115c9565b60295460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ef1908590600090869030904290600401612749565b6029546120a69030906001600160a01b0316846115c9565b60295460405163f305d71960e01b81526001600160a01b039091169063f305d719908390612103903090879060009081907f000000000000000000000000000000000000000000000000000000000000000090429060040161234a565b6060604051808303818588803b15801561211c57600080fd5b505af1158015612130573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061215591906122c6565b5050505050565b80358015158114610ef957600080fd5b60006020828403121561217d578081fd5b81356121888161285a565b9392505050565b6000602082840312156121a0578081fd5b81516121888161285a565b600080604083850312156121bd578081fd5b82356121c88161285a565b91506121d66020840161215c565b90509250929050565b600080604083850312156121f1578182fd5b82356121fc8161285a565b9150602083013561220c8161285a565b809150509250929050565b60008060006060848603121561222b578081fd5b83356122368161285a565b925060208401356122468161285a565b929592945050506040919091013590565b600080604083850312156121bd578182fd5b6000806040838503121561227b578182fd5b82356122868161285a565b946020939093013593505050565b6000602082840312156122a5578081fd5b6121888261215c565b6000602082840312156122bf578081fd5b5035919050565b6000806000606084860312156122da578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b8381101561232b5781516001600160a01b031687529582019590820190600101612306565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b818110156123bc578581018301518582016040015282016123a0565b818111156123cd5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526032908201527f42455032303a207472616e73666572656420616d6f756e74206d7573742062656040820152712067726561746572207468616e207a65726f60701b606082015260800190565b60208082526025908201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060408201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606082015260800190565b60208082526028908201527f42455032303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602f908201527f596f752063616e742063616c6c20676f6c64656e20446179206d6f726520746860408201526e616e206f6e6365207065722064617960881b606082015260800190565b60208082526026908201527f42455032303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526023908201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b90815260200190565b600086825285602083015260a0604083015261276860a08301866122f3565b6001600160a01b0394909416606083015250608001529392505050565b9283526020830191909152604082015260600190565b600082198211156127ae576127ae612844565b500190565b6000826127ce57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156127ed576127ed612844565b500290565b60008282101561280457612804612844565b500390565b60028104600182168061281d57607f821691505b6020821081141561283e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461154b57600080fdfea26469706673582212203fc3999f04ad203436a0fb4b458594100f388461c19dd64341b49700bdec87d164736f6c63430008000033

Deployed Bytecode

0x60806040526004361061039b5760003560e01c80638cd0260c116101dc578063bf9eb54011610102578063dd62ed3e116100a0578063edcf19b21161006f578063edcf19b214610543578063f2fde38b14610967578063f953cf3a14610987578063ff31e9301461099c576103a2565b8063dd62ed3e146108fd578063ddcf9b981461091d578063e1370dd314610932578063eb04c61814610947576103a2565b8063cba0e996116100dc578063cba0e9961461089d578063d1294d4c146108bd578063d30ff2d914610421578063d7d7442f146108dd576103a2565b8063bf9eb5401461085d578063c5cb68a114610754578063cb6645341461087d576103a2565b8063a5ece9411161017a578063b195b83911610149578063b195b839146107f3578063b4d95a9314610808578063b62496f514610828578063bf9b015914610848576103a2565b8063a5ece9411461077e578063a6c38f5914610793578063a7a07452146107b3578063a9059cbb146107d3576103a2565b806395d89b41116101b657806395d89b411461071f5780639a7a23d6146107345780639b136da414610754578063a04bdc8114610769576103a2565b80638cd0260c146106d55780638da5cb5b146106f557806390f502831461070a576103a2565b8063487a6905116102c15780636573c4df1161025f578063715018a61161022e578063715018a61461066b578063801527ce146106805780638628c23f146106a0578063893d20e8146106c0576103a2565b80636573c4df146106015780636611f938146106215780636df3333a1461063657806370a082311461064b576103a2565b80634a74bb021161029b5780634a74bb02146105ad5780634bd7ace5146105c25780635297defd146105d757806364c16163146105ec576103a2565b8063487a69051461056357806349bd5a5e146105785780634a0e963c1461058d576103a2565b8063220f66961161033957806327c8f8351161030857806327c8f835146104f7578063313ce567146105195780633cadd3c61461052e578063425ebf4814610543576103a2565b8063220f66961461049857806322788f86146104ad578063232b6406146104c257806323b872dd146104d7576103a2565b806311abb0811161037557806311abb0811461042157806313b4a7f41461044157806314c0eaf91461046157806318160ddd14610483576103a2565b806306fdde03146103a75780630882a863146103d2578063095ea7b3146103f4576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc6109b1565b6040516103c99190612390565b60405180910390f35b3480156103de57600080fd5b506103f26103ed3660046122ae565b610a43565b005b34801561040057600080fd5b5061041461040f366004612269565b610a90565b6040516103c99190612385565b34801561042d57600080fd5b506103f261043c3660046122ae565b610aad565b34801561044d57600080fd5b506103f261045c3660046121df565b610af1565b34801561046d57600080fd5b50610476610b90565b6040516103c99190612740565b34801561048f57600080fd5b50610476610b96565b3480156104a457600080fd5b50610414610b9c565b3480156104b957600080fd5b50610476610ba5565b3480156104ce57600080fd5b506103f2610bab565b3480156104e357600080fd5b506104146104f2366004612217565b610c0e565b34801561050357600080fd5b5061050c610ce2565b6040516103c99190612336565b34801561052557600080fd5b50610476610d06565b34801561053a57600080fd5b50610476610d0f565b34801561054f57600080fd5b506103f261055e3660046122ae565b610d15565b34801561056f57600080fd5b50610476610d59565b34801561058457600080fd5b5061050c610d5f565b34801561059957600080fd5b506103f26105a836600461216c565b610d6e565b3480156105b957600080fd5b50610414610dd1565b3480156105ce57600080fd5b50610476610ddf565b3480156105e357600080fd5b50610476610de5565b3480156105f857600080fd5b50610476610deb565b34801561060d57600080fd5b506103f261061c3660046122ae565b610df1565b34801561062d57600080fd5b506103f2610e56565b34801561064257600080fd5b50610476610ed9565b34801561065757600080fd5b5061047661066636600461216c565b610edf565b34801561067757600080fd5b506103f2610efe565b34801561068c57600080fd5b506103f261069b366004612294565b610f49565b3480156106ac57600080fd5b506103f26106bb3660046122ae565b610fa2565b3480156106cc57600080fd5b5061050c610fe6565b3480156106e157600080fd5b506103f26106f03660046122ae565b610ff5565b34801561070157600080fd5b5061050c611039565b34801561071657600080fd5b50610476611048565b34801561072b57600080fd5b506103bc61104e565b34801561074057600080fd5b506103f261074f366004612257565b61105d565b34801561076057600080fd5b506104766110d8565b34801561077557600080fd5b506104766110de565b34801561078a57600080fd5b5061050c6110e4565b34801561079f57600080fd5b506103f26107ae3660046121ab565b6110f3565b3480156107bf57600080fd5b506103f26107ce3660046122ae565b61115d565b3480156107df57600080fd5b506104146107ee366004612269565b6111c2565b3480156107ff57600080fd5b506103f26111d6565b34801561081457600080fd5b506103f261082336600461216c565b61123e565b34801561083457600080fd5b5061041461084336600461216c565b61129e565b34801561085457600080fd5b506104766112b3565b34801561086957600080fd5b506103f261087836600461216c565b6112b9565b34801561088957600080fd5b506103f261089836600461216c565b61131a565b3480156108a957600080fd5b506104146108b836600461216c565b61137d565b3480156108c957600080fd5b506103f26108d83660046122ae565b61139b565b3480156108e957600080fd5b506103f26108f83660046122ae565b611401565b34801561090957600080fd5b506104766109183660046121df565b611445565b34801561092957600080fd5b50610476611470565b34801561093e57600080fd5b50610476611476565b34801561095357600080fd5b506103f261096236600461216c565b61147c565b34801561097357600080fd5b506103f261098236600461216c565b6114dd565b34801561099357600080fd5b506103f261154e565b3480156109a857600080fd5b5061050c6115b6565b6060600180546109c090612809565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec90612809565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050905090565b610a4b6115c5565b6001600160a01b0316610a5c611039565b6001600160a01b031614610a8b5760405162461bcd60e51b8152600401610a82906125f1565b60405180910390fd5b601855565b6000610aa4610a9d6115c5565b84846115c9565b50600192915050565b610ab56115c5565b6001600160a01b0316610ac6611039565b6001600160a01b031614610aec5760405162461bcd60e51b8152600401610a82906125f1565b602355565b610af96115c5565b6001600160a01b0316610b0a611039565b6001600160a01b031614610b305760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b0391821660008181526016602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601790915280822080548516861790559181522080549091169091179055565b60275490565b60095490565b60255460ff1681565b60085490565b610bb36115c5565b6001600160a01b0316610bc4611039565b6001600160a01b031614610bea5760405162461bcd60e51b8152600401610a82906125f1565b601954601855601b54601a55601d54601c55610c09426201518061279b565b601e55565b6001600160a01b0383166000908152600d6020526040812081610c2f6115c5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054821115610c6f5760405162461bcd60e51b8152600401610a8290612561565b610c7a84848461167d565b610cd884610c866115c5565b6001600160a01b0387166000908152600d602052604081208691610ca86115c5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610cd391906127f2565b6115c9565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60035460ff1690565b60235490565b610d1d6115c5565b6001600160a01b0316610d2e611039565b6001600160a01b031614610d545760405162461bcd60e51b8152600401610a82906125f1565b601a55565b600a5490565b602a546001600160a01b031681565b610d766115c5565b6001600160a01b0316610d87611039565b6001600160a01b031614610dad5760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b602554610100900460ff1681565b60185490565b60215490565b60285490565b610df96115c5565b6001600160a01b0316610e0a611039565b6001600160a01b031614610e305760405162461bcd60e51b8152600401610a82906125f1565b6005819055600954606490610e469083906127d3565b610e5091906127b3565b60125550565b610e5e6115c5565b6001600160a01b0316610e6f611039565b6001600160a01b031614610e955760405162461bcd60e51b8152600401610a82906125f1565b601e544211610eb65760405162461bcd60e51b8152600401610a8290612626565b601a8054601b5560188054601955601c8054601d55600091829055918190559055565b60075490565b6001600160a01b0381166000908152600b60205260409020545b919050565b610f066115c5565b6001600160a01b0316610f17611039565b6001600160a01b031614610f3d5760405162461bcd60e51b8152600401610a82906125f1565b610f476000611bf7565b565b610f516115c5565b6001600160a01b0316610f62611039565b6001600160a01b031614610f885760405162461bcd60e51b8152600401610a82906125f1565b602580549115156101000261ff0019909216919091179055565b610faa6115c5565b6001600160a01b0316610fbb611039565b6001600160a01b031614610fe15760405162461bcd60e51b8152600401610a82906125f1565b602155565b6000610ff0611039565b905090565b610ffd6115c5565b6001600160a01b031661100e611039565b6001600160a01b0316146110345760405162461bcd60e51b8152600401610a82906125f1565b601f55565b6000546001600160a01b031690565b601f5490565b6060600280546109c090612809565b6110656115c5565b6001600160a01b0316611076611039565b6001600160a01b03161461109c5760405162461bcd60e51b8152600401610a82906125f1565b602a546001600160a01b03838116911614156110ca5760405162461bcd60e51b8152600401610a8290612504565b6110d48282611c47565b5050565b601a5490565b600a5481565b6010546001600160a01b031681565b6110fb6115c5565b6001600160a01b031661110c611039565b6001600160a01b0316146111325760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6111656115c5565b6001600160a01b0316611176611039565b6001600160a01b03161461119c5760405162461bcd60e51b8152600401610a82906125f1565b60068190556009546064906111b29083906127d3565b6111bc91906127b3565b60135550565b6000610aa46111cf6115c5565b848461167d565b6111de6115c5565b6001600160a01b03166111ef611039565b6001600160a01b0316146112155760405162461bcd60e51b8152600401610a82906125f1565b6000601a81905560218190556018819055601f819055601c8190556023819055610f4790610f49565b6112466115c5565b6001600160a01b0316611257611039565b6001600160a01b03161461127d5760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b600e6020526000908152604090205460ff1681565b60135490565b6112c16115c5565b6001600160a01b03166112d2611039565b6001600160a01b0316146112f85760405162461bcd60e51b8152600401610a82906125f1565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6113226115c5565b6001600160a01b0316611333611039565b6001600160a01b0316146113595760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b03166000908152601660205260409020805460ff19166001179055565b6001600160a01b03166000908152600c602052604090205460ff1690565b6113a36115c5565b6001600160a01b03166113b4611039565b6001600160a01b0316146113da5760405162461bcd60e51b8152600401610a82906125f1565b60078190556009546103e8906113f19083906127d3565b6113fb91906127b3565b600a5550565b6114096115c5565b6001600160a01b031661141a611039565b6001600160a01b0316146114405760405162461bcd60e51b8152600401610a82906125f1565b600855565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b60265490565b60125490565b6114846115c5565b6001600160a01b0316611495611039565b6001600160a01b0316146114bb5760405162461bcd60e51b8152600401610a82906125f1565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6114e56115c5565b6001600160a01b03166114f6611039565b6001600160a01b03161461151c5760405162461bcd60e51b8152600401610a82906125f1565b6001600160a01b0381166115425760405162461bcd60e51b8152600401610a82906124be565b61154b81611bf7565b50565b6115566115c5565b6001600160a01b0316611567611039565b6001600160a01b03161461158d5760405162461bcd60e51b8152600401610a82906125f1565b6004601a55600a6018556001601c8190556005602155600d601f556002602355610f4790610f49565b6011546001600160a01b031681565b3390565b6001600160a01b0383166115ef5760405162461bcd60e51b8152600401610a829061247a565b6001600160a01b0382166116155760405162461bcd60e51b8152600401610a82906126fe565b6001600160a01b038084166000818152600d602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611670908590612740565b60405180910390a3505050565b6001600160a01b0383166116a35760405162461bcd60e51b8152600401610a8290612435565b6001600160a01b0382166116c95760405162461bcd60e51b8152600401610a82906126bb565b600081116116e95760405162461bcd60e51b8152600401610a82906123e3565b6001600160a01b0383166000908152600b6020526040902054818110156117225760405162461bcd60e51b8152600401610a8290612675565b6001600160a01b03831660009081526016602052604090205460ff1615801561176457506001600160a01b03841660009081526016602052604090205460ff16155b1561178b5760135482111561178b5760405162461bcd60e51b8152600401610a82906125a9565b600061179630610edf565b9050600a5481101580156117ad575060255460ff16155b80156117c75750602a546001600160a01b03868116911614155b80156117da5750602554610100900460ff165b156117f557600a5481106117f55750600a546117f581611c9b565b6001600160a01b0385166000908152600c602052604090205460019060ff168061183757506001600160a01b0385166000908152600c602052604090205460ff165b156118455750600060048190555b60008060008315611a65576001600160a01b03891660009081526014602052604090205460ff1615156001148061189957506001600160a01b03881660009081526014602052604090205460ff1615156001145b1561190757600060045560646118b088600f6127d3565b6118ba91906127b3565b925060646118c988604b6127d3565b6118d391906127b3565b905060646118e28860056127d3565b6118ec91906127b3565b9150816118f9828561279b565b611903919061279b565b6004555b6001600160a01b0388166000908152600e602052604090205460ff16801561193d57506029546001600160a01b03898116911614155b156119b857600060045560215460649061195790896127d3565b61196191906127b3565b92506064601f548861197391906127d3565b61197d91906127b3565b905060646023548861198f91906127d3565b61199991906127b3565b9150816119a6828561279b565b6119b0919061279b565b600455611a65565b6001600160a01b0389166000908152600e602052604090205460ff1680156119ee57506029546001600160a01b038a8116911614155b15611a65576000600455601a54606490611a0890896127d3565b611a1291906127b3565b9250606460185488611a2491906127d3565b611a2e91906127b3565b90506064601c5488611a4091906127d3565b611a4a91906127b3565b915081611a57828561279b565b611a61919061279b565b6004555b611a6f87876127f2565b6001600160a01b038a166000908152600b60205260409020558082611a94858a6127f2565b611a9e91906127f2565b611aa891906127f2565b6001600160a01b0389166000908152600b602052604081208054909190611ad090849061279b565b90915550508015611b9457600454306000908152600b602052604081208054909190611afd90849061279b565b925050819055508060286000828254611b16919061279b565b925050819055508160276000828254611b2f919061279b565b925050819055508260266000828254611b48919061279b565b909155505060045460405130916001600160a01b038c16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91611b8b91612740565b60405180910390a35b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548a611bd791906127f2565b604051611be49190612740565b60405180910390a3505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6025805460ff19166001179055602854611cb490611d1d565b611cbf602654611d9e565b611cca602754611f27565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f0190481604051611cf99190612740565b60405180910390a1506000602681905560278190556028556025805460ff19169055565b6000611d2a6002836127b3565b90506000611d3882846127f2565b905047611d4483611f3f565b6000611d5082476127f2565b9050611d5c838261208e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611d8f93929190612785565b60405180910390a15050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611de157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611e3557600080fd5b505afa158015611e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6d919061218f565b81600181518110611e8e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602954611eb491309116846115c9565b60295460105460405163791ac94760e01b81526001600160a01b039283169263791ac94792611ef192879260009288929116904290600401612749565b600060405180830381600087803b158015611f0b57600080fd5b505af1158015611f1f573d6000803e3d6000fd5b505050505050565b60115461154b9030906001600160a01b03168361167d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f8257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611fd657600080fd5b505afa158015611fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200e919061218f565b8160018151811061202f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260295461205591309116846115c9565b60295460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ef1908590600090869030904290600401612749565b6029546120a69030906001600160a01b0316846115c9565b60295460405163f305d71960e01b81526001600160a01b039091169063f305d719908390612103903090879060009081907f000000000000000000000000000000000000000000000000000000000000dead90429060040161234a565b6060604051808303818588803b15801561211c57600080fd5b505af1158015612130573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061215591906122c6565b5050505050565b80358015158114610ef957600080fd5b60006020828403121561217d578081fd5b81356121888161285a565b9392505050565b6000602082840312156121a0578081fd5b81516121888161285a565b600080604083850312156121bd578081fd5b82356121c88161285a565b91506121d66020840161215c565b90509250929050565b600080604083850312156121f1578182fd5b82356121fc8161285a565b9150602083013561220c8161285a565b809150509250929050565b60008060006060848603121561222b578081fd5b83356122368161285a565b925060208401356122468161285a565b929592945050506040919091013590565b600080604083850312156121bd578182fd5b6000806040838503121561227b578182fd5b82356122868161285a565b946020939093013593505050565b6000602082840312156122a5578081fd5b6121888261215c565b6000602082840312156122bf578081fd5b5035919050565b6000806000606084860312156122da578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b8381101561232b5781516001600160a01b031687529582019590820190600101612306565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b818110156123bc578581018301518582016040015282016123a0565b818111156123cd5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526032908201527f42455032303a207472616e73666572656420616d6f756e74206d7573742062656040820152712067726561746572207468616e207a65726f60701b606082015260800190565b60208082526025908201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060408201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606082015260800190565b60208082526028908201527f42455032303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602f908201527f596f752063616e742063616c6c20676f6c64656e20446179206d6f726520746860408201526e616e206f6e6365207065722064617960881b606082015260800190565b60208082526026908201527f42455032303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526023908201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b90815260200190565b600086825285602083015260a0604083015261276860a08301866122f3565b6001600160a01b0394909416606083015250608001529392505050565b9283526020830191909152604082015260600190565b600082198211156127ae576127ae612844565b500190565b6000826127ce57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156127ed576127ed612844565b500290565b60008282101561280457612804612844565b500390565b60028104600182168061281d57607f821691505b6020821081141561283e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461154b57600080fdfea26469706673582212203fc3999f04ad203436a0fb4b458594100f388461c19dd64341b49700bdec87d164736f6c63430008000033

Deployed Bytecode Sourcemap

5417:17075:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10469:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21044:111;;;;;;;;;;-1:-1:-1;21044:111:0;;;;;:::i;:::-;;:::i;:::-;;10203:168;;;;;;;;;;-1:-1:-1;10203:168:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21648:123::-;;;;;;;;;;-1:-1:-1;21648:123:0;;;;;:::i;:::-;;:::i;19142:302::-;;;;;;;;;;-1:-1:-1;19142:302:0;;;;;:::i;:::-;;:::i;9394:104::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9613:106::-;;;;;;;;;;;;;:::i;7473:28::-;;;;;;;;;;;;;:::i;12818:101::-;;;;;;;;;;;;;:::i;11815:221::-;;;;;;;;;;;;;:::i;11009:388::-;;;;;;;;;;-1:-1:-1;11009:388:0;;;;;:::i;:::-;;:::i;7555:81::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10379:84::-;;;;;;;;;;;;;:::i;12704:108::-;;;;;;;;;;;;;:::i;21278:117::-;;;;;;;;;;-1:-1:-1;21278:117:0;;;;;:::i;:::-;;:::i;22384:105::-;;;;;;;;;;;;;:::i;8104:28::-;;;;;;;;;;;;;:::i;18896:114::-;;;;;;;;;;-1:-1:-1;18896:114:0;;;;;:::i;:::-;;:::i;7508:40::-;;;;;;;;;;;;;:::i;12180:96::-;;;;;;;;;;;;;:::i;12600:98::-;;;;;;;;;;;;;:::i;9505:99::-;;;;;;;;;;;;;:::i;10820:175::-;;;;;;;;;;-1:-1:-1;10820:175:0;;;;;:::i;:::-;;:::i;11451:358::-;;;;;;;;;;;;;:::i;22281:97::-;;;;;;;;;;;;;:::i;9730:118::-;;;;;;;;;;-1:-1:-1;9730:118:0;;;;;:::i;:::-;;:::i;4782:94::-;;;;;;;;;;;;;:::i;20078:113::-;;;;;;;;;;-1:-1:-1;20078:113:0;;;;;:::i;:::-;;:::i;21524:112::-;;;;;;;;;;-1:-1:-1;21524:112:0;;;;;:::i;:::-;;:::i;9196:86::-;;;;;;;;;;;;;:::i;21405:113::-;;;;;;;;;;-1:-1:-1;21405:113:0;;;;;:::i;:::-;;:::i;4131:87::-;;;;;;;;;;;;;:::i;12496:98::-;;;;;;;;;;;;;:::i;10551:88::-;;;;;;;;;;;;;:::i;20602:242::-;;;;;;;;;;-1:-1:-1;20602:242:0;;;;;:::i;:::-;;:::i;12282:96::-;;;;;;;;;;;;;:::i;5984:71::-;;;;;;;;;;;;;:::i;6335:93::-;;;;;;;;;;;;;:::i;12044:130::-;;;;;;;;;;-1:-1:-1;12044:130:0;;;;;:::i;:::-;;:::i;10649:164::-;;;;;;;;;;-1:-1:-1;10649:164:0;;;;;:::i;:::-;;:::i;9859:176::-;;;;;;;;;;-1:-1:-1;9859:176:0;;;;;:::i;:::-;;:::i;19452:249::-;;;;;;;;;;;;;:::i;19018:116::-;;;;;;;;;;-1:-1:-1;19018:116:0;;;;;:::i;:::-;;:::i;6249:58::-;;;;;;;;;;-1:-1:-1;6249:58:0;;;;;:::i;:::-;;:::i;22006:89::-;;;;;;;;;;;;;:::i;20229:118::-;;;;;;;;;;-1:-1:-1;20229:118:0;;;;;:::i;:::-;;:::i;16786:123::-;;;;;;;;;;-1:-1:-1;16786:123:0;;;;;:::i;:::-;;:::i;12925:118::-;;;;;;;;;;-1:-1:-1;12925:118:0;;;;;:::i;:::-;;:::i;22101:174::-;;;;;;;;;;-1:-1:-1;22101:174:0;;;;;:::i;:::-;;:::i;19958:112::-;;;;;;;;;;-1:-1:-1;19958:112:0;;;;;:::i;:::-;;:::i;10046:148::-;;;;;;;;;;-1:-1:-1;10046:148:0;;;;;:::i;:::-;;:::i;9288:99::-;;;;;;;;;;;;;:::i;21903:97::-;;;;;;;;;;;;;:::i;20472:124::-;;;;;;;;;;-1:-1:-1;20472:124:0;;;;;:::i;:::-;;:::i;5031:192::-;;;;;;;;;;-1:-1:-1;5031:192:0;;;;;:::i;:::-;;:::i;19707:243::-;;;;;;;;;;;;;:::i;6435:93::-;;;;;;;;;;;;;:::i;10469:76::-;10508:13;10535:5;10528:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10469:76;:::o;21044: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;:::-;;;;;;;;;21126:9:::1;:21:::0;21044:111::o;10203:168::-;10280:4;10300:37;10309:12;:10;:12::i;:::-;10322:7;10330:6;10300:8;:37::i;:::-;-1:-1:-1;10359:4:0;10203:168;;;;:::o;21648:123::-;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;:::-;21739:13:::1;:24:::0;21648:123::o;19142: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;;;;;19248:34:0;;::::1;;::::0;;;:17:::1;:34;::::0;;;;;;;:41;;19285:4:::1;-1:-1:-1::0;;19248:41:0;;::::1;::::0;::::1;::::0;;;19300:26;;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;19344;;;:16:::1;:33:::0;;;;;;:40;;;::::1;::::0;::::1;::::0;;19395:25;;;;:32;;;;::::1;::::0;;::::1;::::0;;19142:302::o;9394:104::-;9474:15;;9394:104;:::o;9613:106::-;9698:12;;9613:106;:::o;7473:28::-;;;;;;:::o;12818:101::-;12895:16;;12818:101;:::o;11815:221::-;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;:::-;11880:13:::1;::::0;11868:9:::1;:25:::0;11917:13:::1;::::0;11905:9:::1;:25:::0;11957:16:::1;::::0;11942:12:::1;:31:::0;12005:23:::1;:15;12023:5;12005:23;:::i;:::-;11985:17;:43:::0;11815:221::o;11009:388::-;-1:-1:-1;;;;;11175:19:0;;11141:4;11175:19;;;:11;:19;;;;;11141:4;11195:12;:10;:12::i;:::-;-1:-1:-1;;;;;11175:33:0;-1:-1:-1;;;;;11175:33:0;;;;;;;;;;;;;11165:6;:43;;11157:96;;;;-1:-1:-1;;;11157:96:0;;;;;;;:::i;:::-;11258:36;11268:6;11276:9;11287:6;11258:9;:36::i;:::-;11299:74;11308:6;11316:12;:10;:12::i;:::-;-1:-1:-1;;;;;11330:19:0;;;;;;:11;:19;;;;;11366:6;;11350:12;:10;:12::i;:::-;-1:-1:-1;;;;;11330:33:0;-1:-1:-1;;;;;11330:33:0;;;;;;;;;;;;;:42;;;;:::i;:::-;11299:8;:74::i;:::-;-1:-1:-1;11385:4:0;11009:388;;;;;:::o;7555:81::-;;;:::o;10379:84::-;10446:9;;;;10379:84;:::o;12704:108::-;12791:13;;12704:108;:::o;21278:117::-;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;:::-;21367:9:::1;:20:::0;21278:117::o;22384:105::-;22461:20;;22384:105;:::o;8104:28::-;;;-1:-1:-1;;;;;8104:28:0;;:::o;18896: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;;;;;18967:28:0::1;;::::0;;;:17:::1;:28;::::0;;;;:35;;-1:-1:-1;;18967:35:0::1;18998:4;18967:35;::::0;;18896:114::o;7508:40::-;;;;;;;;;:::o;12180:96::-;12259:9;;12180:96;:::o;12600:98::-;12680:10;;12600:98;:::o;9505:99::-;9586:9;;9505:99;:::o;10820: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;:::-;10896:17:::1;:26:::0;;;10951:12:::1;::::0;10982:3:::1;::::0;10951:30:::1;::::0;10916:6;;10951:30:::1;:::i;:::-;:34;;;;:::i;:::-;10933:15;:52:::0;-1:-1:-1;10820:175:0:o;11451:358::-;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;:::-;11526:17:::1;;11508:15;:35;11500:95;;;;-1:-1:-1::0;;;11500:95:0::1;;;;;;;:::i;:::-;11623:9;::::0;;11607:13:::1;:25:::0;11660:9:::1;::::0;;11644:13:::1;:25:::0;11700:12:::1;::::0;;11681:16:::1;:31:::0;-1:-1:-1;11735:13:0;;;;11760;;;;11785:16;;11451:358::o;22281:97::-;22358:12;;22281:97;:::o;9730:118::-;-1:-1:-1;;;;;9822:18:0;;9796:7;9822:18;;;:9;:18;;;;;;9730: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;20078: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;:::-;20151:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;20151:32:0;;::::1;::::0;;;::::1;::::0;;20078:113::o;21524: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;:::-;21607:10:::1;:21:::0;21524:112::o;9196:86::-;9237:7;9267;:5;:7::i;:::-;9260:14;;9196:86;:::o;21405: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;:::-;21489:10:::1;:21:::0;21405:113::o;4131:87::-;4177:7;4204:6;-1:-1:-1;;;;;4204:6:0;4131:87;:::o;12496:98::-;12576:10;;12496:98;:::o;10551:88::-;10592:13;10624:7;10617:14;;;;;:::i;20602: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;:::-;20709:13:::1;::::0;-1:-1:-1;;;;;20701:21:0;;::::1;20709:13:::0;::::1;20701:21;;20693:91;;;;-1:-1:-1::0;;;20693:91:0::1;;;;;;;:::i;:::-;20795:41;20824:4;20830:5;20795:28;:41::i;:::-;20602:242:::0;;:::o;12282:96::-;12361:9;;12282:96;:::o;5984:71::-;;;;:::o;6335:93::-;;;-1:-1:-1;;;;;6335:93:0;;:::o;12044: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;;;;;12135:23:0;;;::::1;;::::0;;;:10:::1;:23;::::0;;;;:31;;-1:-1:-1;;12135:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12044:130::o;10649: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;:::-;10721:13:::1;:22:::0;;;10768:12:::1;::::0;10795:3:::1;::::0;10768:26:::1;::::0;10737:6;;10768:26:::1;:::i;:::-;:30;;;;:::i;:::-;10754:11;:44:::0;-1:-1:-1;10649:164:0:o;9859:176::-;9939:4;9959:40;9969:12;:10;:12::i;:::-;9982:9;9992:6;9959:9;:40::i;19452:249::-;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;:::-;19530:1:::1;19518:9;:13:::0;;;19542:10:::1;:13:::0;;;19566:9:::1;:12:::0;;;19589:10:::1;:13:::0;;;19613:12:::1;:15:::0;;;19639:13:::1;:17:::0;;;19667:24:::1;::::0;:17:::1;:24::i;19018: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;;;;;19091:27:0::1;19121:5;19091:27:::0;;;:17:::1;:27;::::0;;;;:35;;-1:-1:-1;;19091:35:0::1;::::0;;19018:116::o;6249:58::-;;;;;;;;;;;;;;;:::o;22006:89::-;22076:11;;22006:89;:::o;20229: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;:::-;20301:16:::1;:38:::0;;-1:-1:-1;;;;;;20301:38:0::1;-1:-1:-1::0;;;;;20301:38:0;;;::::1;::::0;;;::::1;::::0;;20229:118::o;16786:123::-;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;;;;;16858:29:0::1;;::::0;;;:17:::1;:29;::::0;;;;:36;;-1:-1:-1;;16858:36:0::1;16890:4;16858:36;::::0;;16786:123::o;12925:118::-;-1:-1:-1;;;;;13009:26:0;12982:4;13009:26;;;:17;:26;;;;;;;;;12925:118::o;22101: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;:::-;22172:12:::1;:21:::0;;;22227:12:::1;::::0;22253:4:::1;::::0;22227:25:::1;::::0;22187:6;;22227:25:::1;:::i;:::-;:30;;;;:::i;:::-;22204:20;:53:::0;-1:-1:-1;22101:174:0:o;19958: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;:::-;20029:16:::1;:31:::0;19958:112::o;10046:148::-;-1:-1:-1;;;;;10159:18:0;;;10129:7;10159:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10046:148::o;9288:99::-;9369:9;;9288:99;:::o;21903:97::-;21977:15;;21903:97;:::o;20472:124::-;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;:::-;20550:16:::1;:38:::0;;-1:-1:-1;;;;;;20550:38:0::1;-1:-1:-1::0;;;;;20550:38:0;;;::::1;::::0;;;::::1;::::0;;20472:124::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;19707:243::-;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;:::-;19774:1:::1;19762:9;:13:::0;19798:2:::1;19786:9;:14:::0;19826:1:::1;19811:12;:16:::0;;;19853:1:::1;19840:10;:14:::0;19878:2:::1;19865:10;:15:::0;-1:-1:-1;19891:13:0::1;:17:::0;19919:23:::1;::::0;:17:::1;:23::i;6435:93::-:0;;;-1:-1:-1;;;;;6435:93:0;;:::o;91:98::-;171:10;91:98;:::o;18530:322::-;-1:-1:-1;;;;;18622:19:0;;18614:68;;;;-1:-1:-1;;;18614:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18695:21:0;;18687:68;;;;-1:-1:-1;;;18687:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18762:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;18808:32;;;;;18792:6;;18808:32;:::i;:::-;;;;;;;;18530:322;;;:::o;13051:3387::-;-1:-1:-1;;;;;13139:18:0;;13131:68;;;;-1:-1:-1;;;13131:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13212:16:0;;13204:64;;;;-1:-1:-1;;;13204:64:0;;;;;;;:::i;:::-;13296:1;13287:6;:10;13279:72;;;;-1:-1:-1;;;13279:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13386:15:0;;13362:21;13386:15;;;:9;:15;;;;;;13420:23;;;;13412:74;;;;-1:-1:-1;;;13412:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13500:21:0;;;;;;:17;:21;;;;;;;;:28;;;:62;;-1:-1:-1;;;;;;13532:23:0;;;;;;:17;:23;;;;;;;;:30;13500:62;13497:163;;;13592:11;;13582:6;:21;;13574:74;;;;-1:-1:-1;;;13574:74:0;;;;;;;:::i;:::-;13670:25;13698:24;13716:4;13698:9;:24::i;:::-;13670:52;;13758:20;;13738:17;:40;;:66;;;;-1:-1:-1;13788:16:0;;;;13787:17;13738:66;:96;;;;-1:-1:-1;13821:13:0;;-1:-1:-1;;;;;13813:21:0;;;13821:13;;13813:21;;13738:96;:126;;;;-1:-1:-1;13843:21:0;;;;;;;13738:126;13735:352;;;13908:20;;13887:17;:41;13884:188;;-1:-1:-1;13973:20:0;;14016:36;13973:20;14016:17;:36::i;:::-;-1:-1:-1;;;;;14169:23:0;;14103:13;14169:23;;;:17;:23;;;;;;14119:4;;14169:23;;;:48;;-1:-1:-1;;;;;;14196:21:0;;;;;;:17;:21;;;;;;;;14169:48;14166:159;;;-1:-1:-1;14254:1:0;14238:13;:17;;;14166:159;14339:17;14375:23;14448:17;14526:8;14523:1376;;;-1:-1:-1;;;;;14621:16:0;;;;;;:10;:16;;;;;;;;:24;;:16;:24;;:46;;-1:-1:-1;;;;;;14647:14:0;;;;;;:10;:14;;;;;;;;:20;;:14;:20;14621:46;14618:343;;;14707:1;14691:13;:17;14755:3;14743:11;:6;14752:2;14743:11;:::i;:::-;:15;;;;:::i;:::-;14731:27;-1:-1:-1;14805:3:0;14793:11;:6;14802:2;14793:11;:::i;:::-;:15;;;;:::i;:::-;14781:27;-1:-1:-1;14860:3:0;14849:10;:6;14858:1;14849:10;:::i;:::-;:14;;;;:::i;:::-;14831:32;-1:-1:-1;14831:32:0;14902:21;14914:9;14902;:21;:::i;:::-;:39;;;;:::i;:::-;14886:13;:55;14618:343;-1:-1:-1;;;;;15015:29:0;;;;;;:25;:29;;;;;;;;:55;;;;-1:-1:-1;15062:7:0;;-1:-1:-1;;;;;15048:22:0;;;15062:7;;15048:22;;15015:55;15011:853;;;15115:1;15099:13;:17;15164:10;;15175:3;;15155:19;;:6;:19;:::i;:::-;:23;;;;:::i;:::-;15143:35;;15237:3;15226:10;;15217:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;15205:35;;15308:3;15294:13;;15285:6;:22;;;;:::i;:::-;:26;;;;:::i;:::-;15267:44;-1:-1:-1;15267:44:0;15354:21;15366:9;15354;:21;:::i;:::-;:39;;;;:::i;:::-;15338:13;:55;15011:853;;;-1:-1:-1;;;;;15467:31:0;;;;;;:25;:31;;;;;;;;:59;;;;-1:-1:-1;15518:7:0;;-1:-1:-1;;;;;15502:24:0;;;15518:7;;15502:24;;15467:59;15464:400;;;15585:1;15569:13;:17;15630:9;;15640:3;;15621:18;;:6;:18;:::i;:::-;:22;;;;:::i;:::-;15609:34;;15697:3;15687:9;;15678:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;15666:34;;15763:3;15750:12;;15741:6;:21;;;;:::i;:::-;:25;;;;:::i;:::-;15723:43;-1:-1:-1;15723:43:0;15805:21;15817:9;15805;:21;:::i;:::-;:39;;;;:::i;:::-;15789:13;:55;15464:400;15933:22;15949:6;15933:13;:22;:::i;:::-;-1:-1:-1;;;;;15915:15:0;;;;;;:9;:15;;;;;:40;16026:9;16008:15;15987:18;15996:9;15987:6;:18;:::i;:::-;:36;;;;:::i;:::-;:48;;;;:::i;:::-;-1:-1:-1;;;;;15970:13:0;;;;;;:9;:13;;;;;:65;;:13;;;:65;;;;;:::i;:::-;;;;-1:-1:-1;;16053:14:0;;16050:298;;16103:13;;16093:4;16075:24;;;;:9;:24;;;;;:41;;:24;;;:41;;16103:13;;16075:41;:::i;:::-;;;;;;;;16174:9;16161;;:22;;;;;;;:::i;:::-;;;;;;;;16217:15;16198;;:34;;;;;;;:::i;:::-;;;;;;;;16260:9;16247;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;16310:13:0;;16280:44;;16303:4;;-1:-1:-1;;;;;16280:44:0;;;;;;;;:::i;:::-;;;;;;;;16050:298;16382:2;-1:-1:-1;;;;;16367:39:0;16376:4;-1:-1:-1;;;;;16367:39:0;;16392:13;;16385:6;:20;;;;:::i;:::-;16367:39;;;;;;:::i;:::-;;;;;;;;13051:3387;;;;;;;;;:::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;20850:188::-;-1:-1:-1;;;;;20933:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;20933:39:0;;;;;;;;;;20990:40;;20933:39;;:31;20990:40;;;20850:188;;:::o;16444:335::-;8192:16;:23;;-1:-1:-1;;8192:23:0;8211:4;8192:23;;;16539:9:::1;::::0;16524:25:::1;::::0;:14:::1;:25::i;:::-;16560:30;16580:9;;16560:19;:30::i;:::-;16601:32;16617:15;;16601;:32::i;:::-;16649:44;16679:13;16649:44;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;16716:1:0::1;16704:9;:13:::0;;;16728:15:::1;:19:::0;;;16758:9:::1;:13:::0;8226:16;:24;;-1:-1:-1;;8226:24:0;;;16444:335::o;17445:388::-;17507:12;17522:19;17540:1;17522:15;:19;:::i;:::-;17507:34;-1:-1:-1;17546:17:0;17566:22;17507:34;17566:15;:22;:::i;:::-;17546:42;-1:-1:-1;17618:21:0;17646:22;17663:4;17646:16;:22::i;:::-;17673:18;17694:40;17719:14;17694:21;:40;:::i;:::-;17673:61;;17742:35;17755:9;17766:10;17742:12;:35::i;:::-;17787:41;17802:4;17807:10;17818:9;17787:41;;;;;;;;:::i;:::-;;;;;;;;17445:388;;;;;:::o;16915:399::-;17002:16;;;17016:1;17002:16;;;;;;;;16978:21;;17002:16;;;;;;;;;;-1:-1:-1;17002:16:0;16978:40;;17041:4;17023;17028:1;17023:7;;;;;;-1:-1:-1;;;17023:7:0;;;;;;;;;-1:-1:-1;;;;;17023:23:0;;;:7;;;;;;;;;;:23;;;;17061:7;;:14;;;-1:-1:-1;;;17061:14:0;;;;:7;;;;;:12;;:14;;;;;17023:7;;17061:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17051:4;17056:1;17051:7;;;;;;-1:-1:-1;;;17051:7:0;;;;;;;;;-1:-1:-1;;;;;17051:24:0;;;:7;;;;;;;;;:24;17112:7;;17080:49;;17097:4;;17112:7;17122:6;17080:8;:49::i;:::-;17140:7;;17262:16;;17140:164;;-1:-1:-1;;;17140:164:0;;-1:-1:-1;;;;;17140:7:0;;;;:58;;:164;;17204:6;;17140:7;;17252:4;;17262:16;;;17284:15;;17140:164;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16915:399;;:::o;17322:117::-;17404:16;;17379:50;;17397:4;;-1:-1:-1;;;;;17404:16:0;17422:6;17379:9;:50::i;17841:397::-;17924:16;;;17938:1;17924:16;;;;;;;;17900:21;;17924:16;;;;;;;;;;-1:-1:-1;17924:16:0;17900:40;;17963:4;17945;17950:1;17945:7;;;;;;-1:-1:-1;;;17945:7:0;;;;;;;;;-1:-1:-1;;;;;17945:23:0;;;:7;;;;;;;;;;:23;;;;17983:7;;:14;;;-1:-1:-1;;;17983:14:0;;;;:7;;;;;:12;;:14;;;;;17945:7;;17983:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17973:4;17978:1;17973:7;;;;;;-1:-1:-1;;;17973:7:0;;;;;;;;;-1:-1:-1;;;;;17973:24:0;;;:7;;;;;;;;;:24;18034:7;;18002:54;;18019:4;;18034:7;18044:11;18002:8;:54::i;:::-;18067:7;;:166;;-1:-1:-1;;;18067:166:0;;-1:-1:-1;;;;;18067:7:0;;;;:58;;:166;;18131:11;;18067:7;;18184:4;;18202;;18213:15;;18067:166;;;:::i;18250:272::-;18355:7;;18323:54;;18340:4;;-1:-1:-1;;;;;18355:7:0;18365:11;18323:8;:54::i;:::-;18384:7;;:133;;-1:-1:-1;;;18384:133:0;;-1:-1:-1;;;;;18384:7:0;;;;:23;;18414:9;;18384:133;;18438:4;;18449:11;;18384:7;;;;18480:11;;18497:15;;18384:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18250:272;;:::o;14:162:1:-;81:20;;137:13;;130:21;120:32;;110:2;;166:1;163;156:12;181:259;;293:2;281:9;272:7;268:23;264:32;261:2;;;314:6;306;299:22;261:2;358:9;345:23;377:33;404:5;377:33;:::i;:::-;429:5;251:189;-1:-1:-1;;;251:189:1:o;445:263::-;;568:2;556:9;547:7;543:23;539:32;536:2;;;589:6;581;574:22;536:2;626:9;620:16;645:33;672:5;645:33;:::i;713:337::-;;;847:2;835:9;826:7;822:23;818:32;815:2;;;868:6;860;853:22;815:2;912:9;899:23;931:33;958:5;931:33;:::i;:::-;983:5;-1:-1:-1;1007:37:1;1040:2;1025:18;;1007:37;:::i;:::-;997:47;;805:245;;;;;:::o;1055:402::-;;;1184:2;1172:9;1163:7;1159:23;1155:32;1152:2;;;1205:6;1197;1190:22;1152:2;1249:9;1236:23;1268:33;1295:5;1268:33;:::i;:::-;1320:5;-1:-1:-1;1377:2:1;1362:18;;1349:32;1390:35;1349:32;1390:35;:::i;:::-;1444:7;1434:17;;;1142:315;;;;;:::o;1462:470::-;;;;1608:2;1596:9;1587:7;1583:23;1579:32;1576:2;;;1629:6;1621;1614:22;1576:2;1673:9;1660:23;1692:33;1719:5;1692:33;:::i;:::-;1744:5;-1:-1:-1;1801:2:1;1786:18;;1773:32;1814:35;1773:32;1814:35;:::i;:::-;1566:366;;1868:7;;-1:-1:-1;;;1922:2:1;1907:18;;;;1894:32;;1566:366::o;1937:329::-;;;2063:2;2051:9;2042:7;2038:23;2034:32;2031:2;;;2084:6;2076;2069:22;2271:327;;;2400:2;2388:9;2379:7;2375:23;2371:32;2368:2;;;2421:6;2413;2406:22;2368:2;2465:9;2452:23;2484:33;2511:5;2484:33;:::i;:::-;2536:5;2588:2;2573:18;;;;2560:32;;-1:-1:-1;;;2358:240:1:o;2603:192::-;;2712:2;2700:9;2691:7;2687:23;2683:32;2680:2;;;2733:6;2725;2718:22;2680:2;2761:28;2779:9;2761:28;:::i;2800:190::-;;2912:2;2900:9;2891:7;2887:23;2883:32;2880:2;;;2933:6;2925;2918:22;2880:2;-1:-1:-1;2961:23:1;;2870:120;-1:-1:-1;2870:120:1:o;2995:316::-;;;;3152:2;3140:9;3131:7;3127:23;3123:32;3120:2;;;3173:6;3165;3158:22;3120:2;3207:9;3201:16;3191:26;;3257:2;3246:9;3242:18;3236:25;3226:35;;3301:2;3290:9;3286:18;3280:25;3270:35;;3110:201;;;;;:::o;3316:469::-;;3413:5;3407:12;3440:6;3435:3;3428:19;3466:4;3495:2;3490:3;3486:12;3479:19;;3532:2;3525:5;3521:14;3553:3;3565:195;3579:6;3576:1;3573:13;3565:195;;;3644:13;;-1:-1:-1;;;;;3640:39:1;3628:52;;3700:12;;;;3735:15;;;;3676:1;3594:9;3565:195;;;-1:-1:-1;3776:3:1;;3383:402;-1:-1:-1;;;;;3383:402:1:o;3790:203::-;-1:-1:-1;;;;;3954:32:1;;;;3936:51;;3924:2;3909:18;;3891:102::o;4222:607::-;-1:-1:-1;;;;;4581:15:1;;;4563:34;;4628:2;4613:18;;4606:34;;;;4671:2;4656:18;;4649:34;;;;4714:2;4699:18;;4692:34;;;;4763:15;;;4757:3;4742:19;;4735:44;4543:3;4795:19;;4788:35;;;;4512:3;4497:19;;4479:350::o;4834:187::-;4999:14;;4992:22;4974:41;;4962:2;4947:18;;4929:92::o;5026:603::-;;5167:2;5196;5185:9;5178:21;5228:6;5222:13;5271:6;5266:2;5255:9;5251:18;5244:34;5296:4;5309:140;5323:6;5320:1;5317:13;5309:140;;;5418:14;;;5414:23;;5408:30;5384:17;;;5403:2;5380:26;5373:66;5338:10;;5309:140;;;5467:6;5464:1;5461:13;5458:2;;;5537:4;5532:2;5523:6;5512:9;5508:22;5504:31;5497:45;5458:2;-1:-1:-1;5613:2:1;5592:15;-1:-1:-1;;5588:29:1;5573:45;;;;5620:2;5569:54;;5147:482;-1:-1:-1;;;5147:482:1:o;5634:414::-;5836:2;5818:21;;;5875:2;5855:18;;;5848:30;5914:34;5909:2;5894:18;;5887:62;-1:-1:-1;;;5980:2:1;5965:18;;5958:48;6038:3;6023:19;;5808:240::o;6053:401::-;6255:2;6237:21;;;6294:2;6274:18;;;6267:30;6333:34;6328:2;6313:18;;6306:62;-1:-1:-1;;;6399:2:1;6384:18;;6377:35;6444:3;6429:19;;6227:227::o;6459:400::-;6661:2;6643:21;;;6700:2;6680:18;;;6673:30;6739:34;6734:2;6719:18;;6712:62;-1:-1:-1;;;6805:2:1;6790:18;;6783:34;6849:3;6834:19;;6633:226::o;6864:402::-;7066:2;7048:21;;;7105:2;7085:18;;;7078:30;7144:34;7139:2;7124:18;;7117:62;-1:-1:-1;;;7210:2:1;7195:18;;7188:36;7256:3;7241:19;;7038:228::o;7271:421::-;7473:2;7455:21;;;7512:2;7492:18;;;7485:30;7551:34;7546:2;7531:18;;7524:62;7622:27;7617:2;7602:18;;7595:55;7682:3;7667:19;;7445:247::o;7697:404::-;7899:2;7881:21;;;7938:2;7918:18;;;7911:30;7977:34;7972:2;7957:18;;7950:62;-1:-1:-1;;;8043:2:1;8028:18;;8021:38;8091:3;8076:19;;7871:230::o;8106:404::-;8308:2;8290:21;;;8347:2;8327:18;;;8320:30;8386:34;8381:2;8366:18;;8359:62;-1:-1:-1;;;8452:2:1;8437:18;;8430:38;8500:3;8485:19;;8280:230::o;8515:356::-;8717:2;8699:21;;;8736:18;;;8729:30;8795:34;8790:2;8775:18;;8768:62;8862:2;8847:18;;8689:182::o;8876:411::-;9078:2;9060:21;;;9117:2;9097:18;;;9090:30;9156:34;9151:2;9136:18;;9129:62;-1:-1:-1;;;9222:2:1;9207:18;;9200:45;9277:3;9262:19;;9050:237::o;9292:402::-;9494:2;9476:21;;;9533:2;9513:18;;;9506:30;9572:34;9567:2;9552:18;;9545:62;-1:-1:-1;;;9638:2:1;9623:18;;9616:36;9684:3;9669:19;;9466:228::o;9699:399::-;9901:2;9883:21;;;9940:2;9920:18;;;9913:30;9979:34;9974:2;9959:18;;9952:62;-1:-1:-1;;;10045:2:1;10030:18;;10023:33;10088:3;10073:19;;9873:225::o;10103:398::-;10305:2;10287:21;;;10344:2;10324:18;;;10317:30;10383:34;10378:2;10363:18;;10356:62;-1:-1:-1;;;10449:2:1;10434:18;;10427:32;10491:3;10476:19;;10277:224::o;10506:177::-;10652:25;;;10640:2;10625:18;;10607:76::o;10688:596::-;;10995:6;10984:9;10977:25;11038:6;11033:2;11022:9;11018:18;11011:34;11081:3;11076:2;11065:9;11061:18;11054:31;11102:63;11160:3;11149:9;11145:19;11137:6;11102:63;:::i;:::-;-1:-1:-1;;;;;11201:32:1;;;;11196:2;11181:18;;11174:60;-1:-1:-1;11265:3:1;11250:19;11243:35;11094:71;10967:317;-1:-1:-1;;;10967:317:1:o;11882:319::-;12084:25;;;12140:2;12125:18;;12118:34;;;;12183:2;12168:18;;12161:34;12072:2;12057:18;;12039:162::o;12206:128::-;;12277:1;12273:6;12270:1;12267:13;12264:2;;;12283:18;;:::i;:::-;-1:-1:-1;12319:9:1;;12254:80::o;12339:217::-;;12405:1;12395:2;;-1:-1:-1;;;12430:31:1;;12484:4;12481:1;12474:15;12512:4;12437:1;12502:15;12395:2;-1:-1:-1;12541:9:1;;12385:171::o;12561:168::-;;12667:1;12663;12659:6;12655:14;12652:1;12649:21;12644:1;12637:9;12630:17;12626:45;12623:2;;;12674:18;;:::i;:::-;-1:-1:-1;12714:9:1;;12613:116::o;12734:125::-;;12802:1;12799;12796:8;12793:2;;;12807:18;;:::i;:::-;-1:-1:-1;12844:9:1;;12783:76::o;12864:380::-;12949:1;12939:12;;12996:1;12986:12;;;13007:2;;13061:4;13053:6;13049:17;13039:27;;13007:2;13114;13106:6;13103:14;13083:18;13080:38;13077:2;;;13160:10;13155:3;13151:20;13148:1;13141:31;13195:4;13192:1;13185:15;13223:4;13220:1;13213:15;13077:2;;12919:325;;;:::o;13249:127::-;13310:10;13305:3;13301:20;13298:1;13291:31;13341:4;13338:1;13331:15;13365:4;13362:1;13355:15;13381:133;-1:-1:-1;;;;;13458:31:1;;13448:42;;13438:2;;13504:1;13501;13494:12

Swarm Source

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