ETH Price: $3,329.42 (-3.99%)

Token

Anomaly (ANOMALY)
 

Overview

Max Total Supply

1,000,000 ANOMALY

Holders

103

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,000 ANOMALY

Value
$0.00
0x4064db66d39cca7b573b44036d477068e9cddf46
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:
Anomaly

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-18
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
contract ERC20Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "ERC20Ownable: 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), "ERC20Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view 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);
}
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 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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 swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    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 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;
}
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 Anomaly is Context, IERC20, ERC20Ownable {
    using SafeMath for uint256;
    using Address for address;
    string private constant tokenName = "Anomaly";
    string private constant tokenSymbol = "ANOMALY";
    uint8 private constant tokenDecimal = 9;
    uint256 private constant tokenSupply = 1e6 * 10**tokenDecimal;
    mapping(address => mapping(address => uint256)) private tokenAllowances;
    mapping(address => uint256) private tokenBalance;
    mapping(address => bool) private isMaxWalletExcluded;
    mapping(address => bool) private isLiveExcluded;
    mapping(address => bool) public isBot;
    address payable liquidityAddress;
    address public uniV2Pair;
    IUniswapV2Router02 public uniV2Router;
    uint256 private maxWallet;
    uint256 public activeTradingBlock;
    bool public maxWalletOn = false;
    bool public live = false;
    constructor() payable {
        tokenBalance[address(this)] = tokenSupply;
        maxWallet = tokenSupply.mul(2).div(100);
        liquidityAddress = payable(owner());
        isLiveExcluded[address(this)] = true;
        isLiveExcluded[owner()] = true;
        isLiveExcluded[liquidityAddress] = true;
        isMaxWalletExcluded[address(this)] = true;
        isMaxWalletExcluded[owner()] = true;
        isMaxWalletExcluded[liquidityAddress] = true;
        emit Transfer(address(0), address(this), tokenSupply);
    }
    receive() external payable {}
    function name() external pure override returns (string memory) {
        return tokenName;
    }
    function symbol() external pure override returns (string memory) {
        return tokenSymbol;
    }
    function decimals() external pure override returns (uint8) {
        return tokenDecimal;
    }
    function totalSupply() external pure override returns (uint256) {
        return tokenSupply;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return tokenBalance[account];
    }
    function allowance(address owner, address spender) external view override returns (uint256) {
        return tokenAllowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        require(_msgSender() != address(0), "ERC20: Can not approve from zero address");
        require(spender != address(0), "ERC20: Can not approve to zero address");
        tokenAllowances[_msgSender()][spender] = amount;
        emit Approval(_msgSender(), spender, amount);
        return true;
    }
    function internalApprove(address owner,address spender,uint256 amount) internal {
        require(owner != address(0), "ERC20: Can not approve from zero address");
        require(spender != address(0), "ERC20: Can not approve to zero address");
        tokenAllowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        internalTransfer(_msgSender(), recipient, amount);
        return true;
    }
    function transferFrom(address sender,address recipient,uint256 amount) external override returns (bool) {
        internalTransfer(sender, recipient, amount);
        internalApprove(sender,_msgSender(),tokenAllowances[sender][_msgSender()].sub(amount, "ERC20: Can not transfer. Amount exceeds allowance"));
        return true;
    }
    function GoLive() external onlyOwner returns (bool){
        require(!live, "ERC20: Trades already Live!");
        activeTradingBlock = block.number;
        IUniswapV2Router02 _uniV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniV2Router = _uniV2Router;
        isMaxWalletExcluded[address(uniV2Router)] = true;
        internalApprove(address(this), address(uniV2Router), tokenSupply);
        uniV2Pair = IUniswapV2Factory(_uniV2Router.factory()).createPair(address(this), _uniV2Router.WETH());
        isMaxWalletExcluded[address(uniV2Pair)] = true;
        require(address(this).balance > 0, "ERC20: Must have ETH on contract to Go Live!");
        addLiquidity(balanceOf(address(this)), address(this).balance);
        maxWalletOn = true;
        live = true;
        return true;
    }
    function internalTransfer(address from, address to, uint256 amount) internal {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "ERC20: Transfer amount must be greater than zero");
        require(!isBot[from], "ERC20: Can not transfer from BOT");
        if(!live){
            require(isLiveExcluded[from] || isLiveExcluded[to], "ERC20: Trading Is Not Live!");
        }
        if (maxWalletOn == true && !isMaxWalletExcluded[to]) {
            require(balanceOf(to).add(amount) <= maxWallet, "ERC20: Max amount of tokens for wallet reached");
        }
        tokenTransfer(from, to, amount);
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        internalApprove(address(this), address(uniV2Router), tokenAmount);
        uniV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityAddress,
            block.timestamp
        );
    }
    function tokenTransfer(address sender,address recipient,uint256 amount) internal {
        tokenBalance[sender] -= amount;
        tokenBalance[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(owner()).call{value: address(this).balance}("");
    }
    function addBot(address account) external onlyOwner {
        require(!isBot[account], "ERC20: Account already added");
        isBot[account] = true;
    }
	function removeBot(address account) external onlyOwner {
        require(isBot[account], "ERC20: Account is not bot");
        isBot[account] = false;
    }
    function setMaxWalletAmount(uint256 percent, uint256 divider) external onlyOwner {
        maxWallet = tokenSupply.mul(percent).div(divider);
        require(maxWallet <=tokenSupply.mul(3).div(100), "ERC20: Can not set max wallet more than 3%");
    }
    function setStatusMaxWallet(bool trueORfalse) external onlyOwner {
       maxWalletOn = trueORfalse;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"GoLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activeTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divider","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"uniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040819052600b805461ffff19169055600080546001600160a01b031916339081178255918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200005d6009600a62000302565b6200006c90620f424062000313565b30600090815260026020819052604090912091909155620000d490606490620000c0906200009d6009600a62000302565b620000ac90620f424062000313565b620001ca60201b62000dce1790919060201c565b620001e160201b62000de11790919060201c565b600990815560008054600680546001600160a01b0319166001600160a01b0392831617815530808452600460209081526040808620805460ff19908116600190811790925587548716885282882080548216831790558554871688528288208054821683179055848852600390935281872080548416821790558654861687528187208054841682179055935490941685529284208054909316909117909155917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620001a490600a62000302565b620001b390620f424062000313565b60405190815260200160405180910390a362000358565b6000620001d8828462000313565b90505b92915050565b6000620001d8828462000335565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002465781600019048211156200022a576200022a620001ef565b808516156200023857918102915b93841c93908002906200020a565b509250929050565b6000826200025f57506001620001db565b816200026e57506000620001db565b81600181146200028757600281146200029257620002b2565b6001915050620001db565b60ff841115620002a657620002a6620001ef565b50506001821b620001db565b5060208310610133831016604e8410600b8410161715620002d7575081810a620001db565b620002e3838362000205565b8060001904821115620002fa57620002fa620001ef565b029392505050565b6000620001d860ff8416836200024e565b6000816000190483118215151615620003305762000330620001ef565b500290565b6000826200035357634e487b7160e01b600052601260045260246000fd5b500490565b6117b180620003686000396000f3fe60806040526004361061014f5760003560e01c80638c714f80116100b6578063dd62ed3e1161006f578063dd62ed3e146103fd578063ea090d9714610443578063f2fde38b14610459578063f35900d014610479578063f5648a4f14610499578063ffecf516146104ae57600080fd5b80638c714f80146103305780638da5cb5b14610350578063957aa58c1461036e578063958c2e521461038d57806395d89b41146103ad578063a9059cbb146103dd57600080fd5b80633bbac579116101085780633bbac579146102415780635fecd9261461027157806370a0823114610293578063715018a6146102c9578063745d032f146102de5780638bcea939146102f857600080fd5b806306fdde031461015b578063095ea7b31461019d57806318160ddd146101cd57806323b872dd146101f0578063313ce567146102105780633b4e935a1461022c57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b50604080518082019091526007815266416e6f6d616c7960c81b60208201525b604051610194919061133f565b60405180910390f35b3480156101a957600080fd5b506101bd6101b83660046113ac565b6104ce565b6040519015158152602001610194565b3480156101d957600080fd5b506101e2610581565b604051908152602001610194565b3480156101fc57600080fd5b506101bd61020b3660046113d8565b6105a1565b34801561021c57600080fd5b5060405160098152602001610194565b34801561023857600080fd5b506101bd61060a565b34801561024d57600080fd5b506101bd61025c366004611419565b60056020526000908152604090205460ff1681565b34801561027d57600080fd5b5061029161028c366004611419565b61094f565b005b34801561029f57600080fd5b506101e26102ae366004611419565b6001600160a01b031660009081526002602052604090205490565b3480156102d557600080fd5b50610291610a02565b3480156102ea57600080fd5b50600b546101bd9060ff1681565b34801561030457600080fd5b50600754610318906001600160a01b031681565b6040516001600160a01b039091168152602001610194565b34801561033c57600080fd5b5061029161034b366004611436565b610a76565b34801561035c57600080fd5b506000546001600160a01b0316610318565b34801561037a57600080fd5b50600b546101bd90610100900460ff1681565b34801561039957600080fd5b50600854610318906001600160a01b031681565b3480156103b957600080fd5b50604080518082019091526007815266414e4f4d414c5960c81b6020820152610187565b3480156103e957600080fd5b506101bd6103f83660046113ac565b610ab3565b34801561040957600080fd5b506101e2610418366004611458565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561044f57600080fd5b506101e2600a5481565b34801561046557600080fd5b50610291610474366004611419565b610ac9565b34801561048557600080fd5b50610291610494366004611491565b610bb8565b3480156104a557600080fd5b50610291610c95565b3480156104ba57600080fd5b506102916104c9366004611419565b610d17565b6000336104f65760405162461bcd60e51b81526004016104ed906114b3565b60405180910390fd5b6001600160a01b03831661051c5760405162461bcd60e51b81526004016104ed906114fb565b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b600061058f6009600a61163b565b61059c90620f424061164a565b905090565b60006105ae848484610ded565b61060084336105fb8560405180606001604052806031815260200161174b603191396001600160a01b038a16600090815260016020908152604080832033845290915290205491906110f5565b611121565b5060019392505050565b600080546001600160a01b031633146106355760405162461bcd60e51b81526004016104ed90611669565b600b54610100900460ff161561068d5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164657320616c7265616479204c69766521000000000060448201526064016104ed565b43600a908155600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600081905260036020527ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff191660011790559061071490309083906107079060099061163b565b6105fb90620f424061164a565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078591906116ae565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156107cd57600080fd5b505afa1580156107e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080591906116ae565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561084d57600080fd5b505af1158015610861573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088591906116ae565b600780546001600160a01b0319166001600160a01b039290921691821790556000908152600360205260409020805460ff191660011790554761091f5760405162461bcd60e51b815260206004820152602c60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526b20746f20476f204c6976652160a01b60648201526084016104ed565b3060009081526002602052604090205461093990476111cf565b5050600b805461ffff1916610101179055600190565b6000546001600160a01b031633146109795760405162461bcd60e51b81526004016104ed90611669565b6001600160a01b03811660009081526005602052604090205460ff166109e15760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016104ed565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314610a2c5760405162461bcd60e51b81526004016104ed90611669565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610aa05760405162461bcd60e51b81526004016104ed90611669565b600b805460ff1916911515919091179055565b6000610ac0338484610ded565b50600192915050565b6000546001600160a01b03163314610af35760405162461bcd60e51b81526004016104ed90611669565b6001600160a01b038116610b5d5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016104ed565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610be25760405162461bcd60e51b81526004016104ed90611669565b610c0f81610c0984610bf66009600a61163b565b610c0390620f424061164a565b90610dce565b90610de1565b600981905550610c2d6064610c0960036009600a610bf6919061163b565b6009541115610c915760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20332560b01b60648201526084016104ed565b5050565b6000546001600160a01b03163314610cbf5760405162461bcd60e51b81526004016104ed90611669565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114610d0c576040519150601f19603f3d011682016040523d82523d6000602084013e610d11565b606091505b50505050565b6000546001600160a01b03163314610d415760405162461bcd60e51b81526004016104ed90611669565b6001600160a01b03811660009081526005602052604090205460ff1615610daa5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016104ed565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000610dda828461164a565b9392505050565b6000610dda82846116cb565b6001600160a01b038316610e515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104ed565b6001600160a01b038216610eb35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104ed565b60008111610f1c5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016104ed565b6001600160a01b03831660009081526005602052604090205460ff1615610f855760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016104ed565b600b54610100900460ff1661101f576001600160a01b03831660009081526004602052604090205460ff1680610fd357506001600160a01b03821660009081526004602052604090205460ff165b61101f5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164696e67204973204e6f74204c69766521000000000060448201526064016104ed565b600b5460ff161515600114801561104f57506001600160a01b03821660009081526003602052604090205460ff16155b156110e5576009546110808261107a856001600160a01b031660009081526002602052604090205490565b90611292565b11156110e55760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016104ed565b6110f083838361129e565b505050565b600081848411156111195760405162461bcd60e51b81526004016104ed919061133f565b505050900390565b6001600160a01b0383166111475760405162461bcd60e51b81526004016104ed906114b3565b6001600160a01b03821661116d5760405162461bcd60e51b81526004016104ed906114fb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6008546111e79030906001600160a01b031684611121565b60085460065460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061128b91906116ed565b5050505050565b6000610dda828461171b565b6001600160a01b038316600090815260026020526040812080548392906112c6908490611733565b90915550506001600160a01b038216600090815260026020526040812080548392906112f390849061171b565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111c291815260200190565b600060208083528351808285015260005b8181101561136c57858101830151858201604001528201611350565b8181111561137e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146113a957600080fd5b50565b600080604083850312156113bf57600080fd5b82356113ca81611394565b946020939093013593505050565b6000806000606084860312156113ed57600080fd5b83356113f881611394565b9250602084013561140881611394565b929592945050506040919091013590565b60006020828403121561142b57600080fd5b8135610dda81611394565b60006020828403121561144857600080fd5b81358015158114610dda57600080fd5b6000806040838503121561146b57600080fd5b823561147681611394565b9150602083013561148681611394565b809150509250929050565b600080604083850312156114a457600080fd5b50508035926020909101359150565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561159257816000190482111561157857611578611541565b8085161561158557918102915b93841c939080029061155c565b509250929050565b6000826115a95750600161057b565b816115b65750600061057b565b81600181146115cc57600281146115d6576115f2565b600191505061057b565b60ff8411156115e7576115e7611541565b50506001821b61057b565b5060208310610133831016604e8410600b8410161715611615575081810a61057b565b61161f8383611557565b806000190482111561163357611633611541565b029392505050565b6000610dda60ff84168361159a565b600081600019048311821515161561166457611664611541565b500290565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b6000602082840312156116c057600080fd5b8151610dda81611394565b6000826116e857634e487b7160e01b600052601260045260246000fd5b500490565b60008060006060848603121561170257600080fd5b8351925060208401519150604084015190509250925092565b6000821982111561172e5761172e611541565b500190565b60008282101561174557611745611541565b50039056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122020bb1169925ab3228a3ad3cad62fb845a29481dfe3a1304e14cb3035d9e1f88e64736f6c63430008090033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c80638c714f80116100b6578063dd62ed3e1161006f578063dd62ed3e146103fd578063ea090d9714610443578063f2fde38b14610459578063f35900d014610479578063f5648a4f14610499578063ffecf516146104ae57600080fd5b80638c714f80146103305780638da5cb5b14610350578063957aa58c1461036e578063958c2e521461038d57806395d89b41146103ad578063a9059cbb146103dd57600080fd5b80633bbac579116101085780633bbac579146102415780635fecd9261461027157806370a0823114610293578063715018a6146102c9578063745d032f146102de5780638bcea939146102f857600080fd5b806306fdde031461015b578063095ea7b31461019d57806318160ddd146101cd57806323b872dd146101f0578063313ce567146102105780633b4e935a1461022c57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b50604080518082019091526007815266416e6f6d616c7960c81b60208201525b604051610194919061133f565b60405180910390f35b3480156101a957600080fd5b506101bd6101b83660046113ac565b6104ce565b6040519015158152602001610194565b3480156101d957600080fd5b506101e2610581565b604051908152602001610194565b3480156101fc57600080fd5b506101bd61020b3660046113d8565b6105a1565b34801561021c57600080fd5b5060405160098152602001610194565b34801561023857600080fd5b506101bd61060a565b34801561024d57600080fd5b506101bd61025c366004611419565b60056020526000908152604090205460ff1681565b34801561027d57600080fd5b5061029161028c366004611419565b61094f565b005b34801561029f57600080fd5b506101e26102ae366004611419565b6001600160a01b031660009081526002602052604090205490565b3480156102d557600080fd5b50610291610a02565b3480156102ea57600080fd5b50600b546101bd9060ff1681565b34801561030457600080fd5b50600754610318906001600160a01b031681565b6040516001600160a01b039091168152602001610194565b34801561033c57600080fd5b5061029161034b366004611436565b610a76565b34801561035c57600080fd5b506000546001600160a01b0316610318565b34801561037a57600080fd5b50600b546101bd90610100900460ff1681565b34801561039957600080fd5b50600854610318906001600160a01b031681565b3480156103b957600080fd5b50604080518082019091526007815266414e4f4d414c5960c81b6020820152610187565b3480156103e957600080fd5b506101bd6103f83660046113ac565b610ab3565b34801561040957600080fd5b506101e2610418366004611458565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561044f57600080fd5b506101e2600a5481565b34801561046557600080fd5b50610291610474366004611419565b610ac9565b34801561048557600080fd5b50610291610494366004611491565b610bb8565b3480156104a557600080fd5b50610291610c95565b3480156104ba57600080fd5b506102916104c9366004611419565b610d17565b6000336104f65760405162461bcd60e51b81526004016104ed906114b3565b60405180910390fd5b6001600160a01b03831661051c5760405162461bcd60e51b81526004016104ed906114fb565b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b600061058f6009600a61163b565b61059c90620f424061164a565b905090565b60006105ae848484610ded565b61060084336105fb8560405180606001604052806031815260200161174b603191396001600160a01b038a16600090815260016020908152604080832033845290915290205491906110f5565b611121565b5060019392505050565b600080546001600160a01b031633146106355760405162461bcd60e51b81526004016104ed90611669565b600b54610100900460ff161561068d5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164657320616c7265616479204c69766521000000000060448201526064016104ed565b43600a908155600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600081905260036020527ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff191660011790559061071490309083906107079060099061163b565b6105fb90620f424061164a565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078591906116ae565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156107cd57600080fd5b505afa1580156107e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080591906116ae565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561084d57600080fd5b505af1158015610861573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088591906116ae565b600780546001600160a01b0319166001600160a01b039290921691821790556000908152600360205260409020805460ff191660011790554761091f5760405162461bcd60e51b815260206004820152602c60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526b20746f20476f204c6976652160a01b60648201526084016104ed565b3060009081526002602052604090205461093990476111cf565b5050600b805461ffff1916610101179055600190565b6000546001600160a01b031633146109795760405162461bcd60e51b81526004016104ed90611669565b6001600160a01b03811660009081526005602052604090205460ff166109e15760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016104ed565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314610a2c5760405162461bcd60e51b81526004016104ed90611669565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610aa05760405162461bcd60e51b81526004016104ed90611669565b600b805460ff1916911515919091179055565b6000610ac0338484610ded565b50600192915050565b6000546001600160a01b03163314610af35760405162461bcd60e51b81526004016104ed90611669565b6001600160a01b038116610b5d5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016104ed565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610be25760405162461bcd60e51b81526004016104ed90611669565b610c0f81610c0984610bf66009600a61163b565b610c0390620f424061164a565b90610dce565b90610de1565b600981905550610c2d6064610c0960036009600a610bf6919061163b565b6009541115610c915760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20332560b01b60648201526084016104ed565b5050565b6000546001600160a01b03163314610cbf5760405162461bcd60e51b81526004016104ed90611669565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114610d0c576040519150601f19603f3d011682016040523d82523d6000602084013e610d11565b606091505b50505050565b6000546001600160a01b03163314610d415760405162461bcd60e51b81526004016104ed90611669565b6001600160a01b03811660009081526005602052604090205460ff1615610daa5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016104ed565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000610dda828461164a565b9392505050565b6000610dda82846116cb565b6001600160a01b038316610e515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104ed565b6001600160a01b038216610eb35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104ed565b60008111610f1c5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016104ed565b6001600160a01b03831660009081526005602052604090205460ff1615610f855760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016104ed565b600b54610100900460ff1661101f576001600160a01b03831660009081526004602052604090205460ff1680610fd357506001600160a01b03821660009081526004602052604090205460ff165b61101f5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164696e67204973204e6f74204c69766521000000000060448201526064016104ed565b600b5460ff161515600114801561104f57506001600160a01b03821660009081526003602052604090205460ff16155b156110e5576009546110808261107a856001600160a01b031660009081526002602052604090205490565b90611292565b11156110e55760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016104ed565b6110f083838361129e565b505050565b600081848411156111195760405162461bcd60e51b81526004016104ed919061133f565b505050900390565b6001600160a01b0383166111475760405162461bcd60e51b81526004016104ed906114b3565b6001600160a01b03821661116d5760405162461bcd60e51b81526004016104ed906114fb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6008546111e79030906001600160a01b031684611121565b60085460065460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061128b91906116ed565b5050505050565b6000610dda828461171b565b6001600160a01b038316600090815260026020526040812080548392906112c6908490611733565b90915550506001600160a01b038216600090815260026020526040812080548392906112f390849061171b565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111c291815260200190565b600060208083528351808285015260005b8181101561136c57858101830151858201604001528201611350565b8181111561137e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146113a957600080fd5b50565b600080604083850312156113bf57600080fd5b82356113ca81611394565b946020939093013593505050565b6000806000606084860312156113ed57600080fd5b83356113f881611394565b9250602084013561140881611394565b929592945050506040919091013590565b60006020828403121561142b57600080fd5b8135610dda81611394565b60006020828403121561144857600080fd5b81358015158114610dda57600080fd5b6000806040838503121561146b57600080fd5b823561147681611394565b9150602083013561148681611394565b809150509250929050565b600080604083850312156114a457600080fd5b50508035926020909101359150565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561159257816000190482111561157857611578611541565b8085161561158557918102915b93841c939080029061155c565b509250929050565b6000826115a95750600161057b565b816115b65750600061057b565b81600181146115cc57600281146115d6576115f2565b600191505061057b565b60ff8411156115e7576115e7611541565b50506001821b61057b565b5060208310610133831016604e8410600b8410161715611615575081810a61057b565b61161f8383611557565b806000190482111561163357611633611541565b029392505050565b6000610dda60ff84168361159a565b600081600019048311821515161561166457611664611541565b500290565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b6000602082840312156116c057600080fd5b8151610dda81611394565b6000826116e857634e487b7160e01b600052601260045260246000fd5b500490565b60008060006060848603121561170257600080fd5b8351925060208401519150604084015190509250925092565b6000821982111561172e5761172e611541565b500190565b60008282101561174557611745611541565b50039056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122020bb1169925ab3228a3ad3cad62fb845a29481dfe3a1304e14cb3035d9e1f88e64736f6c63430008090033

Deployed Bytecode Sourcemap

15809:6523:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17270:98;;;;;;;;;;-1:-1:-1;17351:9:0;;;;;;;;;;;;-1:-1:-1;;;17351:9:0;;;;17270:98;;;;;;;:::i;:::-;;;;;;;;17975:397;;;;;;;;;;-1:-1:-1;17975:397:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;17975:397:0;1072:187:1;17585:101:0;;;;;;;;;;;;;:::i;:::-;;;1410:25:1;;;1398:2;1383:18;17585:101:0;1264:177:1;18919:338:0;;;;;;;;;;-1:-1:-1;18919:338:0;;;;;:::i;:::-;;:::i;17482:97::-;;;;;;;;;;-1:-1:-1;17482:97:0;;16075:1;2049:36:1;;2037:2;2022:18;17482:97:0;1907:184:1;19263:844:0;;;;;;;;;;;;;:::i;16397:37::-;;;;;;;;;;-1:-1:-1;16397:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21796:159;;;;;;;;;;-1:-1:-1;21796:159:0;;;;;:::i;:::-;;:::i;:::-;;17692:122;;;;;;;;;;-1:-1:-1;17692:122:0;;;;;:::i;:::-;-1:-1:-1;;;;;17785:21:0;17758:7;17785:21;;;:12;:21;;;;;;;17692:122;734:148;;;;;;;;;;;;;:::i;16627:31::-;;;;;;;;;;-1:-1:-1;16627:31:0;;;;;;;;16480:24;;;;;;;;;;-1:-1:-1;16480:24:0;;;;-1:-1:-1;;;;;16480:24:0;;;;;;-1:-1:-1;;;;;2512:32:1;;;2494:51;;2482:2;2467:18;16480:24:0;2348:203:1;22221:108:0;;;;;;;;;;-1:-1:-1;22221:108:0;;;;;:::i;:::-;;:::i;510:87::-;;;;;;;;;;-1:-1:-1;556:7:0;583:6;-1:-1:-1;;;;;583:6:0;510:87;;16665:24;;;;;;;;;;-1:-1:-1;16665:24:0;;;;;;;;;;;16511:37;;;;;;;;;;-1:-1:-1;16511:37:0;;;;-1:-1:-1;;;;;16511:37:0;;;17374:102;;;;;;;;;;-1:-1:-1;17457:11:0;;;;;;;;;;;;-1:-1:-1;;;17457:11:0;;;;17374:102;;18737:176;;;;;;;;;;-1:-1:-1;18737:176:0;;;;;:::i;:::-;;:::i;17820:149::-;;;;;;;;;;-1:-1:-1;17820:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;17930:22:0;;;17903:7;17930:22;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;17820:149;16587:33;;;;;;;;;;;;;;;;888:249;;;;;;;;;;-1:-1:-1;888:249:0;;;;;:::i;:::-;;:::i;21961:254::-;;;;;;;;;;-1:-1:-1;21961:254:0;;;;;:::i;:::-;;:::i;21471:157::-;;;;;;;;;;;;;:::i;21634:159::-;;;;;;;;;;-1:-1:-1;21634:159:0;;;;;:::i;:::-;;:::i;17975:397::-;18050:4;169:10;18067:79;;;;-1:-1:-1;;;18067:79:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;18165:21:0;;18157:72;;;;-1:-1:-1;;;18157:72:0;;;;;;;:::i;:::-;169:10;18240:29;;;;:15;:29;;;;;;;;-1:-1:-1;;;;;18240:38:0;;;;;;;;;;;;:47;;;18303:39;1410:25:1;;;18240:38:0;;169:10;18303:39;;1383:18:1;18303:39:0;;;;;;;-1:-1:-1;18360:4:0;17975:397;;;;;:::o;17585:101::-;17640:7;16128:16;16075:1;16128:2;:16;:::i;:::-;16122:22;;:3;:22;:::i;:::-;17660:18;;17585:101;:::o;18919:338::-;19017:4;19034:43;19051:6;19059:9;19070:6;19034:16;:43::i;:::-;19088:139;19104:6;169:10;19124:102;19166:6;19124:102;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19124:23:0;;;;;;:15;:23;;;;;;;;169:10;19124:37;;;;;;;;;;:41;:102::i;:::-;19088:15;:139::i;:::-;-1:-1:-1;19245:4:0;18919:338;;;;;:::o;19263:844::-;19309:4;583:6;;-1:-1:-1;;;;;583:6:0;169:10;643:23;635:73;;;;-1:-1:-1;;;635:73:0;;;;;;;:::i;:::-;19334:4:::1;::::0;::::1;::::0;::::1;;;19333:5;19325:45;;;::::0;-1:-1:-1;;;19325:45:0;;6827:2:1;19325:45:0::1;::::0;::::1;6809:21:1::0;6866:2;6846:18;;;6839:30;6905:29;6885:18;;;6878:57;6952:18;;19325:45:0::1;6625:351:1::0;19325:45:0::1;19402:12;19381:18;:33:::0;;;19532:11:::1;:26:::0;;-1:-1:-1;;;;;;19532:26:0::1;19478:42;19532:26:::0;;::::1;::::0;;;19425:31:::1;19569:41:::0;;;:19:::1;:41;::::0;;:48;;-1:-1:-1;;19569:48:0::1;19532:26:::0;19569:48:::1;::::0;;19478:42;19628:65:::1;::::0;19652:4:::1;::::0;19478:42;;16128:16:::1;::::0;16075:1:::1;::::0;16128:16:::1;:::i;:::-;16122:22;::::0;:3:::1;:22;:::i;19628:65::-;19734:12;-1:-1:-1::0;;;;;19734:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19716:52:0::1;;19777:4;19784:12;-1:-1:-1::0;;;;;19784:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19716:88;::::0;-1:-1:-1;;;;;;19716:88:0::1;::::0;;;;;;-1:-1:-1;;;;;7467:15:1;;;19716:88:0::1;::::0;::::1;7449:34:1::0;7519:15;;7499:18;;;7492:43;7384:18;;19716:88:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19704:9;:100:::0;;-1:-1:-1;;;;;;19704:100:0::1;-1:-1:-1::0;;;;;19704:100:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;19815:39:0;;;:19:::1;:39;::::0;;;;:46;;-1:-1:-1;;19815:46:0::1;-1:-1:-1::0;19815:46:0::1;::::0;;19880:21:::1;19872:82;;;::::0;-1:-1:-1;;;19872:82:0;;7748:2:1;19872:82:0::1;::::0;::::1;7730:21:1::0;7787:2;7767:18;;;7760:30;7826:34;7806:18;;;7799:62;-1:-1:-1;;;7877:18:1;;;7870:42;7929:19;;19872:82:0::1;7546:408:1::0;19872:82:0::1;19996:4;17758:7:::0;17785:21;;;:12;:21;;;;;;19965:61:::1;::::0;20004:21:::1;19965:12;:61::i;:::-;-1:-1:-1::0;;20037:11:0::1;:18:::0;;-1:-1:-1;;20066:11:0;;;;;-1:-1:-1;;19263:844:0:o;21796:159::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;169:10;643:23;635:73;;;;-1:-1:-1;;;635:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21870:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;21862:52;;;::::0;-1:-1:-1;;;21862:52:0;;8161:2:1;21862:52:0::1;::::0;::::1;8143:21:1::0;8200:2;8180:18;;;8173:30;8239:27;8219:18;;;8212:55;8284:18;;21862:52:0::1;7959:349:1::0;21862:52:0::1;-1:-1:-1::0;;;;;21925:14:0::1;21942:5;21925:14:::0;;;:5:::1;:14;::::0;;;;:22;;-1:-1:-1;;21925:22:0::1;::::0;;21796:159::o;734:148::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;169:10;643:23;635:73;;;;-1:-1:-1;;;635:73:0;;;;;;;:::i;:::-;841:1:::1;825:6:::0;;804:40:::1;::::0;-1:-1:-1;;;;;825:6:0;;::::1;::::0;804:40:::1;::::0;841:1;;804:40:::1;872:1;855:19:::0;;-1:-1:-1;;;;;;855:19:0::1;::::0;;734:148::o;22221:108::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;169:10;643:23;635:73;;;;-1:-1:-1;;;635:73:0;;;;;;;:::i;:::-;22296:11:::1;:25:::0;;-1:-1:-1;;22296:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22221:108::o;18737:176::-;18817:4;18834:49;169:10;18865:9;18876:6;18834:16;:49::i;:::-;-1:-1:-1;18901:4:0;18737:176;;;;:::o;888:249::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;169:10;643:23;635:73;;;;-1:-1:-1;;;635:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;977:22:0;::::1;969:78;;;::::0;-1:-1:-1;;;969:78:0;;8515:2:1;969:78:0::1;::::0;::::1;8497:21:1::0;8554:2;8534:18;;;8527:30;8593:34;8573:18;;;8566:62;-1:-1:-1;;;8644:18:1;;;8637:41;8695:19;;969:78:0::1;8313:407:1::0;969:78:0::1;1084:6;::::0;;1063:38:::1;::::0;-1:-1:-1;;;;;1063:38:0;;::::1;::::0;1084:6;::::1;::::0;1063:38:::1;::::0;::::1;1112:6;:17:::0;;-1:-1:-1;;;;;;1112:17:0::1;-1:-1:-1::0;;;;;1112:17:0;;;::::1;::::0;;;::::1;::::0;;888:249::o;21961:254::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;169:10;643:23;635:73;;;;-1:-1:-1;;;635:73:0;;;;;;;:::i;:::-;22065:37:::1;22094:7:::0;22065:24:::1;22081:7:::0;16128:16:::1;16075:1;16128:2;:16;:::i;:::-;16122:22;::::0;:3:::1;:22;:::i;:::-;22065:15:::0;::::1;:24::i;:::-;:28:::0;::::1;:37::i;:::-;22053:9;:49;;;;22133:27;22156:3;22133:18;22149:1;16075;16128:2;:16;;;;:::i;22133:27::-;22121:9;;:39;;22113:94;;;::::0;-1:-1:-1;;;22113:94:0;;8927:2:1;22113:94:0::1;::::0;::::1;8909:21:1::0;8966:2;8946:18;;;8939:30;9005:34;8985:18;;;8978:62;-1:-1:-1;;;9056:18:1;;;9049:40;9106:19;;22113:94:0::1;8725:406:1::0;22113:94:0::1;21961:254:::0;;:::o;21471:157::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;169:10;643:23;635:73;;;;-1:-1:-1;;;635:73:0;;;;;;;:::i;:::-;21529:12:::1;583:6:::0;;21565:55:::1;::::0;-1:-1:-1;;;;;583:6:0;;;;21594:21:::1;::::0;21529:12;21565:55;21529:12;21565:55;21594:21;583:6;21565:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;21471:157:0:o;21634:159::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;169:10;643:23;635:73;;;;-1:-1:-1;;;635:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21706:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;21705:15;21697:56;;;::::0;-1:-1:-1;;;21697:56:0;;9548:2:1;21697:56:0::1;::::0;::::1;9530:21:1::0;9587:2;9567:18;;;9560:30;9626;9606:18;;;9599:58;9674:18;;21697:56:0::1;9346:352:1::0;21697:56:0::1;-1:-1:-1::0;;;;;21764:14:0::1;;::::0;;;:5:::1;:14;::::0;;;;:21;;-1:-1:-1;;21764:21:0::1;21781:4;21764:21;::::0;;21634:159::o;2713:98::-;2771:7;2798:5;2802:1;2798;:5;:::i;:::-;2791:12;2713:98;-1:-1:-1;;;2713:98:0:o;2817:::-;2875:7;2902:5;2906:1;2902;:5;:::i;20113:746::-;-1:-1:-1;;;;;20209:18:0;;20201:68;;;;-1:-1:-1;;;20201:68:0;;10127:2:1;20201:68:0;;;10109:21:1;10166:2;10146:18;;;10139:30;10205:34;10185:18;;;10178:62;-1:-1:-1;;;10256:18:1;;;10249:35;10301:19;;20201:68:0;9925:401:1;20201:68:0;-1:-1:-1;;;;;20288:16:0;;20280:64;;;;-1:-1:-1;;;20280:64:0;;10533:2:1;20280:64:0;;;10515:21:1;10572:2;10552:18;;;10545:30;10611:34;10591:18;;;10584:62;-1:-1:-1;;;10662:18:1;;;10655:33;10705:19;;20280:64:0;10331:399:1;20280:64:0;20372:1;20363:6;:10;20355:71;;;;-1:-1:-1;;;20355:71:0;;10937:2:1;20355:71:0;;;10919:21:1;10976:2;10956:18;;;10949:30;11015:34;10995:18;;;10988:62;-1:-1:-1;;;11066:18:1;;;11059:46;11122:19;;20355:71:0;10735:412:1;20355:71:0;-1:-1:-1;;;;;20446:11:0;;;;;;:5;:11;;;;;;;;20445:12;20437:57;;;;-1:-1:-1;;;20437:57:0;;11354:2:1;20437:57:0;;;11336:21:1;;;11373:18;;;11366:30;11432:34;11412:18;;;11405:62;11484:18;;20437:57:0;11152:356:1;20437:57:0;20509:4;;;;;;;20505:118;;-1:-1:-1;;;;;20537:20:0;;;;;;:14;:20;;;;;;;;;:42;;-1:-1:-1;;;;;;20561:18:0;;;;;;:14;:18;;;;;;;;20537:42;20529:82;;;;-1:-1:-1;;;20529:82:0;;11715:2:1;20529:82:0;;;11697:21:1;11754:2;11734:18;;;11727:30;11793:29;11773:18;;;11766:57;11840:18;;20529:82:0;11513:351:1;20529:82:0;20637:11;;;;:19;;:11;:19;:47;;;;-1:-1:-1;;;;;;20661:23:0;;;;;;:19;:23;;;;;;;;20660:24;20637:47;20633:177;;;20738:9;;20709:25;20727:6;20709:13;20719:2;-1:-1:-1;;;;;17785:21:0;17758:7;17785:21;;;:12;:21;;;;;;;17692:122;20709:13;:17;;:25::i;:::-;:38;;20701:97;;;;-1:-1:-1;;;20701:97:0;;12071:2:1;20701:97:0;;;12053:21:1;12110:2;12090:18;;;12083:30;12149:34;12129:18;;;12122:62;-1:-1:-1;;;12200:18:1;;;12193:44;12254:19;;20701:97:0;11869:410:1;20701:97:0;20820:31;20834:4;20840:2;20844:6;20820:13;:31::i;:::-;20113:746;;;:::o;3025:206::-;3111:7;3172:12;3164:6;;;;3156:29;;;;-1:-1:-1;;;3156:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3207:5:0;;;3025:206::o;18378:353::-;-1:-1:-1;;;;;18477:19:0;;18469:72;;;;-1:-1:-1;;;18469:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18560:21:0;;18552:72;;;;-1:-1:-1;;;18552:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18635:22:0;;;;;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;:40;;;18691:32;;1410:25:1;;;18691:32:0;;1383:18:1;18691:32:0;;;;;;;;18378:353;;;:::o;20865:369::-;20986:11;;20947:65;;20971:4;;-1:-1:-1;;;;;20986:11:0;21000;20947:15;:65::i;:::-;21023:11;;21169:16;;21023:203;;-1:-1:-1;;;21023:203:0;;21091:4;21023:203;;;12633:34:1;12683:18;;;12676:34;;;21023:11:0;12726:18:1;;;12719:34;;;12769:18;;;12762:34;-1:-1:-1;;;;;21169:16:0;;;12812:19:1;;;12805:44;21200:15:0;12865:19:1;;;12858:35;21023:11:0;;;:27;;21058:9;;12567:19:1;;21023:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20865:369;;:::o;2505:98::-;2563:7;2590:5;2594:1;2590;:5;:::i;21240:225::-;-1:-1:-1;;;;;21332:20:0;;;;;;:12;:20;;;;;:30;;21356:6;;21332:20;:30;;21356:6;;21332:30;:::i;:::-;;;;-1:-1:-1;;;;;;;21373:23:0;;;;;;:12;:23;;;;;:33;;21400:6;;21373:23;:33;;21400:6;;21373:33;:::i;:::-;;;;;;;;21439:9;-1:-1:-1;;;;;21422:35:0;21431:6;-1:-1:-1;;;;;21422:35:0;;21450:6;21422:35;;;;1410:25:1;;1398:2;1383:18;;1264:177;14:597;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:1;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:1;1877:18;;;;1864:32;;1446:456::o;2096:247::-;2155:6;2208:2;2196:9;2187:7;2183:23;2179:32;2176:52;;;2224:1;2221;2214:12;2176:52;2263:9;2250:23;2282:31;2307:5;2282:31;:::i;2556:273::-;2612:6;2665:2;2653:9;2644:7;2640:23;2636:32;2633:52;;;2681:1;2678;2671:12;2633:52;2720:9;2707:23;2773:5;2766:13;2759:21;2752:5;2749:32;2739:60;;2795:1;2792;2785:12;3069:388;3137:6;3145;3198:2;3186:9;3177:7;3173:23;3169:32;3166:52;;;3214:1;3211;3204:12;3166:52;3253:9;3240:23;3272:31;3297:5;3272:31;:::i;:::-;3322:5;-1:-1:-1;3379:2:1;3364:18;;3351:32;3392:33;3351:32;3392:33;:::i;:::-;3444:7;3434:17;;;3069:388;;;;;:::o;3462:248::-;3530:6;3538;3591:2;3579:9;3570:7;3566:23;3562:32;3559:52;;;3607:1;3604;3597:12;3559:52;-1:-1:-1;;3630:23:1;;;3700:2;3685:18;;;3672:32;;-1:-1:-1;3462:248:1:o;3715:404::-;3917:2;3899:21;;;3956:2;3936:18;;;3929:30;3995:34;3990:2;3975:18;;3968:62;-1:-1:-1;;;4061:2:1;4046:18;;4039:38;4109:3;4094:19;;3715:404::o;4124:402::-;4326:2;4308:21;;;4365:2;4345:18;;;4338:30;4404:34;4399:2;4384:18;;4377:62;-1:-1:-1;;;4470:2:1;4455:18;;4448:36;4516:3;4501:19;;4124:402::o;4531:127::-;4592:10;4587:3;4583:20;4580:1;4573:31;4623:4;4620:1;4613:15;4647:4;4644:1;4637:15;4663:422;4752:1;4795:5;4752:1;4809:270;4830:7;4820:8;4817:21;4809:270;;;4889:4;4885:1;4881:6;4877:17;4871:4;4868:27;4865:53;;;4898:18;;:::i;:::-;4948:7;4938:8;4934:22;4931:55;;;4968:16;;;;4931:55;5047:22;;;;5007:15;;;;4809:270;;;4813:3;4663:422;;;;;:::o;5090:806::-;5139:5;5169:8;5159:80;;-1:-1:-1;5210:1:1;5224:5;;5159:80;5258:4;5248:76;;-1:-1:-1;5295:1:1;5309:5;;5248:76;5340:4;5358:1;5353:59;;;;5426:1;5421:130;;;;5333:218;;5353:59;5383:1;5374:10;;5397:5;;;5421:130;5458:3;5448:8;5445:17;5442:43;;;5465:18;;:::i;:::-;-1:-1:-1;;5521:1:1;5507:16;;5536:5;;5333:218;;5635:2;5625:8;5622:16;5616:3;5610:4;5607:13;5603:36;5597:2;5587:8;5584:16;5579:2;5573:4;5570:12;5566:35;5563:77;5560:159;;;-1:-1:-1;5672:19:1;;;5704:5;;5560:159;5751:34;5776:8;5770:4;5751:34;:::i;:::-;5821:6;5817:1;5813:6;5809:19;5800:7;5797:32;5794:58;;;5832:18;;:::i;:::-;5870:20;;5090:806;-1:-1:-1;;;5090:806:1:o;5901:140::-;5959:5;5988:47;6029:4;6019:8;6015:19;6009:4;5988:47;:::i;6046:168::-;6086:7;6152:1;6148;6144:6;6140:14;6137:1;6134:21;6129:1;6122:9;6115:17;6111:45;6108:71;;;6159:18;;:::i;:::-;-1:-1:-1;6199:9:1;;6046:168::o;6219:401::-;6421:2;6403:21;;;6460:2;6440:18;;;6433:30;6499:34;6494:2;6479:18;;6472:62;-1:-1:-1;;;6565:2:1;6550:18;;6543:35;6610:3;6595:19;;6219:401::o;6981:251::-;7051:6;7104:2;7092:9;7083:7;7079:23;7075:32;7072:52;;;7120:1;7117;7110:12;7072:52;7152:9;7146:16;7171:31;7196:5;7171:31;:::i;9703:217::-;9743:1;9769;9759:132;;9813:10;9808:3;9804:20;9801:1;9794:31;9848:4;9845:1;9838:15;9876:4;9873:1;9866:15;9759:132;-1:-1:-1;9905:9:1;;9703:217::o;12904:306::-;12992:6;13000;13008;13061:2;13049:9;13040:7;13036:23;13032:32;13029:52;;;13077:1;13074;13067:12;13029:52;13106:9;13100:16;13090:26;;13156:2;13145:9;13141:18;13135:25;13125:35;;13200:2;13189:9;13185:18;13179:25;13169:35;;12904:306;;;;;:::o;13215:128::-;13255:3;13286:1;13282:6;13279:1;13276:13;13273:39;;;13292:18;;:::i;:::-;-1:-1:-1;13328:9:1;;13215:128::o;13348:125::-;13388:4;13416:1;13413;13410:8;13407:34;;;13421:18;;:::i;:::-;-1:-1:-1;13458:9:1;;13348:125::o

Swarm Source

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