ETH Price: $2,415.84 (-2.27%)
 

Overview

Max Total Supply

10,000,000 KOL

Holders

240

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
32,000 KOL

Value
$0.00
0xa2C1E1129a63498ce6CD81ce2c31d50eA29E16a1
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:
KOLLECT

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-29
*/

// Web: https://kollectai.xyz
// Tg: https://t.me/Kollect_AI_Portal
// X: https://x.com/Kollect_AI

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

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

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() external view virtual override returns (string memory) {
        return _name;
    }

    function symbol() external view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() external view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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 _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint256);

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    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, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(address from, address to, uint256 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 (uint256);

    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
        external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    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 (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(uint256 amount0Out, uint256 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,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline)
        external
        payable
        returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline)
        external
        payable
        returns (uint256[] memory amounts);

    function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB);

    function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut)
        external
        pure
        returns (uint256 amountOut);

    function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut)
        external
        pure
        returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract KOLLECT is ERC20, Ownable {
    uint256 public feeOnBuy = 5;
    uint256 public feeOnSell = 5;
    address public marketingWallet = 0x8E7371596305F5D76F2208ad1ac15e7Acb0dE644;
    address public devWallet = 0x716CBc9b6746DEA6c9F42D3862ECa443A53902a7;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    bool private swapping;
    uint256 public swapTokensAtAmount;
    uint256 public maxTxnAmount;
    uint256 public maxWalletSize;

    bool public isTradeOpen = false;
    bool public isSizeLimitsOpen;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isLimitExempt;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event FeesUpdated(uint256 feeOnBuy, uint256 feeOnSell);
    event MarketingWalletChanged(address indexed newMarketingWallet);

    event DevWalletChanged(address indexed newDevWallet);
    event SwapAndSendFee(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountChanged(uint256 newAmount);
    event SizesAtAmountChanged(uint256 _maxTxnAmount, uint256 _maxWalletSize, uint256 percent);
    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("Kollect AI", "KOL") Ownable(msg.sender) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair =
            IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        isSizeLimitsOpen = true;
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[DEAD] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[marketingWallet] = true;
        _isExcludedFromFees[devWallet] = true;

        _isLimitExempt[owner()] = true;

        _mint(owner(), 10 ** 7 * (10 ** 18));
        swapTokensAtAmount = totalSupply() / 4000;
        maxTxnAmount = (totalSupply() * 4) / 1000;
        maxWalletSize = (totalSupply() * 8) / 1000;
    }

    receive() external payable {}

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

        (bool success,) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function enableTrade() external onlyOwner {
        require(isTradeOpen == false, "Trade is already open!");
        isTradeOpen = true;
    }

    function disableSizeLimits() public onlyOwner {
        isSizeLimitsOpen = false;
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function exemptFromLimit(address account, bool exempt) external onlyOwner {
        require(_isLimitExempt[account] != exempt, "Account is already the value of 'exempt'");
        _isLimitExempt[account] = exempt;
    }

    function isExcludedFromFees(address account) external view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function setFees(uint256 _feeOnBuy, uint256 _feeOnSell) external onlyOwner {
        feeOnBuy = _feeOnBuy;
        feeOnSell = _feeOnSell;
        emit FeesUpdated(feeOnBuy, feeOnSell);
    }

    function changeMarketingWallet(address _marketingWallet) external onlyOwner {
        require(_marketingWallet != marketingWallet, " wallet is already that address");
        require(_marketingWallet != address(0), " wallet cannot be the zero address");
        marketingWallet = _marketingWallet;
        _isExcludedFromFees[marketingWallet] = true;
        emit MarketingWalletChanged(marketingWallet);
    }

    function changeDevWallet(address _devWallet) external onlyOwner {
        require(_devWallet != devWallet, " wallet is already that address");
        require(_devWallet != address(0), " wallet cannot be the zero address");
        devWallet = _devWallet;
        _isExcludedFromFees[devWallet] = true;
        emit DevWalletChanged(_devWallet);
    }

    function setSizesAtAmount(uint256 _maxTxnAmount, uint256 _maxWalletSize, uint256 percent) public onlyOwner {
        maxTxnAmount = (_maxTxnAmount * totalSupply()) / percent;
        maxWalletSize = (_maxWalletSize * totalSupply()) / percent;
        emit SizesAtAmountChanged(_maxTxnAmount, _maxWalletSize, percent);
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount > totalSupply() / 100000, "SwapTokensAtAmount must be greater than 0.001% of total supply");
        swapTokensAtAmount = newAmount;
        emit SwapTokensAtAmountChanged(newAmount);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(isTradeOpen || _isLimitExempt[from] || _isLimitExempt[to], "Trading is not open!");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (isSizeLimitsOpen) {
            if (from == uniswapV2Pair && !_isExcludedFromFees[to]) {
                require(amount <= maxTxnAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
            } else if (to == uniswapV2Pair && !_isExcludedFromFees[from]) {
                require(amount <= maxTxnAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
            }

            if (
                !_isExcludedFromFees[from] && to != address(uniswapV2Router) && to != address(uniswapV2Pair)
                    && !_isExcludedFromFees[to]
            ) {
                require(balanceOf(to) + amount <= maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap && !swapping && to == uniswapV2Pair) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        if (takeFee) {
            uint256 fees;
            if (from == uniswapV2Pair) {
                fees = (amount * feeOnBuy) / 100;
            } else if (to == uniswapV2Pair) {
                fees = (amount * feeOnSell) / 100;
            } else {
                fees = 0;
            }
            amount -= fees;
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
        }

        super._transfer(from, to, amount);
    }

    function swapAndSendFee(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractTokenBalance = balanceOf(address(this));

        if (contractTokenBalance == 0) {
            return;
        }

        if (contractTokenBalance > swapTokensAtAmount * 20) {
            contractTokenBalance = swapTokensAtAmount * 20;
        }

        swapAndSendFee(contractTokenBalance);
        contractTokenBalance = address(this).balance;

        uint256 amountToMarketing = (contractTokenBalance * 8) / 10;
        uint256 amountToDev = (contractTokenBalance * 2) / 10;
        // uint256 amountToDev = newBalance;

        sendBNB(payable(marketingWallet), amountToMarketing);
        sendBNB(payable(devWallet), amountToDev);
    }

    function transferForeignToken(address _token) external returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "_token address cannot be native token");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(address(devWallet), _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw in token contract ETH if stuck
    function withdrawStuckETH() external {
        bool success;
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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":"newDevWallet","type":"address"}],"name":"DevWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeOnSell","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"MarketingWalletChanged","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":"_maxTxnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_maxWalletSize","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"SizesAtAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"SwapTokensAtAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"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":[{"internalType":"address","name":"_devWallet","type":"address"}],"name":"changeDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableSizeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptFromLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnSell","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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSizeLimitsOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradeOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_feeOnSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxnAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWalletSize","type":"uint256"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setSizesAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260056006819055600755600880546001600160a01b0319908116738e7371596305f5d76f2208ad1ac15e7acb0de644179091556009805490911673716cbc9b6746dea6c9f42d3862eca443a53902a7179055600f805460ff1916905534801561006b575f80fd5b50336040518060400160405280600a8152602001694b6f6c6c65637420414960b01b8152506040518060400160405280600381526020016212d3d360ea1b81525081600390816100bb9190610708565b5060046100c88282610708565b5050506001600160a01b0381166100f957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101028161041c565b505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610158573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017c91906107c2565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101eb91906107c2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610235573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025991906107c2565b600a80546001600160a01b038086166001600160a01b03199283168117909355600b8054918516919092161790559091506102979030905f1961046d565b600f805461ff001916610100179055600160105f6102bd6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560109093527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b6980548516600190811790915530845282842080548616821790556008548216845282842080548616821790556009549091168352908220805490931681179092556011906103666005546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556103b36103a26005546001600160a01b031690565b6a084595161401484a000000610590565b610fa06103bf60025490565b6103c99190610803565b600c556103e86103d860025490565b6103e3906004610822565b6103ed9190610803565b600d556103e86103fc60025490565b610407906008610822565b6104119190610803565b600e55506108529050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166104cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016100f0565b6001600160a01b0382166105305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016100f0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166105e65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016100f0565b8060025f8282546105f7919061083f565b90915550506001600160a01b0382165f908152602081905260408120805483929061062390849061083f565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061069957607f821691505b6020821081036106b757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561066c57805f5260205f20601f840160051c810160208510156106e25750805b601f840160051c820191505b81811015610701575f81556001016106ee565b5050505050565b81516001600160401b0381111561072157610721610671565b6107358161072f8454610685565b846106bd565b6020601f821160018114610767575f83156107505750848201515b5f19600385901b1c1916600184901b178455610701565b5f84815260208120601f198516915b828110156107965787850151825560209485019460019092019101610776565b50848210156107b357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156107d2575f80fd5b81516001600160a01b03811681146107e8575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b5f8261081d57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610839576108396107ef565b92915050565b80820180821115610839576108396107ef565b611fda8061085f5f395ff3fe608060405260043610610214575f3560e01c80638ea5220f1161011e578063bb8c3ee0116100a8578063dc93cf701161006d578063dc93cf70146105ff578063dd62ed3e1461061e578063e2f4560514610662578063f2fde38b14610677578063f5648a4f14610696575f80fd5b8063bb8c3ee014610578578063bd8d82111461058d578063c0246668146105ac578063cf46f24c146105cb578063d0973f10146105e0575f80fd5b8063a457c2d7116100ee578063a457c2d7146104dd578063a9059cbb146104fc578063afa4f3b21461051b578063b0ef69ab1461053a578063bb85c6d114610559575f80fd5b80638ea5220f146104815780638f3fa860146104a057806395d89b41146104b55780639fbdd96d146104c9575f80fd5b8063395093511161019f57806365048d081161016f57806365048d08146103e857806370a08231146103fd578063715018a61461043157806375f0a874146104455780638da5cb5b14610464575f80fd5b8063395093511461035a57806349bd5a5e146103795780634fbee1931461039857806360901444146103cf575f80fd5b8063128f5c33116101e5578063128f5c33146102ad5780631694505e146102cb57806318160ddd1461030257806323b872dd14610320578063313ce5671461033f575f80fd5b806299d3861461021f57806306fdde0314610235578063095ea7b31461025f5780630b78f9c01461028e575f80fd5b3661021b57005b5f80fd5b34801561022a575f80fd5b506102336106aa565b005b348015610240575f80fd5b50610249610712565b6040516102569190611bbe565b60405180910390f35b34801561026a575f80fd5b5061027e610279366004611c07565b6107a2565b6040519015158152602001610256565b348015610299575f80fd5b506102336102a8366004611c31565b6107b8565b3480156102b8575f80fd5b50600f5461027e90610100900460ff1681565b3480156102d6575f80fd5b50600a546102ea906001600160a01b031681565b6040516001600160a01b039091168152602001610256565b34801561030d575f80fd5b506002545b604051908152602001610256565b34801561032b575f80fd5b5061027e61033a366004611c51565b610807565b34801561034a575f80fd5b5060405160128152602001610256565b348015610365575f80fd5b5061027e610374366004611c07565b6108b6565b348015610384575f80fd5b50600b546102ea906001600160a01b031681565b3480156103a3575f80fd5b5061027e6103b2366004611c8f565b6001600160a01b03165f9081526010602052604090205460ff1690565b3480156103da575f80fd5b50600f5461027e9060ff1681565b3480156103f3575f80fd5b5061031260075481565b348015610408575f80fd5b50610312610417366004611c8f565b6001600160a01b03165f9081526020819052604090205490565b34801561043c575f80fd5b506102336108f1565b348015610450575f80fd5b506008546102ea906001600160a01b031681565b34801561046f575f80fd5b506005546001600160a01b03166102ea565b34801561048c575f80fd5b506009546102ea906001600160a01b031681565b3480156104ab575f80fd5b50610312600e5481565b3480156104c0575f80fd5b50610249610904565b3480156104d4575f80fd5b50610233610913565b3480156104e8575f80fd5b5061027e6104f7366004611c07565b610928565b348015610507575f80fd5b5061027e610516366004611c07565b6109c0565b348015610526575f80fd5b50610233610535366004611cb1565b6109cc565b348015610545575f80fd5b50610233610554366004611cc8565b610a9a565b348015610564575f80fd5b50610233610573366004611c8f565b610b2a565b348015610583575f80fd5b5061031260065481565b348015610598575f80fd5b506102336105a7366004611c8f565b610c1b565b3480156105b7575f80fd5b506102336105c6366004611cfe565b610d06565b3480156105d6575f80fd5b50610312600d5481565b3480156105eb575f80fd5b506102336105fa366004611cfe565b610dee565b34801561060a575f80fd5b5061027e610619366004611c8f565b610ea0565b348015610629575f80fd5b50610312610638366004611d35565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561066d575f80fd5b50610312600c5481565b348015610682575f80fd5b50610233610691366004611c8f565b611086565b3480156106a1575f80fd5b506102336110c3565b6106b2611118565b600f5460ff16156107035760405162461bcd60e51b8152602060048201526016602482015275547261646520697320616c7265616479206f70656e2160501b60448201526064015b60405180910390fd5b600f805460ff19166001179055565b60606003805461072190611d61565b80601f016020809104026020016040519081016040528092919081815260200182805461074d90611d61565b80156107985780601f1061076f57610100808354040283529160200191610798565b820191905f5260205f20905b81548152906001019060200180831161077b57829003601f168201915b5050505050905090565b5f6107ae338484611145565b5060015b92915050565b6107c0611118565b6006829055600781905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1910160405180910390a15050565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f1981146108a057828110156108935760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106fa565b6108a08533858403611145565b6108ab858585611268565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916107ae9185906108ec908690611dad565b611145565b6108f9611118565b6109025f61172a565b565b60606004805461072190611d61565b61091b611118565b600f805461ff0019169055565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156109a95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106fa565b6109b63385858403611145565b5060019392505050565b5f6107ae338484611268565b6109d4611118565b620186a06109e160025490565b6109eb9190611dc0565b8111610a5f5760405162461bcd60e51b815260206004820152603e60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e30303125206f6620746f74616c20737570706c79000060648201526084016106fa565b600c8190556040518181527fcba17309eff0b14bb89cad72aef8b308a23d698dfff957e2255d17bbc03620bd9060200160405180910390a150565b610aa2611118565b80610aac60025490565b610ab69085611ddf565b610ac09190611dc0565b600d5580610acd60025490565b610ad79084611ddf565b610ae19190611dc0565b600e5560408051848152602081018490529081018290527f1300a1f96ba1abf266808b39af3955b4662b3d9dc084381b02c66c303c1805c39060600160405180910390a1505050565b610b32611118565b6008546001600160a01b0390811690821603610b905760405162461bcd60e51b815260206004820152601f60248201527f2077616c6c657420697320616c7265616479207468617420616464726573730060448201526064016106fa565b6001600160a01b038116610bb65760405162461bcd60e51b81526004016106fa90611df6565b600880546001600160a01b0319166001600160a01b0383811691821783555f91825260106020526040808320805460ff19166001179055925492519216917fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b9190a250565b610c23611118565b6009546001600160a01b0390811690821603610c815760405162461bcd60e51b815260206004820152601f60248201527f2077616c6c657420697320616c7265616479207468617420616464726573730060448201526064016106fa565b6001600160a01b038116610ca75760405162461bcd60e51b81526004016106fa90611df6565b600980546001600160a01b0319166001600160a01b0383169081179091555f81815260106020526040808220805460ff19166001179055517f268c00f4ec08b34fdde24b52e47a09d62f3f3837eb3b8ac7206cefb3bb5e53459190a250565b610d0e611118565b6001600160a01b0382165f9081526010602052604090205481151560ff909116151503610d905760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016106fa565b6001600160a01b0382165f81815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610df6611118565b6001600160a01b0382165f9081526011602052604090205481151560ff909116151503610e765760405162461bcd60e51b815260206004820152602860248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015267276578656d70742760c01b60648201526084016106fa565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b5f6001600160a01b038216610ef75760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016106fa565b306001600160a01b03831603610f5d5760405162461bcd60e51b815260206004820152602560248201527f5f746f6b656e20616464726573732063616e6e6f74206265206e6174697665206044820152643a37b5b2b760d91b60648201526084016106fa565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610fa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc59190611e38565b60095460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015611017573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103b9190611e4f565b604080516001600160a01b0386168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a150919050565b61108e611118565b6001600160a01b0381166110b757604051631e4fbdf760e01b81525f60048201526024016106fa565b6110c08161172a565b50565b6008546040515f916001600160a01b03169047908381818185875af1925050503d805f811461110d576040519150601f19603f3d011682016040523d82523d5f602084013e611112565b606091505b50505050565b6005546001600160a01b031633146109025760405163118cdaa760e01b81523360048201526024016106fa565b6001600160a01b0383166111a75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106fa565b6001600160a01b0382166112085760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106fa565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661128e5760405162461bcd60e51b81526004016106fa90611e6a565b6001600160a01b0382166112b45760405162461bcd60e51b81526004016106fa90611eaf565b600f5460ff16806112dc57506001600160a01b0383165f9081526011602052604090205460ff165b806112fe57506001600160a01b0382165f9081526011602052604090205460ff165b6113415760405162461bcd60e51b815260206004820152601460248201527354726164696e67206973206e6f74206f70656e2160601b60448201526064016106fa565b805f036113585761135383835f61177b565b505050565b600f54610100900460ff16156115c857600b546001600160a01b03848116911614801561139d57506001600160a01b0382165f9081526010602052604090205460ff16155b1561141757600d548111156114125760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016106fa565b6114c2565b600b546001600160a01b03838116911614801561144c57506001600160a01b0383165f9081526010602052604090205460ff16155b156114c257600d548111156114c25760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016106fa565b6001600160a01b0383165f9081526010602052604090205460ff161580156114f85750600a546001600160a01b03838116911614155b80156115125750600b546001600160a01b03838116911614155b801561153657506001600160a01b0382165f9081526010602052604090205460ff16155b156115c857600e548161155d846001600160a01b03165f9081526020819052604090205490565b6115679190611dad565b11156115c85760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016106fa565b305f90815260208190526040902054600c54811080159081906115f55750600b54600160a01b900460ff16155b801561160e5750600b546001600160a01b038581169116145b1561163c57600b805460ff60a01b1916600160a01b17905561162e6118ce565b600b805460ff60a01b191690555b600b546001600160a01b0386165f9081526010602052604090205460ff600160a01b90920482161591168061168857506001600160a01b0385165f9081526010602052604090205460ff165b1561169057505f5b801561171757600b545f906001600160a01b03908116908816036116cf576064600654866116be9190611ddf565b6116c89190611dc0565b90506116f8565b600b546001600160a01b03908116908716036116f5576064600754866116be9190611ddf565b505f5b6117028186611ef2565b945080156117155761171587308361177b565b505b61172286868661177b565b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166117a15760405162461bcd60e51b81526004016106fa90611e6a565b6001600160a01b0382166117c75760405162461bcd60e51b81526004016106fa90611eaf565b6001600160a01b0383165f908152602081905260409020548181101561183e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106fa565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611874908490611dad565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118c091815260200190565b60405180910390a350505050565b305f90815260208190526040812054908190036118e85750565b600c546118f6906014611ddf565b81111561190e57600c5461190b906014611ddf565b90505b6119178161197a565b50475f600a611927836008611ddf565b6119319190611dc0565b90505f600a611941846002611ddf565b61194b9190611dc0565b600854909150611964906001600160a01b031683611aa9565b600954611353906001600160a01b031682611aa9565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106119ad576119ad611f05565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a289190611f19565b81600181518110611a3b57611a3b611f05565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac94790611a809085905f90869030904290600401611f34565b5f604051808303815f87803b158015611a97575f80fd5b505af1158015611722573d5f803e3d5ffd5b80471015611af95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106fa565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611b42576040519150601f19603f3d011682016040523d82523d5f602084013e611b47565b606091505b50509050806113535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106fa565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146110c0575f80fd5b5f8060408385031215611c18575f80fd5b8235611c2381611bf3565b946020939093013593505050565b5f8060408385031215611c42575f80fd5b50508035926020909101359150565b5f805f60608486031215611c63575f80fd5b8335611c6e81611bf3565b92506020840135611c7e81611bf3565b929592945050506040919091013590565b5f60208284031215611c9f575f80fd5b8135611caa81611bf3565b9392505050565b5f60208284031215611cc1575f80fd5b5035919050565b5f805f60608486031215611cda575f80fd5b505081359360208301359350604090920135919050565b80151581146110c0575f80fd5b5f8060408385031215611d0f575f80fd5b8235611d1a81611bf3565b91506020830135611d2a81611cf1565b809150509250929050565b5f8060408385031215611d46575f80fd5b8235611d5181611bf3565b91506020830135611d2a81611bf3565b600181811c90821680611d7557607f821691505b602082108103611d9357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107b2576107b2611d99565b5f82611dda57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176107b2576107b2611d99565b60208082526022908201527f2077616c6c65742063616e6e6f7420626520746865207a65726f206164647265604082015261737360f01b606082015260800190565b5f60208284031215611e48575f80fd5b5051919050565b5f60208284031215611e5f575f80fd5b8151611caa81611cf1565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107b2576107b2611d99565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611f29575f80fd5b8151611caa81611bf3565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611f845783516001600160a01b0316835260209384019390920191600101611f5d565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220f5857705e218b13e0c5452db8475a56819d36f5ef9386efb155e9e9afb67e5f964736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610214575f3560e01c80638ea5220f1161011e578063bb8c3ee0116100a8578063dc93cf701161006d578063dc93cf70146105ff578063dd62ed3e1461061e578063e2f4560514610662578063f2fde38b14610677578063f5648a4f14610696575f80fd5b8063bb8c3ee014610578578063bd8d82111461058d578063c0246668146105ac578063cf46f24c146105cb578063d0973f10146105e0575f80fd5b8063a457c2d7116100ee578063a457c2d7146104dd578063a9059cbb146104fc578063afa4f3b21461051b578063b0ef69ab1461053a578063bb85c6d114610559575f80fd5b80638ea5220f146104815780638f3fa860146104a057806395d89b41146104b55780639fbdd96d146104c9575f80fd5b8063395093511161019f57806365048d081161016f57806365048d08146103e857806370a08231146103fd578063715018a61461043157806375f0a874146104455780638da5cb5b14610464575f80fd5b8063395093511461035a57806349bd5a5e146103795780634fbee1931461039857806360901444146103cf575f80fd5b8063128f5c33116101e5578063128f5c33146102ad5780631694505e146102cb57806318160ddd1461030257806323b872dd14610320578063313ce5671461033f575f80fd5b806299d3861461021f57806306fdde0314610235578063095ea7b31461025f5780630b78f9c01461028e575f80fd5b3661021b57005b5f80fd5b34801561022a575f80fd5b506102336106aa565b005b348015610240575f80fd5b50610249610712565b6040516102569190611bbe565b60405180910390f35b34801561026a575f80fd5b5061027e610279366004611c07565b6107a2565b6040519015158152602001610256565b348015610299575f80fd5b506102336102a8366004611c31565b6107b8565b3480156102b8575f80fd5b50600f5461027e90610100900460ff1681565b3480156102d6575f80fd5b50600a546102ea906001600160a01b031681565b6040516001600160a01b039091168152602001610256565b34801561030d575f80fd5b506002545b604051908152602001610256565b34801561032b575f80fd5b5061027e61033a366004611c51565b610807565b34801561034a575f80fd5b5060405160128152602001610256565b348015610365575f80fd5b5061027e610374366004611c07565b6108b6565b348015610384575f80fd5b50600b546102ea906001600160a01b031681565b3480156103a3575f80fd5b5061027e6103b2366004611c8f565b6001600160a01b03165f9081526010602052604090205460ff1690565b3480156103da575f80fd5b50600f5461027e9060ff1681565b3480156103f3575f80fd5b5061031260075481565b348015610408575f80fd5b50610312610417366004611c8f565b6001600160a01b03165f9081526020819052604090205490565b34801561043c575f80fd5b506102336108f1565b348015610450575f80fd5b506008546102ea906001600160a01b031681565b34801561046f575f80fd5b506005546001600160a01b03166102ea565b34801561048c575f80fd5b506009546102ea906001600160a01b031681565b3480156104ab575f80fd5b50610312600e5481565b3480156104c0575f80fd5b50610249610904565b3480156104d4575f80fd5b50610233610913565b3480156104e8575f80fd5b5061027e6104f7366004611c07565b610928565b348015610507575f80fd5b5061027e610516366004611c07565b6109c0565b348015610526575f80fd5b50610233610535366004611cb1565b6109cc565b348015610545575f80fd5b50610233610554366004611cc8565b610a9a565b348015610564575f80fd5b50610233610573366004611c8f565b610b2a565b348015610583575f80fd5b5061031260065481565b348015610598575f80fd5b506102336105a7366004611c8f565b610c1b565b3480156105b7575f80fd5b506102336105c6366004611cfe565b610d06565b3480156105d6575f80fd5b50610312600d5481565b3480156105eb575f80fd5b506102336105fa366004611cfe565b610dee565b34801561060a575f80fd5b5061027e610619366004611c8f565b610ea0565b348015610629575f80fd5b50610312610638366004611d35565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561066d575f80fd5b50610312600c5481565b348015610682575f80fd5b50610233610691366004611c8f565b611086565b3480156106a1575f80fd5b506102336110c3565b6106b2611118565b600f5460ff16156107035760405162461bcd60e51b8152602060048201526016602482015275547261646520697320616c7265616479206f70656e2160501b60448201526064015b60405180910390fd5b600f805460ff19166001179055565b60606003805461072190611d61565b80601f016020809104026020016040519081016040528092919081815260200182805461074d90611d61565b80156107985780601f1061076f57610100808354040283529160200191610798565b820191905f5260205f20905b81548152906001019060200180831161077b57829003601f168201915b5050505050905090565b5f6107ae338484611145565b5060015b92915050565b6107c0611118565b6006829055600781905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1910160405180910390a15050565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f1981146108a057828110156108935760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106fa565b6108a08533858403611145565b6108ab858585611268565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916107ae9185906108ec908690611dad565b611145565b6108f9611118565b6109025f61172a565b565b60606004805461072190611d61565b61091b611118565b600f805461ff0019169055565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156109a95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106fa565b6109b63385858403611145565b5060019392505050565b5f6107ae338484611268565b6109d4611118565b620186a06109e160025490565b6109eb9190611dc0565b8111610a5f5760405162461bcd60e51b815260206004820152603e60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e30303125206f6620746f74616c20737570706c79000060648201526084016106fa565b600c8190556040518181527fcba17309eff0b14bb89cad72aef8b308a23d698dfff957e2255d17bbc03620bd9060200160405180910390a150565b610aa2611118565b80610aac60025490565b610ab69085611ddf565b610ac09190611dc0565b600d5580610acd60025490565b610ad79084611ddf565b610ae19190611dc0565b600e5560408051848152602081018490529081018290527f1300a1f96ba1abf266808b39af3955b4662b3d9dc084381b02c66c303c1805c39060600160405180910390a1505050565b610b32611118565b6008546001600160a01b0390811690821603610b905760405162461bcd60e51b815260206004820152601f60248201527f2077616c6c657420697320616c7265616479207468617420616464726573730060448201526064016106fa565b6001600160a01b038116610bb65760405162461bcd60e51b81526004016106fa90611df6565b600880546001600160a01b0319166001600160a01b0383811691821783555f91825260106020526040808320805460ff19166001179055925492519216917fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b9190a250565b610c23611118565b6009546001600160a01b0390811690821603610c815760405162461bcd60e51b815260206004820152601f60248201527f2077616c6c657420697320616c7265616479207468617420616464726573730060448201526064016106fa565b6001600160a01b038116610ca75760405162461bcd60e51b81526004016106fa90611df6565b600980546001600160a01b0319166001600160a01b0383169081179091555f81815260106020526040808220805460ff19166001179055517f268c00f4ec08b34fdde24b52e47a09d62f3f3837eb3b8ac7206cefb3bb5e53459190a250565b610d0e611118565b6001600160a01b0382165f9081526010602052604090205481151560ff909116151503610d905760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016106fa565b6001600160a01b0382165f81815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610df6611118565b6001600160a01b0382165f9081526011602052604090205481151560ff909116151503610e765760405162461bcd60e51b815260206004820152602860248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015267276578656d70742760c01b60648201526084016106fa565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b5f6001600160a01b038216610ef75760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016106fa565b306001600160a01b03831603610f5d5760405162461bcd60e51b815260206004820152602560248201527f5f746f6b656e20616464726573732063616e6e6f74206265206e6174697665206044820152643a37b5b2b760d91b60648201526084016106fa565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610fa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc59190611e38565b60095460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015611017573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103b9190611e4f565b604080516001600160a01b0386168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a150919050565b61108e611118565b6001600160a01b0381166110b757604051631e4fbdf760e01b81525f60048201526024016106fa565b6110c08161172a565b50565b6008546040515f916001600160a01b03169047908381818185875af1925050503d805f811461110d576040519150601f19603f3d011682016040523d82523d5f602084013e611112565b606091505b50505050565b6005546001600160a01b031633146109025760405163118cdaa760e01b81523360048201526024016106fa565b6001600160a01b0383166111a75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106fa565b6001600160a01b0382166112085760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106fa565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661128e5760405162461bcd60e51b81526004016106fa90611e6a565b6001600160a01b0382166112b45760405162461bcd60e51b81526004016106fa90611eaf565b600f5460ff16806112dc57506001600160a01b0383165f9081526011602052604090205460ff165b806112fe57506001600160a01b0382165f9081526011602052604090205460ff165b6113415760405162461bcd60e51b815260206004820152601460248201527354726164696e67206973206e6f74206f70656e2160601b60448201526064016106fa565b805f036113585761135383835f61177b565b505050565b600f54610100900460ff16156115c857600b546001600160a01b03848116911614801561139d57506001600160a01b0382165f9081526010602052604090205460ff16155b1561141757600d548111156114125760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016106fa565b6114c2565b600b546001600160a01b03838116911614801561144c57506001600160a01b0383165f9081526010602052604090205460ff16155b156114c257600d548111156114c25760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016106fa565b6001600160a01b0383165f9081526010602052604090205460ff161580156114f85750600a546001600160a01b03838116911614155b80156115125750600b546001600160a01b03838116911614155b801561153657506001600160a01b0382165f9081526010602052604090205460ff16155b156115c857600e548161155d846001600160a01b03165f9081526020819052604090205490565b6115679190611dad565b11156115c85760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016106fa565b305f90815260208190526040902054600c54811080159081906115f55750600b54600160a01b900460ff16155b801561160e5750600b546001600160a01b038581169116145b1561163c57600b805460ff60a01b1916600160a01b17905561162e6118ce565b600b805460ff60a01b191690555b600b546001600160a01b0386165f9081526010602052604090205460ff600160a01b90920482161591168061168857506001600160a01b0385165f9081526010602052604090205460ff165b1561169057505f5b801561171757600b545f906001600160a01b03908116908816036116cf576064600654866116be9190611ddf565b6116c89190611dc0565b90506116f8565b600b546001600160a01b03908116908716036116f5576064600754866116be9190611ddf565b505f5b6117028186611ef2565b945080156117155761171587308361177b565b505b61172286868661177b565b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166117a15760405162461bcd60e51b81526004016106fa90611e6a565b6001600160a01b0382166117c75760405162461bcd60e51b81526004016106fa90611eaf565b6001600160a01b0383165f908152602081905260409020548181101561183e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106fa565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611874908490611dad565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118c091815260200190565b60405180910390a350505050565b305f90815260208190526040812054908190036118e85750565b600c546118f6906014611ddf565b81111561190e57600c5461190b906014611ddf565b90505b6119178161197a565b50475f600a611927836008611ddf565b6119319190611dc0565b90505f600a611941846002611ddf565b61194b9190611dc0565b600854909150611964906001600160a01b031683611aa9565b600954611353906001600160a01b031682611aa9565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106119ad576119ad611f05565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a289190611f19565b81600181518110611a3b57611a3b611f05565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac94790611a809085905f90869030904290600401611f34565b5f604051808303815f87803b158015611a97575f80fd5b505af1158015611722573d5f803e3d5ffd5b80471015611af95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106fa565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611b42576040519150601f19603f3d011682016040523d82523d5f602084013e611b47565b606091505b50509050806113535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106fa565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146110c0575f80fd5b5f8060408385031215611c18575f80fd5b8235611c2381611bf3565b946020939093013593505050565b5f8060408385031215611c42575f80fd5b50508035926020909101359150565b5f805f60608486031215611c63575f80fd5b8335611c6e81611bf3565b92506020840135611c7e81611bf3565b929592945050506040919091013590565b5f60208284031215611c9f575f80fd5b8135611caa81611bf3565b9392505050565b5f60208284031215611cc1575f80fd5b5035919050565b5f805f60608486031215611cda575f80fd5b505081359360208301359350604090920135919050565b80151581146110c0575f80fd5b5f8060408385031215611d0f575f80fd5b8235611d1a81611bf3565b91506020830135611d2a81611cf1565b809150509250929050565b5f8060408385031215611d46575f80fd5b8235611d5181611bf3565b91506020830135611d2a81611bf3565b600181811c90821680611d7557607f821691505b602082108103611d9357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107b2576107b2611d99565b5f82611dda57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176107b2576107b2611d99565b60208082526022908201527f2077616c6c65742063616e6e6f7420626520746865207a65726f206164647265604082015261737360f01b606082015260800190565b5f60208284031215611e48575f80fd5b5051919050565b5f60208284031215611e5f575f80fd5b8151611caa81611cf1565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107b2576107b2611d99565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611f29575f80fd5b8151611caa81611bf3565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611f845783516001600160a01b0316835260209384019390920191600101611f5d565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220f5857705e218b13e0c5452db8475a56819d36f5ef9386efb155e9e9afb67e5f964736f6c634300081a0033

Deployed Bytecode Sourcemap

16839:9224:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19540:145;;;;;;;;;;;;;:::i;:::-;;4363:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5287:171;;;;;;;;;;-1:-1:-1;5287:171:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;5287:171:0;945:187:1;20456:195:0;;;;;;;;;;-1:-1:-1;20456:195:0;;;;;:::i;:::-;;:::i;17451:28::-;;;;;;;;;;-1:-1:-1;17451:28:0;;;;;;;;;;;17110:41;;;;;;;;;;-1:-1:-1;17110:41:0;;;;-1:-1:-1;;;;;17110:41:0;;;;;;-1:-1:-1;;;;;1679:32:1;;;1661:51;;1649:2;1634:18;17110:41:0;1488:230:1;4690:108:0;;;;;;;;;;-1:-1:-1;4778:12:0;;4690:108;;;1869:25:1;;;1857:2;1842:18;4690:108:0;1723:177:1;5466:541:0;;;;;;;;;;-1:-1:-1;5466:541:0;;;;;:::i;:::-;;:::i;4587:95::-;;;;;;;;;;-1:-1:-1;4587:95:0;;4672:2;2560:36:1;;2548:2;2533:18;4587:95:0;2418:184:1;6015:217:0;;;;;;;;;;-1:-1:-1;6015:217:0;;;;;:::i;:::-;;:::i;17158:28::-;;;;;;;;;;-1:-1:-1;17158:28:0;;;;-1:-1:-1;;;;;17158:28:0;;;20320:128;;;;;;;;;;-1:-1:-1;20320:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;20412:28:0;20388:4;20412:28;;;:19;:28;;;;;;;;;20320:128;17413:31;;;;;;;;;;-1:-1:-1;17413:31:0;;;;;;;;16915:28;;;;;;;;;;;;;;;;4806:127;;;;;;;;;;-1:-1:-1;4806:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4907:18:0;4880:7;4907:18;;;;;;;;;;;;4806:127;2205:103;;;;;;;;;;;;;:::i;16950:75::-;;;;;;;;;;-1:-1:-1;16950:75:0;;;;-1:-1:-1;;;;;16950:75:0;;;1530:87;;;;;;;;;;-1:-1:-1;1603:6:0;;-1:-1:-1;;;;;1603:6:0;1530:87;;17032:69;;;;;;;;;;-1:-1:-1;17032:69:0;;;;-1:-1:-1;;;;;17032:69:0;;;17376:28;;;;;;;;;;;;;;;;4473:106;;;;;;;;;;;;;:::i;19693:89::-;;;;;;;;;;;;;:::i;6240:415::-;;;;;;;;;;-1:-1:-1;6240:415:0;;;;;:::i;:::-;;:::i;4941:177::-;;;;;;;;;;-1:-1:-1;4941:177:0;;;;;:::i;:::-;;:::i;21783:290::-;;;;;;;;;;-1:-1:-1;21783:290:0;;;;;:::i;:::-;;:::i;21448:327::-;;;;;;;;;;-1:-1:-1;21448:327:0;;;;;:::i;:::-;;:::i;20659:416::-;;;;;;;;;;-1:-1:-1;20659:416:0;;;;;:::i;:::-;;:::i;16881:27::-;;;;;;;;;;;;;;;;21083:357;;;;;;;;;;-1:-1:-1;21083:357:0;;;;;:::i;:::-;;:::i;19790:292::-;;;;;;;;;;-1:-1:-1;19790:292:0;;;;;:::i;:::-;;:::i;17342:27::-;;;;;;;;;;;;;;;;20090:222;;;;;;;;;;-1:-1:-1;20090:222:0;;;;;:::i;:::-;;:::i;25392:457::-;;;;;;;;;;-1:-1:-1;25392:457:0;;;;;:::i;:::-;;:::i;5126:153::-;;;;;;;;;;-1:-1:-1;5126:153:0;;;;;:::i;:::-;-1:-1:-1;;;;;5244:18:0;;;5217:7;5244:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5126:153;17302:33;;;;;;;;;;;;;;;;2463:220;;;;;;;;;;-1:-1:-1;2463:220:0;;;;;:::i;:::-;;:::i;25905:155::-;;;;;;;;;;;;;:::i;19540:145::-;1416:13;:11;:13::i;:::-;19601:11:::1;::::0;::::1;;:20;19593:55;;;::::0;-1:-1:-1;;;19593:55:0;;4874:2:1;19593:55:0::1;::::0;::::1;4856:21:1::0;4913:2;4893:18;;;4886:30;-1:-1:-1;;;4932:18:1;;;4925:52;4994:18;;19593:55:0::1;;;;;;;;;19659:11;:18:::0;;-1:-1:-1;;19659:18:0::1;19673:4;19659:18;::::0;;19540:145::o;4363:102::-;4419:13;4452:5;4445:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4363:102;:::o;5287:171::-;5372:4;5389:39;278:10;5412:7;5421:6;5389:8;:39::i;:::-;-1:-1:-1;5446:4:0;5287:171;;;;;:::o;20456:195::-;1416:13;:11;:13::i;:::-;20542:8:::1;:20:::0;;;20573:9:::1;:22:::0;;;20611:32:::1;::::0;;5582:25:1;;;5638:2;5623:18;;5616:34;;;20611:32:0::1;::::0;5555:18:1;20611:32:0::1;;;;;;;20456:195:::0;;:::o;5466:541::-;-1:-1:-1;;;;;5618:19:0;;5574:4;5618:19;;;:11;:19;;;;;;;;278:10;5618:33;;;;;;;;-1:-1:-1;;5666:37:0;;5662:265;;5748:6;5728:16;:26;;5720:79;;;;-1:-1:-1;;;5720:79:0;;5863:2:1;5720:79:0;;;5845:21:1;5902:2;5882:18;;;5875:30;5941:34;5921:18;;;5914:62;-1:-1:-1;;;5992:18:1;;;5985:38;6040:19;;5720:79:0;5661:404:1;5720:79:0;5843:57;5852:6;278:10;5893:6;5874:16;:25;5843:8;:57::i;:::-;5939:36;5949:6;5957:9;5968:6;5939:9;:36::i;:::-;-1:-1:-1;5995:4:0;;5466:541;-1:-1:-1;;;;5466:541:0:o;6015:217::-;278:10;6105:4;6154:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6154:34:0;;;;;;;;;;6105:4;;6122:80;;6145:7;;6154:47;;6191:10;;6154:47;:::i;:::-;6122:8;:80::i;2205:103::-;1416:13;:11;:13::i;:::-;2270:30:::1;2297:1;2270:18;:30::i;:::-;2205:103::o:0;4473:106::-;4531:13;4564:7;4557:14;;;;;:::i;19693:89::-;1416:13;:11;:13::i;:::-;19750:16:::1;:24:::0;;-1:-1:-1;;19750:24:0::1;::::0;;19693:89::o;6240:415::-;278:10;6335:4;6379:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6379:34:0;;;;;;;;;;6432:35;;;;6424:85;;;;-1:-1:-1;;;6424:85:0;;6534:2:1;6424:85:0;;;6516:21:1;6573:2;6553:18;;;6546:30;6612:34;6592:18;;;6585:62;-1:-1:-1;;;6663:18:1;;;6656:35;6708:19;;6424:85:0;6332:401:1;6424:85:0;6545:67;278:10;6568:7;6596:15;6577:16;:34;6545:8;:67::i;:::-;-1:-1:-1;6643:4:0;;6240:415;-1:-1:-1;;;6240:415:0:o;4941:177::-;5029:4;5046:42;278:10;5070:9;5081:6;5046:9;:42::i;21783:290::-;1416:13;:11;:13::i;:::-;21899:6:::1;21883:13;4778:12:::0;;;4690:108;21883:13:::1;:22;;;;:::i;:::-;21871:9;:34;21863:109;;;::::0;-1:-1:-1;;;21863:109:0;;7162:2:1;21863:109:0::1;::::0;::::1;7144:21:1::0;7201:2;7181:18;;;7174:30;7240:34;7220:18;;;7213:62;7311:32;7291:18;;;7284:60;7361:19;;21863:109:0::1;6960:426:1::0;21863:109:0::1;21983:18;:30:::0;;;22029:36:::1;::::0;1869:25:1;;;22029:36:0::1;::::0;1857:2:1;1842:18;22029:36:0::1;;;;;;;21783:290:::0;:::o;21448:327::-;1416:13;:11;:13::i;:::-;21615:7:::1;21598:13;4778:12:::0;;;4690:108;21598:13:::1;21582:29;::::0;:13;:29:::1;:::i;:::-;21581:41;;;;:::i;:::-;21566:12;:56:::0;21684:7;21667:13:::1;4778:12:::0;;;4690:108;21667:13:::1;21650:30;::::0;:14;:30:::1;:::i;:::-;21649:42;;;;:::i;:::-;21633:13;:58:::0;21707:60:::1;::::0;;7766:25:1;;;7822:2;7807:18;;7800:34;;;7850:18;;;7843:34;;;21707:60:0::1;::::0;7754:2:1;7739:18;21707:60:0::1;;;;;;;21448:327:::0;;;:::o;20659:416::-;1416:13;:11;:13::i;:::-;20774:15:::1;::::0;-1:-1:-1;;;;;20774:15:0;;::::1;20754:35:::0;;::::1;::::0;20746:79:::1;;;::::0;-1:-1:-1;;;20746:79:0;;8090:2:1;20746:79:0::1;::::0;::::1;8072:21:1::0;8129:2;8109:18;;;8102:30;8168:33;8148:18;;;8141:61;8219:18;;20746:79:0::1;7888:355:1::0;20746:79:0::1;-1:-1:-1::0;;;;;20844:30:0;::::1;20836:77;;;;-1:-1:-1::0;;;20836:77:0::1;;;;;;;:::i;:::-;20924:15;:34:::0;;-1:-1:-1;;;;;;20924:34:0::1;-1:-1:-1::0;;;;;20924:34:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;20969:36:0;;;:19:::1;:36;::::0;;;;;:43;;-1:-1:-1;;20969:43:0::1;-1:-1:-1::0;20969:43:0::1;::::0;;21051:15;;21028:39;;21051:15;::::1;::::0;21028:39:::1;::::0;-1:-1:-1;21028:39:0::1;20659:416:::0;:::o;21083:357::-;1416:13;:11;:13::i;:::-;21180:9:::1;::::0;-1:-1:-1;;;;;21180:9:0;;::::1;21166:23:::0;;::::1;::::0;21158:67:::1;;;::::0;-1:-1:-1;;;21158:67:0;;8090:2:1;21158:67:0::1;::::0;::::1;8072:21:1::0;8129:2;8109:18;;;8102:30;8168:33;8148:18;;;8141:61;8219:18;;21158:67:0::1;7888:355:1::0;21158:67:0::1;-1:-1:-1::0;;;;;21244:24:0;::::1;21236:71;;;;-1:-1:-1::0;;;21236:71:0::1;;;;;;;:::i;:::-;21318:9;:22:::0;;-1:-1:-1;;;;;;21318:22:0::1;-1:-1:-1::0;;;;;21318:22:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;21351:30:0;;;:19:::1;:30;::::0;;;;;:37;;-1:-1:-1;;21351:37:0::1;-1:-1:-1::0;21351:37:0::1;::::0;;21404:28;::::1;::::0;-1:-1:-1;21404:28:0::1;21083:357:::0;:::o;19790:292::-;1416:13;:11;:13::i;:::-;-1:-1:-1;;;;;19885:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;19877:95:::1;;;::::0;-1:-1:-1;;;19877:95:0;;8853:2:1;19877:95:0::1;::::0;::::1;8835:21:1::0;8892:2;8872:18;;;8865:30;8931:34;8911:18;;;8904:62;-1:-1:-1;;;8982:18:1;;;8975:40;9032:19;;19877:95:0::1;8651:406:1::0;19877:95:0::1;-1:-1:-1::0;;;;;19983:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19983:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20040:34;;1085:41:1;;;20040:34:0::1;::::0;1058:18:1;20040:34:0::1;;;;;;;19790:292:::0;;:::o;20090:222::-;1416:13;:11;:13::i;:::-;-1:-1:-1;;;;;20183:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;:33;::::1;;:23;::::0;;::::1;:33;;::::0;20175:86:::1;;;::::0;-1:-1:-1;;;20175:86:0;;9264:2:1;20175:86:0::1;::::0;::::1;9246:21:1::0;9303:2;9283:18;;;9276:30;9342:34;9322:18;;;9315:62;-1:-1:-1;;;9393:18:1;;;9386:38;9441:19;;20175:86:0::1;9062:404:1::0;20175:86:0::1;-1:-1:-1::0;;;;;20272:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:32;;-1:-1:-1;;20272:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20090:222::o;25392:457::-;25456:10;-1:-1:-1;;;;;25487:20:0;;25479:59;;;;-1:-1:-1;;;25479:59:0;;9673:2:1;25479:59:0;;;9655:21:1;9712:2;9692:18;;;9685:30;9751:28;9731:18;;;9724:56;9797:18;;25479:59:0;9471:350:1;25479:59:0;25575:4;-1:-1:-1;;;;;25557:23:0;;;25549:73;;;;-1:-1:-1;;;25549:73:0;;10028:2:1;25549:73:0;;;10010:21:1;10067:2;10047:18;;;10040:30;10106:34;10086:18;;;10079:62;-1:-1:-1;;;10157:18:1;;;10150:35;10202:19;;25549:73:0;9826:401:1;25549:73:0;25660:39;;-1:-1:-1;;;25660:39:0;;25693:4;25660:39;;;1661:51:1;25633:24:0;;-1:-1:-1;;;;;25660:24:0;;;;;1634:18:1;;25660:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25750:9;;25718:61;;-1:-1:-1;;;25718:61:0;;-1:-1:-1;;;;;25750:9:0;;;25718:61;;;10595:51:1;10662:18;;;10655:34;;;25633:66:0;;-1:-1:-1;25718:23:0;;;;;10568:18:1;;25718:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25795:46;;;-1:-1:-1;;;;;10613:32:1;;10595:51;;10677:2;10662:18;;10655:34;;;25710:69:0;;-1:-1:-1;25795:46:0;;10568:18:1;25795:46:0;;;;;;;25468:381;25392:457;;;:::o;2463:220::-;1416:13;:11;:13::i;:::-;-1:-1:-1;;;;;2548:22:0;::::1;2544:93;;2594:31;::::0;-1:-1:-1;;;2594:31:0;;2622:1:::1;2594:31;::::0;::::1;1661:51:1::0;1634:18;;2594:31:0::1;1488:230:1::0;2544:93:0::1;2647:28;2666:8;2647:18;:28::i;:::-;2463:220:::0;:::o;25905:155::-;25997:15;;25989:63;;25953:12;;-1:-1:-1;;;;;25997:15:0;;26026:21;;25953:12;25989:63;25953:12;25989:63;26026:21;25997:15;25989:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;25905:155:0:o;1695:166::-;1603:6;;-1:-1:-1;;;;;1603:6:0;278:10;1755:23;1751:103;;1802:40;;-1:-1:-1;;;1802:40:0;;278:10;1802:40;;;1661:51:1;1634:18;;1802:40:0;1488:230:1;7777:346:0;-1:-1:-1;;;;;7879:19:0;;7871:68;;;;-1:-1:-1;;;7871:68:0;;11362:2:1;7871:68:0;;;11344:21:1;11401:2;11381:18;;;11374:30;11440:34;11420:18;;;11413:62;-1:-1:-1;;;11491:18:1;;;11484:34;11535:19;;7871:68:0;11160:400:1;7871:68:0;-1:-1:-1;;;;;7958:21:0;;7950:68;;;;-1:-1:-1;;;7950:68:0;;11767:2:1;7950:68:0;;;11749:21:1;11806:2;11786:18;;;11779:30;11845:34;11825:18;;;11818:62;-1:-1:-1;;;11896:18:1;;;11889:32;11938:19;;7950:68:0;11565:398:1;7950:68:0;-1:-1:-1;;;;;8031:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8083:32;;1869:25:1;;;8083:32:0;;1842:18:1;8083:32:0;;;;;;;7777:346;;;:::o;22081:2144::-;-1:-1:-1;;;;;22179:18:0;;22171:68;;;;-1:-1:-1;;;22171:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22258:16:0;;22250:64;;;;-1:-1:-1;;;22250:64:0;;;;;;;:::i;:::-;22333:11;;;;;:35;;-1:-1:-1;;;;;;22348:20:0;;;;;;:14;:20;;;;;;;;22333:35;:57;;;-1:-1:-1;;;;;;22372:18:0;;;;;;:14;:18;;;;;;;;22333:57;22325:90;;;;-1:-1:-1;;;22325:90:0;;12980:2:1;22325:90:0;;;12962:21:1;13019:2;12999:18;;;12992:30;-1:-1:-1;;;13038:18:1;;;13031:50;13098:18;;22325:90:0;12778:344:1;22325:90:0;22432:6;22442:1;22432:11;22428:93;;22460:28;22476:4;22482:2;22486:1;22460:15;:28::i;:::-;22081:2144;;;:::o;22428:93::-;22537:16;;;;;;;22533:735;;;22582:13;;-1:-1:-1;;;;;22574:21:0;;;22582:13;;22574:21;:49;;;;-1:-1:-1;;;;;;22600:23:0;;;;;;:19;:23;;;;;;;;22599:24;22574:49;22570:363;;;22662:12;;22652:6;:22;;22644:88;;;;-1:-1:-1;;;22644:88:0;;13329:2:1;22644:88:0;;;13311:21:1;13368:2;13348:18;;;13341:30;13407:34;13387:18;;;13380:62;-1:-1:-1;;;13458:18:1;;;13451:51;13519:19;;22644:88:0;13127:417:1;22644:88:0;22570:363;;;22764:13;;-1:-1:-1;;;;;22758:19:0;;;22764:13;;22758:19;:49;;;;-1:-1:-1;;;;;;22782:25:0;;;;;;:19;:25;;;;;;;;22781:26;22758:49;22754:179;;;22846:12;;22836:6;:22;;22828:89;;;;-1:-1:-1;;;22828:89:0;;13751:2:1;22828:89:0;;;13733:21:1;13790:2;13770:18;;;13763:30;13829:34;13809:18;;;13802:62;-1:-1:-1;;;13880:18:1;;;13873:52;13942:19;;22828:89:0;13549:418:1;22828:89:0;-1:-1:-1;;;;;22972:25:0;;;;;;:19;:25;;;;;;;;22971:26;:60;;;;-1:-1:-1;23015:15:0;;-1:-1:-1;;;;;23001:30:0;;;23015:15;;23001:30;;22971:60;:92;;;;-1:-1:-1;23049:13:0;;-1:-1:-1;;;;;23035:28:0;;;23049:13;;23035:28;;22971:92;:141;;;;-1:-1:-1;;;;;;23089:23:0;;;;;;:19;:23;;;;;;;;23088:24;22971:141;22949:308;;;23181:13;;23171:6;23155:13;23165:2;-1:-1:-1;;;;;4907:18:0;4880:7;4907:18;;;;;;;;;;;;4806:127;23155:13;:22;;;;:::i;:::-;:39;;23147:94;;;;-1:-1:-1;;;23147:94:0;;14174:2:1;23147:94:0;;;14156:21:1;14213:2;14193:18;;;14186:30;14252:34;14232:18;;;14225:62;-1:-1:-1;;;14303:18:1;;;14296:40;14353:19;;23147:94:0;13972:406:1;23147:94:0;23329:4;23280:28;4907:18;;;;;;;;;;;23387;;23363:42;;;;;;;23422:20;;-1:-1:-1;23434:8:0;;-1:-1:-1;;;23434:8:0;;;;23433:9;23422:20;:43;;;;-1:-1:-1;23452:13:0;;-1:-1:-1;;;;;23446:19:0;;;23452:13;;23446:19;23422:43;23418:151;;;23482:8;:15;;-1:-1:-1;;;;23482:15:0;-1:-1:-1;;;23482:15:0;;;23514:10;:8;:10::i;:::-;23541:8;:16;;-1:-1:-1;;;;23541:16:0;;;23418:151;23597:8;;-1:-1:-1;;;;;23622:25:0;;23581:12;23622:25;;;:19;:25;;;;;;23597:8;-1:-1:-1;;;23597:8:0;;;;;23596:9;;23622:25;;:52;;-1:-1:-1;;;;;;23651:23:0;;;;;;:19;:23;;;;;;;;23622:52;23618:100;;;-1:-1:-1;23701:5:0;23618:100;23734:7;23730:442;;;23797:13;;23758:12;;-1:-1:-1;;;;;23797:13:0;;;23789:21;;;;23785:242;;23860:3;23848:8;;23839:6;:17;;;;:::i;:::-;23838:25;;;;:::i;:::-;23831:32;;23785:242;;;23895:13;;-1:-1:-1;;;;;23895:13:0;;;23889:19;;;;23885:142;;23959:3;23946:9;;23937:6;:18;;;;:::i;23885:142::-;-1:-1:-1;24010:1:0;23885:142;24041:14;24051:4;24041:14;;:::i;:::-;;-1:-1:-1;24074:8:0;;24070:91;;24103:42;24119:4;24133;24140;24103:15;:42::i;:::-;23743:429;23730:442;24184:33;24200:4;24206:2;24210:6;24184:15;:33::i;:::-;22160:2065;;;22081:2144;;;:::o;2843:191::-;2936:6;;;-1:-1:-1;;;;;2953:17:0;;;-1:-1:-1;;;;;;2953:17:0;;;;;;;2986:40;;2936:6;;;2953:17;2936:6;;2986:40;;2917:16;;2986:40;2906:128;2843:191;:::o;6663:699::-;-1:-1:-1;;;;;6769:20:0;;6761:70;;;;-1:-1:-1;;;6761:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6850:23:0;;6842:71;;;;-1:-1:-1;;;6842:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7010:17:0;;6986:21;7010:17;;;;;;;;;;;7046:23;;;;7038:74;;;;-1:-1:-1;;;7038:74:0;;14718:2:1;7038:74:0;;;14700:21:1;14757:2;14737:18;;;14730:30;14796:34;14776:18;;;14769:62;-1:-1:-1;;;14847:18:1;;;14840:36;14893:19;;7038:74:0;14516:402:1;7038:74:0;-1:-1:-1;;;;;7148:17:0;;;:9;:17;;;;;;;;;;;7168:22;;;7148:42;;7212:20;;;;;;;;:30;;7184:6;;7148:9;7212:30;;7184:6;;7212:30;:::i;:::-;;;;;;;;7277:9;-1:-1:-1;;;;;7260:35:0;7269:6;-1:-1:-1;;;;;7260:35:0;;7288:6;7260:35;;;;1869:25:1;;1857:2;1842:18;;1723:177;7260:35:0;;;;;;;;6750:612;6663:699;;;:::o;24667:717::-;24755:4;24706:28;4907:18;;;;;;;;;;;;24778:25;;;24774:64;;24820:7;24667:717::o;24774:64::-;24877:18;;:23;;24898:2;24877:23;:::i;:::-;24854:20;:46;24850:125;;;24940:18;;:23;;24961:2;24940:23;:::i;:::-;24917:46;;24850:125;24987:36;25002:20;24987:14;:36::i;:::-;-1:-1:-1;25057:21:0;25091:25;25148:2;25120:24;25057:21;25143:1;25120:24;:::i;:::-;25119:31;;;;:::i;:::-;25091:59;-1:-1:-1;25161:19:0;25212:2;25184:24;:20;25207:1;25184:24;:::i;:::-;25183:31;;;;:::i;:::-;25289:15;;25161:53;;-1:-1:-1;25273:52:0;;-1:-1:-1;;;;;25289:15:0;25307:17;25273:7;:52::i;:::-;25352:9;;25336:40;;-1:-1:-1;;;;;25352:9:0;25364:11;25336:7;:40::i;24233:426::-;24321:16;;;24335:1;24321:16;;;;;;;;24297:21;;24321:16;;;;;;;;;;-1:-1:-1;24321:16:0;24297:40;;24366:4;24348;24353:1;24348:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24348:23:0;;;:7;;;;;;;;;;:23;;;;24392:15;;:22;;;-1:-1:-1;;;24392:22:0;;;;:15;;;;;:20;;:22;;;;;24348:7;;24392:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24382:4;24387:1;24382:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24382:32:0;;;:7;;;;;;;;;:32;24427:15;;:224;;-1:-1:-1;;;24427:224:0;;:15;;;:66;;:224;;24508:11;;24427:15;;24578:4;;24605;;24625:15;;24427:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19218:314;19331:6;19306:21;:31;;19298:73;;;;-1:-1:-1;;;19298:73:0;;16609:2:1;19298:73:0;;;16591:21:1;16648:2;16628:18;;;16621:30;16687:31;16667:18;;;16660:59;16736:18;;19298:73:0;16407:353:1;19298:73:0;19385:12;19402:9;-1:-1:-1;;;;;19402:14:0;19424:6;19402:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19384:51;;;19454:7;19446:78;;;;-1:-1:-1;;;19446:78:0;;16967:2:1;19446:78:0;;;16949:21:1;17006:2;16986:18;;;16979:30;17045:34;17025:18;;;17018:62;17116:28;17096:18;;;17089:56;17162:19;;19446:78:0;16765:422:1;14:418;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1137:346::-;1205:6;1213;1266:2;1254:9;1245:7;1241:23;1237:32;1234:52;;;1282:1;1279;1272:12;1234:52;-1:-1:-1;;1327:23:1;;;1447:2;1432:18;;;1419:32;;-1:-1:-1;1137:346:1:o;1905:508::-;1982:6;1990;1998;2051:2;2039:9;2030:7;2026:23;2022:32;2019:52;;;2067:1;2064;2057:12;2019:52;2106:9;2093:23;2125:31;2150:5;2125:31;:::i;:::-;2175:5;-1:-1:-1;2232:2:1;2217:18;;2204:32;2245:33;2204:32;2245:33;:::i;:::-;1905:508;;2297:7;;-1:-1:-1;;;2377:2:1;2362:18;;;;2349:32;;1905:508::o;2815:247::-;2874:6;2927:2;2915:9;2906:7;2902:23;2898:32;2895:52;;;2943:1;2940;2933:12;2895:52;2982:9;2969:23;3001:31;3026:5;3001:31;:::i;:::-;3051:5;2815:247;-1:-1:-1;;;2815:247:1:o;3067:226::-;3126:6;3179:2;3167:9;3158:7;3154:23;3150:32;3147:52;;;3195:1;3192;3185:12;3147:52;-1:-1:-1;3240:23:1;;3067:226;-1:-1:-1;3067:226:1:o;3298:466::-;3375:6;3383;3391;3444:2;3432:9;3423:7;3419:23;3415:32;3412:52;;;3460:1;3457;3450:12;3412:52;-1:-1:-1;;3505:23:1;;;3625:2;3610:18;;3597:32;;-1:-1:-1;3728:2:1;3713:18;;;3700:32;;3298:466;-1:-1:-1;3298:466:1:o;3769:118::-;3855:5;3848:13;3841:21;3834:5;3831:32;3821:60;;3877:1;3874;3867:12;3892:382;3957:6;3965;4018:2;4006:9;3997:7;3993:23;3989:32;3986:52;;;4034:1;4031;4024:12;3986:52;4073:9;4060:23;4092:31;4117:5;4092:31;:::i;:::-;4142:5;-1:-1:-1;4199:2:1;4184:18;;4171:32;4212:30;4171:32;4212:30;:::i;:::-;4261:7;4251:17;;;3892:382;;;;;:::o;4279:388::-;4347:6;4355;4408:2;4396:9;4387:7;4383:23;4379:32;4376:52;;;4424:1;4421;4414:12;4376:52;4463:9;4450:23;4482:31;4507:5;4482:31;:::i;:::-;4532:5;-1:-1:-1;4589:2:1;4574:18;;4561:32;4602:33;4561:32;4602:33;:::i;5023:380::-;5102:1;5098:12;;;;5145;;;5166:61;;5220:4;5212:6;5208:17;5198:27;;5166:61;5273:2;5265:6;5262:14;5242:18;5239:38;5236:161;;5319:10;5314:3;5310:20;5307:1;5300:31;5354:4;5351:1;5344:15;5382:4;5379:1;5372:15;5236:161;;5023:380;;;:::o;6070:127::-;6131:10;6126:3;6122:20;6119:1;6112:31;6162:4;6159:1;6152:15;6186:4;6183:1;6176:15;6202:125;6267:9;;;6288:10;;;6285:36;;;6301:18;;:::i;6738:217::-;6778:1;6804;6794:132;;6848:10;6843:3;6839:20;6836:1;6829:31;6883:4;6880:1;6873:15;6911:4;6908:1;6901:15;6794:132;-1:-1:-1;6940:9:1;;6738:217::o;7391:168::-;7464:9;;;7495;;7512:15;;;7506:22;;7492:37;7482:71;;7533:18;;:::i;8248:398::-;8450:2;8432:21;;;8489:2;8469:18;;;8462:30;8528:34;8523:2;8508:18;;8501:62;-1:-1:-1;;;8594:2:1;8579:18;;8572:32;8636:3;8621:19;;8248:398::o;10232:184::-;10302:6;10355:2;10343:9;10334:7;10330:23;10326:32;10323:52;;;10371:1;10368;10361:12;10323:52;-1:-1:-1;10394:16:1;;10232:184;-1:-1:-1;10232:184:1:o;10700:245::-;10767:6;10820:2;10808:9;10799:7;10795:23;10791:32;10788:52;;;10836:1;10833;10826:12;10788:52;10868:9;10862:16;10887:28;10909:5;10887:28;:::i;11968:401::-;12170:2;12152:21;;;12209:2;12189:18;;;12182:30;12248:34;12243:2;12228:18;;12221:62;-1:-1:-1;;;12314:2:1;12299:18;;12292:35;12359:3;12344:19;;11968:401::o;12374:399::-;12576:2;12558:21;;;12615:2;12595:18;;;12588:30;12654:34;12649:2;12634:18;;12627:62;-1:-1:-1;;;12720:2:1;12705:18;;12698:33;12763:3;12748:19;;12374:399::o;14383:128::-;14450:9;;;14471:11;;;14468:37;;;14485:18;;:::i;15055:127::-;15116:10;15111:3;15107:20;15104:1;15097:31;15147:4;15144:1;15137:15;15171:4;15168:1;15161:15;15187:251;15257:6;15310:2;15298:9;15289:7;15285:23;15281:32;15278:52;;;15326:1;15323;15316:12;15278:52;15358:9;15352:16;15377:31;15402:5;15377:31;:::i;15443:959::-;15705:4;15753:3;15742:9;15738:19;15784:6;15773:9;15766:25;15827:6;15822:2;15811:9;15807:18;15800:34;15870:3;15865:2;15854:9;15850:18;15843:31;15894:6;15929;15923:13;15960:6;15952;15945:22;15998:3;15987:9;15983:19;15976:26;;16037:2;16029:6;16025:15;16011:29;;16058:1;16068:195;16082:6;16079:1;16076:13;16068:195;;;16147:13;;-1:-1:-1;;;;;16143:39:1;16131:52;;16212:2;16238:15;;;;16203:12;;;;16179:1;16097:9;16068:195;;;-1:-1:-1;;;;;;;16319:32:1;;;;16314:2;16299:18;;16292:60;-1:-1:-1;;16383:3:1;16368:19;16361:35;16280:3;15443:959;-1:-1:-1;;;15443:959:1:o

Swarm Source

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