ETH Price: $3,091.48 (-1.36%)

Token

Cycliq (CLIQ)
 

Overview

Max Total Supply

1,128,713.765130928792793393 CLIQ

Holders

234

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000061663 CLIQ

Value
$0.00
0x0e02697ffb42a68e3d878e419a4436b8b84ea99b
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:
Cycliq

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-31
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

abstract contract Ownable is Context {
    address private _owner;

    error OwnableUnauthorizedAccount(address account);
    error OwnableInvalidOwner(address owner);

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }
    
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/**
 * @dev Standard ERC20 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.
 */
interface IERC20Errors {
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Indicates a failed `decreaseAllowance` request.
     */
    error ERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `value`.
     */
    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `value`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `value`.
     */
    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `requestedDecrease`.
     *
     * NOTE: Although this function is designed to avoid double spending with {approval},
     * it can still be frontrunned, preventing any attempt of allowance reduction.
     */
    function decreaseAllowance(address spender, uint256 requestedDecrease) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance < requestedDecrease) {
            revert ERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);
        }
        unchecked {
            _approve(owner, spender, currentAllowance - requestedDecrease);
        }

        return true;
    }

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    /**
     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from` (or `to`) is
     * the zero address. All customizations to transfers, mints, and burns should be done by overriding this function.
     *
     * Emits a {Transfer} event.
     */
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    /**
     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
     * Relies on the `_update` mechanism
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    /**
     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
     * Relies on the `_update` mechanism.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead
     */
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    /**
     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     *
     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    /**
     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
     *
     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
     * `Approval` event during `transferFrom` operations.
     *
     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to true
     * using the following override:
     * ```
     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
     *     super._approve(owner, spender, value, true);
     * }
     * ```
     *
     * Requirements are the same as {_approve}.
     */
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `value`.
     *
     * Does not update the allowance value in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Ownable, ERC20 {
    /**
     * @dev Destroys a `value` amount of tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 value) public virtual {
        _burn(_msgSender(), value);
    }

    /**
     * @dev Destroys a `value` amount of tokens from `account`, deducting from
     * the caller's allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `value`.
     */
    function burnFrom(address account, uint256 value) public virtual {
        _spendAllowance(account, _msgSender(), value);
        _burn(account, value);
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Cycliq is ERC20Burnable {
    IUniswapV2Router02 private uniV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniV2EthPool;

    uint256 private initialPoolBlock;
    uint256 private limitCheckBlockCount = 8;
    uint256 private highTaxBlockCount = 75;
    uint256 private maxTxWalletLimit = 1;
    uint256 private swapThreshold = 3000 * 1e18;
    bool public live;

    uint256 private initialSupply = 1000000 * 1e18;
    mapping (address => bool) public isInternal;
    mapping (address => bool) public isPool;
    mapping (address => bool) public botList;

    bool private swapping;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address public bondingContract;
    address private marketing = 0xcf57ff60410d32d52357772363cd4CD57e70D312;
    address private community = 0xa3297BD4CfB1AC966b6Cdc7e81FD239016Bd6Fc2;

    constructor() ERC20("Cycliq", "CLIQ") {
        isInternal[_msgSender()] = true;
        isInternal[address(this)] = true;
        _mint(_msgSender(), initialSupply);

        uniV2EthPool = IUniswapV2Factory(uniV2Router.factory())
            .createPair(address(this), uniV2Router.WETH());
        isPool[uniV2EthPool] = true;
    }

    receive() external payable {}

    function transfer(address to, uint256 value) public override returns (bool) {
        address from = _msgSender();
        _customizedTransfer(from, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _customizedTransfer(from, to, value);
        return true;
    }

    function _customizedTransfer(address from, address to, uint256 value) internal {
        if(from == owner() && to == uniV2EthPool && initialPoolBlock == 0) {
            initialPoolBlock = block.number;
        }

        if(!isInternal[from] && !isInternal[to]) {
            if(initialPoolBlock > 0 && block.number <= initialPoolBlock + limitCheckBlockCount)
                require(value <= totalSupply() * maxTxWalletLimit / 100, "Exceeds max tx limit.");
            
            uint256 txFee = live ? 0 : 5;

            if(initialPoolBlock > 0) {
                if(from == uniV2EthPool && (block.number == initialPoolBlock || block.number == initialPoolBlock + 1)) {
                    botList[to] = true;
                } else if(!live && block.number <= initialPoolBlock + highTaxBlockCount )
                    txFee = 25;
            }
            
            if (botList[from] || botList[to])
                txFee = 50;

            if(txFee <= 25 && !swapping && balanceOf(address(this)) >= swapThreshold && msg.sender != uniV2EthPool)
                autoSwap(swapThreshold);

            uint256 feeAmount = value * txFee / 100;
            uint256 transferAmount = value - feeAmount;
            
            if(!isPool[to] && initialPoolBlock > 0 && block.number <= initialPoolBlock + limitCheckBlockCount)
                require(balanceOf(to) + transferAmount <= totalSupply() * maxTxWalletLimit / 100, "Exceeds max wallet limit.");
            
            _transfer(from, to, transferAmount);

            if(feeAmount > 0)
                _transfer(from, address(this), feeAmount);
        } else {
            _transfer(from, to, value);
        }
    }

    function autoSwap(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount > 0) {
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = uniV2Router.WETH();
            _approve(address(this), address(uniV2Router), tokenAmount);
            uniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0,
                path,
                address(this),
                block.timestamp + 10 minutes);

            uint256 v3LpPct = 30;
            if(block.number > initialPoolBlock + highTaxBlockCount )
                v3LpPct = 50;
            uint256 balance = address(this).balance;
            uint256 v3LpFund = balance * v3LpPct / 100;
            uint256 marketingFund = (balance - v3LpFund) * 75 / 100;
            uint256 communityFund = balance - v3LpFund - marketingFund;
            if(balance > 0) {
                payable(bondingContract).transfer(v3LpFund);
                payable(marketing).transfer(marketingFund);
                payable(community).transfer(communityFund);
            }
        }
    }

    function cleanup(uint256 amount) external onlyOwner {
        autoSwap(amount);
    }

    function setLive() external onlyOwner {
        if(!live) {
            live = true;
        }
    }
    
    function setBondingContract(address _bondingContract) external onlyOwner {
        bondingContract = _bondingContract;
    }

    function setInternal(address wallet, bool flag) external onlyOwner {
        isInternal[wallet] = flag;
    }

    function setPool(address pool, bool flag) external onlyOwner {
        isPool[pool] = flag;
    }

    function mint(address account, uint256 amount) external {
        require(msg.sender == bondingContract, "You have not permission.");
        _mint(account, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"name":"ERC20FailedDecreaseAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bondingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"botList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"cleanup","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":"requestedDecrease","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isInternal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"address","name":"_bondingContract","type":"address"}],"name":"setBondingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setInternal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setPool","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"uniV2EthPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600955604b600a556001600b5568a2a15d09519be00000600c5569d3c21bcecceda1000000600e5573cf57ff60410d32d52357772363cd4cd57e70d31260135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a3297bd4cfb1ac966b6cdc7e81fd239016bd6fc260145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000136575f80fd5b506040518060400160405280600681526020017f4379636c697100000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f434c495100000000000000000000000000000000000000000000000000000000815250620001c3620001b76200052060201b60201c565b6200052760201b60201c565b8160049081620001d4919062000afd565b508060059081620001e6919062000afd565b5050506001600f5f620001fe6200052060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620002c5620002b66200052060201b60201c565b600e54620005e860201b60201c565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000330573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000356919062000c46565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000403919062000c46565b6040518363ffffffff1660e01b81526004016200042292919062000c87565b6020604051808303815f875af11580156200043f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000465919062000c46565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160105f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000d9b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200065b575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000652919062000cb2565b60405180910390fd5b6200066e5f83836200067260201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620006c6578060035f828254620006b9919062000cfa565b9250508190555062000799565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000753578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200074a9392919062000d45565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007e2578060035f82825403925050819055506200082d565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200088c919062000d80565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200091557607f821691505b6020821081036200092b576200092a620008d0565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200098f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000952565b6200099b868362000952565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009e5620009df620009d984620009b3565b620009bc565b620009b3565b9050919050565b5f819050919050565b62000a0083620009c5565b62000a1862000a0f82620009ec565b8484546200095e565b825550505050565b5f90565b62000a2e62000a20565b62000a3b818484620009f5565b505050565b5b8181101562000a625762000a565f8262000a24565b60018101905062000a41565b5050565b601f82111562000ab15762000a7b8162000931565b62000a868462000943565b8101602085101562000a96578190505b62000aae62000aa58562000943565b83018262000a40565b50505b505050565b5f82821c905092915050565b5f62000ad35f198460080262000ab6565b1980831691505092915050565b5f62000aed838362000ac2565b9150826002028217905092915050565b62000b088262000899565b67ffffffffffffffff81111562000b245762000b23620008a3565b5b62000b308254620008fd565b62000b3d82828562000a66565b5f60209050601f83116001811462000b73575f841562000b5e578287015190505b62000b6a858262000ae0565b86555062000bd9565b601f19841662000b838662000931565b5f5b8281101562000bac5784890151825560018201915060208501945060208101905062000b85565b8683101562000bcc578489015162000bc8601f89168262000ac2565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000c108262000be5565b9050919050565b62000c228162000c04565b811462000c2d575f80fd5b50565b5f8151905062000c408162000c17565b92915050565b5f6020828403121562000c5e5762000c5d62000be1565b5b5f62000c6d8482850162000c30565b91505092915050565b62000c818162000c04565b82525050565b5f60408201905062000c9c5f83018562000c76565b62000cab602083018462000c76565b9392505050565b5f60208201905062000cc75f83018462000c76565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000d0682620009b3565b915062000d1383620009b3565b925082820190508082111562000d2e5762000d2d62000ccd565b5b92915050565b62000d3f81620009b3565b82525050565b5f60608201905062000d5a5f83018662000c76565b62000d69602083018562000d34565b62000d78604083018462000d34565b949350505050565b5f60208201905062000d955f83018462000d34565b92915050565b6127d08062000da95f395ff3fe6080604052600436106101ba575f3560e01c8063715018a6116100eb578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610623578063e999720f1461065f578063eecaab0614610689578063f2fde38b146106b1576101c1565b8063a9059cbb146105a9578063b98de7c7146105e5578063cdf0ff7c146105fb576101c1565b80638f16c41c116100c55780638f16c41c146104dd578063957aa58c1461051957806395d89b4114610543578063a457c2d71461056d576101c1565b8063715018a61461047557806379cc67901461048b5780638da5cb5b146104b3576101c1565b8063395093511161015857806342966c681161013257806342966c68146103ab57806357bf549f146103d35780635b16ebb7146103fd57806370a0823114610439576101c1565b8063395093511461030b57806340c10f191461034757806341d6e7da1461036f576101c1565b806318160ddd1161019457806318160ddd1461025357806320bec12c1461027d57806323b872dd146102a5578063313ce567146102e1576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630aa400181461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d96106d9565b6040516101e69190611fc3565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612074565b610769565b60405161022291906120cc565b60405180910390f35b348015610236575f80fd5b50610251600480360381019061024c91906120e5565b61078b565b005b34801561025e575f80fd5b5061026761079f565b604051610274919061211f565b60405180910390f35b348015610288575f80fd5b506102a3600480360381019061029e9190612162565b6107a8565b005b3480156102b0575f80fd5b506102cb60048036038101906102c691906121a0565b610808565b6040516102d891906120cc565b60405180910390f35b3480156102ec575f80fd5b506102f5610836565b604051610302919061220b565b60405180910390f35b348015610316575f80fd5b50610331600480360381019061032c9190612074565b61083e565b60405161033e91906120cc565b60405180910390f35b348015610352575f80fd5b5061036d60048036038101906103689190612074565b610874565b005b34801561037a575f80fd5b5061039560048036038101906103909190612224565b610912565b6040516103a291906120cc565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc91906120e5565b61092f565b005b3480156103de575f80fd5b506103e7610943565b6040516103f4919061225e565b60405180910390f35b348015610408575f80fd5b50610423600480360381019061041e9190612224565b610968565b60405161043091906120cc565b60405180910390f35b348015610444575f80fd5b5061045f600480360381019061045a9190612224565b610985565b60405161046c919061211f565b60405180910390f35b348015610480575f80fd5b506104896109cb565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612074565b6109de565b005b3480156104be575f80fd5b506104c76109fe565b6040516104d4919061225e565b60405180910390f35b3480156104e8575f80fd5b5061050360048036038101906104fe9190612224565b610a25565b60405161051091906120cc565b60405180910390f35b348015610524575f80fd5b5061052d610a42565b60405161053a91906120cc565b60405180910390f35b34801561054e575f80fd5b50610557610a54565b6040516105649190611fc3565b60405180910390f35b348015610578575f80fd5b50610593600480360381019061058e9190612074565b610ae4565b6040516105a091906120cc565b60405180910390f35b3480156105b4575f80fd5b506105cf60048036038101906105ca9190612074565b610b5f565b6040516105dc91906120cc565b60405180910390f35b3480156105f0575f80fd5b506105f9610b81565b005b348015610606575f80fd5b50610621600480360381019061061c9190612162565b610bb9565b005b34801561062e575f80fd5b5061064960048036038101906106449190612277565b610c19565b604051610656919061211f565b60405180910390f35b34801561066a575f80fd5b50610673610c9b565b604051610680919061225e565b60405180910390f35b348015610694575f80fd5b506106af60048036038101906106aa9190612224565b610cc1565b005b3480156106bc575f80fd5b506106d760048036038101906106d29190612224565b610d0d565b005b6060600480546106e8906122e2565b80601f0160208091040260200160405190810160405280929190818152602001828054610714906122e2565b801561075f5780601f106107365761010080835404028352916020019161075f565b820191905f5260205f20905b81548152906001019060200180831161074257829003601f168201915b5050505050905090565b5f80610773610d91565b9050610780818585610d98565b600191505092915050565b610793610daa565b61079c81610e31565b50565b5f600354905090565b6107b0610daa565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f80610812610d91565b905061081f85828561126f565b61082a858585611301565b60019150509392505050565b5f6012905090565b5f80610848610d91565b905061086981858561085a8589610c19565b610864919061233f565b610d98565b600191505092915050565b601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb906123bc565b60405180910390fd5b61090e828261189f565b5050565b6011602052805f5260405f205f915054906101000a900460ff1681565b61094061093a610d91565b8261191e565b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109d3610daa565b6109dc5f61199d565b565b6109f0826109ea610d91565b8361126f565b6109fa828261191e565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f602052805f5260405f205f915054906101000a900460ff1681565b600d5f9054906101000a900460ff1681565b606060058054610a63906122e2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8f906122e2565b8015610ada5780601f10610ab157610100808354040283529160200191610ada565b820191905f5260205f20905b815481529060010190602001808311610abd57829003601f168201915b5050505050905090565b5f80610aee610d91565b90505f610afb8286610c19565b905083811015610b46578481856040517fa60f030c000000000000000000000000000000000000000000000000000000008152600401610b3d939291906123da565b60405180910390fd5b610b538286868403610d98565b60019250505092915050565b5f80610b69610d91565b9050610b76818585611301565b600191505092915050565b610b89610daa565b600d5f9054906101000a900460ff16610bb7576001600d5f6101000a81548160ff0219169083151502179055505b565b610bc1610daa565b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cc9610daa565b80601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d15610daa565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d85575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610d7c919061225e565b60405180910390fd5b610d8e8161199d565b50565b5f33905090565b610da58383836001611a5e565b505050565b610db2610d91565b73ffffffffffffffffffffffffffffffffffffffff16610dd06109fe565b73ffffffffffffffffffffffffffffffffffffffff1614610e2f57610df3610d91565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610e26919061225e565b60405180910390fd5b565b600160125f6101000a81548160ff0219169083151502179055505f811115611253575f600267ffffffffffffffff811115610e6f57610e6e61240f565b5b604051908082528060200260200182016040528015610e9d5781602001602082028036833780820191505090505b50905030815f81518110610eb457610eb361243c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7c919061247d565b81600181518110610f9057610f8f61243c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610ff63060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d98565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f843061025842611045919061233f565b6040518663ffffffff1660e01b81526004016110659594939291906125a1565b5f604051808303815f87803b15801561107c575f80fd5b505af115801561108e573d5f803e3d5ffd5b505050505f601e9050600a546008546110a7919061233f565b4311156110b357603290505b5f4790505f606483836110c691906125f9565b6110d09190612667565b90505f6064604b83856110e39190612697565b6110ed91906125f9565b6110f79190612667565b90505f8183856111079190612697565b6111119190612697565b90505f84111561124c57601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015611180573d5f803e3d5ffd5b5060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156111e5573d5f803e3d5ffd5b5060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561124a573d5f803e3d5ffd5b505b5050505050505b5f60125f6101000a81548160ff02191690831515021790555050565b5f61127a8484610c19565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112fb57818110156112ec578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016112e3939291906123da565b60405180910390fd5b6112fa84848484035f611a5e565b5b50505050565b6113096109fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561138f575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b801561139c57505f600854145b156113a957436008819055505b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156114475750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561188e575f60085411801561146c5750600954600854611468919061233f565b4311155b156114d5576064600b5461147e61079f565b61148891906125f9565b6114929190612667565b8111156114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90612714565b60405180910390fd5b5b5f600d5f9054906101000a900460ff166114f05760056114f2565b5f5b60ff1690505f600854111561160c5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611576575060085443148061157557506001600854611572919061233f565b43145b5b156115d557600160115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061160b565b600d5f9054906101000a900460ff161580156116005750600a546008546115fc919061233f565b4311155b1561160a57601990505b5b5b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116a7575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156116b157603290505b601981111580156116ce575060125f9054906101000a900460ff16155b80156116e45750600c546116e130610985565b10155b801561173d575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561174e5761174d600c54610e31565b5b5f6064828461175d91906125f9565b6117679190612667565b90505f81846117769190612697565b905060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117d057505f600854115b80156117eb57506009546008546117e7919061233f565b4311155b15611867576064600b546117fd61079f565b61180791906125f9565b6118119190612667565b8161181b87610985565b611825919061233f565b1115611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d9061277c565b60405180910390fd5b5b611872868683611c2d565b5f82111561188657611885863084611c2d565b5b50505061189a565b611899838383611c2d565b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361190f575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611906919061225e565b60405180910390fd5b61191a5f8383611d1d565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361198e575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611985919061225e565b60405180910390fd5b611999825f83611d1d565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ace575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611ac5919061225e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3e575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611b35919061225e565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611c27578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611c1e919061211f565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c9d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611c94919061225e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d0d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611d04919061225e565b60405180910390fd5b611d18838383611d1d565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d6d578060035f828254611d61919061233f565b92505081905550611e3d565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611df7578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611dee939291906123da565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e84578060035f8282540392505081905550611ecf565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f2c919061211f565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611f70578082015181840152602081019050611f55565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611f9582611f39565b611f9f8185611f43565b9350611faf818560208601611f53565b611fb881611f7b565b840191505092915050565b5f6020820190508181035f830152611fdb8184611f8b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61201082611fe7565b9050919050565b61202081612006565b811461202a575f80fd5b50565b5f8135905061203b81612017565b92915050565b5f819050919050565b61205381612041565b811461205d575f80fd5b50565b5f8135905061206e8161204a565b92915050565b5f806040838503121561208a57612089611fe3565b5b5f6120978582860161202d565b92505060206120a885828601612060565b9150509250929050565b5f8115159050919050565b6120c6816120b2565b82525050565b5f6020820190506120df5f8301846120bd565b92915050565b5f602082840312156120fa576120f9611fe3565b5b5f61210784828501612060565b91505092915050565b61211981612041565b82525050565b5f6020820190506121325f830184612110565b92915050565b612141816120b2565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f806040838503121561217857612177611fe3565b5b5f6121858582860161202d565b92505060206121968582860161214e565b9150509250929050565b5f805f606084860312156121b7576121b6611fe3565b5b5f6121c48682870161202d565b93505060206121d58682870161202d565b92505060406121e686828701612060565b9150509250925092565b5f60ff82169050919050565b612205816121f0565b82525050565b5f60208201905061221e5f8301846121fc565b92915050565b5f6020828403121561223957612238611fe3565b5b5f6122468482850161202d565b91505092915050565b61225881612006565b82525050565b5f6020820190506122715f83018461224f565b92915050565b5f806040838503121561228d5761228c611fe3565b5b5f61229a8582860161202d565b92505060206122ab8582860161202d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806122f957607f821691505b60208210810361230c5761230b6122b5565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61234982612041565b915061235483612041565b925082820190508082111561236c5761236b612312565b5b92915050565b7f596f752068617665206e6f74207065726d697373696f6e2e00000000000000005f82015250565b5f6123a6601883611f43565b91506123b182612372565b602082019050919050565b5f6020820190508181035f8301526123d38161239a565b9050919050565b5f6060820190506123ed5f83018661224f565b6123fa6020830185612110565b6124076040830184612110565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061247781612017565b92915050565b5f6020828403121561249257612491611fe3565b5b5f61249f84828501612469565b91505092915050565b5f819050919050565b5f819050919050565b5f6124d46124cf6124ca846124a8565b6124b1565b612041565b9050919050565b6124e4816124ba565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61251c81612006565b82525050565b5f61252d8383612513565b60208301905092915050565b5f602082019050919050565b5f61254f826124ea565b61255981856124f4565b935061256483612504565b805f5b8381101561259457815161257b8882612522565b975061258683612539565b925050600181019050612567565b5085935050505092915050565b5f60a0820190506125b45f830188612110565b6125c160208301876124db565b81810360408301526125d38186612545565b90506125e2606083018561224f565b6125ef6080830184612110565b9695505050505050565b5f61260382612041565b915061260e83612041565b925082820261261c81612041565b9150828204841483151761263357612632612312565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61267182612041565b915061267c83612041565b92508261268c5761268b61263a565b5b828204905092915050565b5f6126a182612041565b91506126ac83612041565b92508282039050818111156126c4576126c3612312565b5b92915050565b7f45786365656473206d6178207478206c696d69742e00000000000000000000005f82015250565b5f6126fe601583611f43565b9150612709826126ca565b602082019050919050565b5f6020820190508181035f83015261272b816126f2565b9050919050565b7f45786365656473206d61782077616c6c6574206c696d69742e000000000000005f82015250565b5f612766601983611f43565b915061277182612732565b602082019050919050565b5f6020820190508181035f8301526127938161275a565b905091905056fea2646970667358221220d26dbb17b6455932fedd02850b5e29789a7aa40723377b42dd9087eaf7ca363864736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c8063715018a6116100eb578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610623578063e999720f1461065f578063eecaab0614610689578063f2fde38b146106b1576101c1565b8063a9059cbb146105a9578063b98de7c7146105e5578063cdf0ff7c146105fb576101c1565b80638f16c41c116100c55780638f16c41c146104dd578063957aa58c1461051957806395d89b4114610543578063a457c2d71461056d576101c1565b8063715018a61461047557806379cc67901461048b5780638da5cb5b146104b3576101c1565b8063395093511161015857806342966c681161013257806342966c68146103ab57806357bf549f146103d35780635b16ebb7146103fd57806370a0823114610439576101c1565b8063395093511461030b57806340c10f191461034757806341d6e7da1461036f576101c1565b806318160ddd1161019457806318160ddd1461025357806320bec12c1461027d57806323b872dd146102a5578063313ce567146102e1576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630aa400181461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d96106d9565b6040516101e69190611fc3565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612074565b610769565b60405161022291906120cc565b60405180910390f35b348015610236575f80fd5b50610251600480360381019061024c91906120e5565b61078b565b005b34801561025e575f80fd5b5061026761079f565b604051610274919061211f565b60405180910390f35b348015610288575f80fd5b506102a3600480360381019061029e9190612162565b6107a8565b005b3480156102b0575f80fd5b506102cb60048036038101906102c691906121a0565b610808565b6040516102d891906120cc565b60405180910390f35b3480156102ec575f80fd5b506102f5610836565b604051610302919061220b565b60405180910390f35b348015610316575f80fd5b50610331600480360381019061032c9190612074565b61083e565b60405161033e91906120cc565b60405180910390f35b348015610352575f80fd5b5061036d60048036038101906103689190612074565b610874565b005b34801561037a575f80fd5b5061039560048036038101906103909190612224565b610912565b6040516103a291906120cc565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc91906120e5565b61092f565b005b3480156103de575f80fd5b506103e7610943565b6040516103f4919061225e565b60405180910390f35b348015610408575f80fd5b50610423600480360381019061041e9190612224565b610968565b60405161043091906120cc565b60405180910390f35b348015610444575f80fd5b5061045f600480360381019061045a9190612224565b610985565b60405161046c919061211f565b60405180910390f35b348015610480575f80fd5b506104896109cb565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612074565b6109de565b005b3480156104be575f80fd5b506104c76109fe565b6040516104d4919061225e565b60405180910390f35b3480156104e8575f80fd5b5061050360048036038101906104fe9190612224565b610a25565b60405161051091906120cc565b60405180910390f35b348015610524575f80fd5b5061052d610a42565b60405161053a91906120cc565b60405180910390f35b34801561054e575f80fd5b50610557610a54565b6040516105649190611fc3565b60405180910390f35b348015610578575f80fd5b50610593600480360381019061058e9190612074565b610ae4565b6040516105a091906120cc565b60405180910390f35b3480156105b4575f80fd5b506105cf60048036038101906105ca9190612074565b610b5f565b6040516105dc91906120cc565b60405180910390f35b3480156105f0575f80fd5b506105f9610b81565b005b348015610606575f80fd5b50610621600480360381019061061c9190612162565b610bb9565b005b34801561062e575f80fd5b5061064960048036038101906106449190612277565b610c19565b604051610656919061211f565b60405180910390f35b34801561066a575f80fd5b50610673610c9b565b604051610680919061225e565b60405180910390f35b348015610694575f80fd5b506106af60048036038101906106aa9190612224565b610cc1565b005b3480156106bc575f80fd5b506106d760048036038101906106d29190612224565b610d0d565b005b6060600480546106e8906122e2565b80601f0160208091040260200160405190810160405280929190818152602001828054610714906122e2565b801561075f5780601f106107365761010080835404028352916020019161075f565b820191905f5260205f20905b81548152906001019060200180831161074257829003601f168201915b5050505050905090565b5f80610773610d91565b9050610780818585610d98565b600191505092915050565b610793610daa565b61079c81610e31565b50565b5f600354905090565b6107b0610daa565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f80610812610d91565b905061081f85828561126f565b61082a858585611301565b60019150509392505050565b5f6012905090565b5f80610848610d91565b905061086981858561085a8589610c19565b610864919061233f565b610d98565b600191505092915050565b601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb906123bc565b60405180910390fd5b61090e828261189f565b5050565b6011602052805f5260405f205f915054906101000a900460ff1681565b61094061093a610d91565b8261191e565b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109d3610daa565b6109dc5f61199d565b565b6109f0826109ea610d91565b8361126f565b6109fa828261191e565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f602052805f5260405f205f915054906101000a900460ff1681565b600d5f9054906101000a900460ff1681565b606060058054610a63906122e2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8f906122e2565b8015610ada5780601f10610ab157610100808354040283529160200191610ada565b820191905f5260205f20905b815481529060010190602001808311610abd57829003601f168201915b5050505050905090565b5f80610aee610d91565b90505f610afb8286610c19565b905083811015610b46578481856040517fa60f030c000000000000000000000000000000000000000000000000000000008152600401610b3d939291906123da565b60405180910390fd5b610b538286868403610d98565b60019250505092915050565b5f80610b69610d91565b9050610b76818585611301565b600191505092915050565b610b89610daa565b600d5f9054906101000a900460ff16610bb7576001600d5f6101000a81548160ff0219169083151502179055505b565b610bc1610daa565b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cc9610daa565b80601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d15610daa565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d85575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610d7c919061225e565b60405180910390fd5b610d8e8161199d565b50565b5f33905090565b610da58383836001611a5e565b505050565b610db2610d91565b73ffffffffffffffffffffffffffffffffffffffff16610dd06109fe565b73ffffffffffffffffffffffffffffffffffffffff1614610e2f57610df3610d91565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610e26919061225e565b60405180910390fd5b565b600160125f6101000a81548160ff0219169083151502179055505f811115611253575f600267ffffffffffffffff811115610e6f57610e6e61240f565b5b604051908082528060200260200182016040528015610e9d5781602001602082028036833780820191505090505b50905030815f81518110610eb457610eb361243c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7c919061247d565b81600181518110610f9057610f8f61243c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610ff63060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d98565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f843061025842611045919061233f565b6040518663ffffffff1660e01b81526004016110659594939291906125a1565b5f604051808303815f87803b15801561107c575f80fd5b505af115801561108e573d5f803e3d5ffd5b505050505f601e9050600a546008546110a7919061233f565b4311156110b357603290505b5f4790505f606483836110c691906125f9565b6110d09190612667565b90505f6064604b83856110e39190612697565b6110ed91906125f9565b6110f79190612667565b90505f8183856111079190612697565b6111119190612697565b90505f84111561124c57601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015611180573d5f803e3d5ffd5b5060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156111e5573d5f803e3d5ffd5b5060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561124a573d5f803e3d5ffd5b505b5050505050505b5f60125f6101000a81548160ff02191690831515021790555050565b5f61127a8484610c19565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112fb57818110156112ec578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016112e3939291906123da565b60405180910390fd5b6112fa84848484035f611a5e565b5b50505050565b6113096109fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561138f575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b801561139c57505f600854145b156113a957436008819055505b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156114475750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561188e575f60085411801561146c5750600954600854611468919061233f565b4311155b156114d5576064600b5461147e61079f565b61148891906125f9565b6114929190612667565b8111156114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90612714565b60405180910390fd5b5b5f600d5f9054906101000a900460ff166114f05760056114f2565b5f5b60ff1690505f600854111561160c5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611576575060085443148061157557506001600854611572919061233f565b43145b5b156115d557600160115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061160b565b600d5f9054906101000a900460ff161580156116005750600a546008546115fc919061233f565b4311155b1561160a57601990505b5b5b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116a7575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156116b157603290505b601981111580156116ce575060125f9054906101000a900460ff16155b80156116e45750600c546116e130610985565b10155b801561173d575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561174e5761174d600c54610e31565b5b5f6064828461175d91906125f9565b6117679190612667565b90505f81846117769190612697565b905060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117d057505f600854115b80156117eb57506009546008546117e7919061233f565b4311155b15611867576064600b546117fd61079f565b61180791906125f9565b6118119190612667565b8161181b87610985565b611825919061233f565b1115611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d9061277c565b60405180910390fd5b5b611872868683611c2d565b5f82111561188657611885863084611c2d565b5b50505061189a565b611899838383611c2d565b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361190f575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611906919061225e565b60405180910390fd5b61191a5f8383611d1d565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361198e575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611985919061225e565b60405180910390fd5b611999825f83611d1d565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ace575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611ac5919061225e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3e575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611b35919061225e565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611c27578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611c1e919061211f565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c9d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611c94919061225e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d0d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611d04919061225e565b60405180910390fd5b611d18838383611d1d565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d6d578060035f828254611d61919061233f565b92505081905550611e3d565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611df7578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611dee939291906123da565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e84578060035f8282540392505081905550611ecf565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f2c919061211f565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611f70578082015181840152602081019050611f55565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611f9582611f39565b611f9f8185611f43565b9350611faf818560208601611f53565b611fb881611f7b565b840191505092915050565b5f6020820190508181035f830152611fdb8184611f8b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61201082611fe7565b9050919050565b61202081612006565b811461202a575f80fd5b50565b5f8135905061203b81612017565b92915050565b5f819050919050565b61205381612041565b811461205d575f80fd5b50565b5f8135905061206e8161204a565b92915050565b5f806040838503121561208a57612089611fe3565b5b5f6120978582860161202d565b92505060206120a885828601612060565b9150509250929050565b5f8115159050919050565b6120c6816120b2565b82525050565b5f6020820190506120df5f8301846120bd565b92915050565b5f602082840312156120fa576120f9611fe3565b5b5f61210784828501612060565b91505092915050565b61211981612041565b82525050565b5f6020820190506121325f830184612110565b92915050565b612141816120b2565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f806040838503121561217857612177611fe3565b5b5f6121858582860161202d565b92505060206121968582860161214e565b9150509250929050565b5f805f606084860312156121b7576121b6611fe3565b5b5f6121c48682870161202d565b93505060206121d58682870161202d565b92505060406121e686828701612060565b9150509250925092565b5f60ff82169050919050565b612205816121f0565b82525050565b5f60208201905061221e5f8301846121fc565b92915050565b5f6020828403121561223957612238611fe3565b5b5f6122468482850161202d565b91505092915050565b61225881612006565b82525050565b5f6020820190506122715f83018461224f565b92915050565b5f806040838503121561228d5761228c611fe3565b5b5f61229a8582860161202d565b92505060206122ab8582860161202d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806122f957607f821691505b60208210810361230c5761230b6122b5565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61234982612041565b915061235483612041565b925082820190508082111561236c5761236b612312565b5b92915050565b7f596f752068617665206e6f74207065726d697373696f6e2e00000000000000005f82015250565b5f6123a6601883611f43565b91506123b182612372565b602082019050919050565b5f6020820190508181035f8301526123d38161239a565b9050919050565b5f6060820190506123ed5f83018661224f565b6123fa6020830185612110565b6124076040830184612110565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061247781612017565b92915050565b5f6020828403121561249257612491611fe3565b5b5f61249f84828501612469565b91505092915050565b5f819050919050565b5f819050919050565b5f6124d46124cf6124ca846124a8565b6124b1565b612041565b9050919050565b6124e4816124ba565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61251c81612006565b82525050565b5f61252d8383612513565b60208301905092915050565b5f602082019050919050565b5f61254f826124ea565b61255981856124f4565b935061256483612504565b805f5b8381101561259457815161257b8882612522565b975061258683612539565b925050600181019050612567565b5085935050505092915050565b5f60a0820190506125b45f830188612110565b6125c160208301876124db565b81810360408301526125d38186612545565b90506125e2606083018561224f565b6125ef6080830184612110565b9695505050505050565b5f61260382612041565b915061260e83612041565b925082820261261c81612041565b9150828204841483151761263357612632612312565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61267182612041565b915061267c83612041565b92508261268c5761268b61263a565b5b828204905092915050565b5f6126a182612041565b91506126ac83612041565b92508282039050818111156126c4576126c3612312565b5b92915050565b7f45786365656473206d6178207478206c696d69742e00000000000000000000005f82015250565b5f6126fe601583611f43565b9150612709826126ca565b602082019050919050565b5f6020820190508181035f83015261272b816126f2565b9050919050565b7f45786365656473206d61782077616c6c6574206c696d69742e000000000000005f82015250565b5f612766601983611f43565b915061277182612732565b602082019050919050565b5f6020820190508181035f8301526127938161275a565b905091905056fea2646970667358221220d26dbb17b6455932fedd02850b5e29789a7aa40723377b42dd9087eaf7ca363864736f6c63430008150033

Deployed Bytecode Sourcemap

16618:5430:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3938:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6231:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21300:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5040:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21764;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18126:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4891:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7657:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21871:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17202:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15486:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16768:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17156:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5202:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1954:103;;;;;;;;;;;;;:::i;:::-;;15904:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1685:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17106:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17028:16;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4148:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8583:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17927:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21395:104;;;;;;;;;;;;;:::i;:::-;;21645:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5770:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17347:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21511:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2069:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3938:91;3983:13;4016:5;4009:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3938:91;:::o;6231:190::-;6304:4;6321:13;6337:12;:10;:12::i;:::-;6321:28;;6360:31;6369:5;6376:7;6385:5;6360:8;:31::i;:::-;6409:4;6402:11;;;6231:190;;;;:::o;21300:87::-;1644:13;:11;:13::i;:::-;21363:16:::1;21372:6;21363:8;:16::i;:::-;21300:87:::0;:::o;5040:99::-;5092:7;5119:12;;5112:19;;5040:99;:::o;21764:::-;1644:13;:11;:13::i;:::-;21851:4:::1;21836:6;:12;21843:4;21836:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;21764:99:::0;;:::o;18126:260::-;18214:4;18231:15;18249:12;:10;:12::i;:::-;18231:30;;18272:37;18288:4;18294:7;18303:5;18272:15;:37::i;:::-;18320:36;18340:4;18346:2;18350:5;18320:19;:36::i;:::-;18374:4;18367:11;;;18126:260;;;;;:::o;4891:84::-;4940:5;4965:2;4958:9;;4891:84;:::o;7657:238::-;7745:4;7762:13;7778:12;:10;:12::i;:::-;7762:28;;7801:64;7810:5;7817:7;7854:10;7826:25;7836:5;7843:7;7826:9;:25::i;:::-;:38;;;;:::i;:::-;7801:8;:64::i;:::-;7883:4;7876:11;;;7657:238;;;;:::o;21871:174::-;21960:15;;;;;;;;;;;21946:29;;:10;:29;;;21938:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;22015:22;22021:7;22030:6;22015:5;:22::i;:::-;21871:174;;:::o;17202:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;15486:89::-;15541:26;15547:12;:10;:12::i;:::-;15561:5;15541;:26::i;:::-;15486:89;:::o;16768:27::-;;;;;;;;;;;;;:::o;17156:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;5202:118::-;5267:7;5294:9;:18;5304:7;5294:18;;;;;;;;;;;;;;;;5287:25;;5202:118;;;:::o;1954:103::-;1644:13;:11;:13::i;:::-;2019:30:::1;2046:1;2019:18;:30::i;:::-;1954:103::o:0;15904:161::-;15980:45;15996:7;16005:12;:10;:12::i;:::-;16019:5;15980:15;:45::i;:::-;16036:21;16042:7;16051:5;16036;:21::i;:::-;15904:161;;:::o;1685:87::-;1731:7;1758:6;;;;;;;;;;;1751:13;;1685:87;:::o;17106:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;17028:16::-;;;;;;;;;;;;;:::o;4148:95::-;4195:13;4228:7;4221:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4148:95;:::o;8583:504::-;8678:4;8695:13;8711:12;:10;:12::i;:::-;8695:28;;8734:24;8761:25;8771:5;8778:7;8761:9;:25::i;:::-;8734:52;;8820:17;8801:16;:36;8797:150;;;8890:7;8899:16;8917:17;8861:74;;;;;;;;;;;;;:::i;:::-;;;;;;;;8797:150;8982:62;8991:5;8998:7;9026:17;9007:16;:36;8982:8;:62::i;:::-;9075:4;9068:11;;;;8583:504;;;;:::o;17927:191::-;17997:4;18014:12;18029;:10;:12::i;:::-;18014:27;;18052:36;18072:4;18078:2;18082:5;18052:19;:36::i;:::-;18106:4;18099:11;;;17927:191;;;;:::o;21395:104::-;1644:13;:11;:13::i;:::-;21448:4:::1;;;;;;;;;;;21444:48;;21476:4;21469;;:11;;;;;;;;;;;;;;;;;;21444:48;21395:104::o:0;21645:111::-;1644:13;:11;:13::i;:::-;21744:4:::1;21723:10;:18;21734:6;21723:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;21645:111:::0;;:::o;5770:142::-;5850:7;5877:11;:18;5889:5;5877:18;;;;;;;;;;;;;;;:27;5896:7;5877:27;;;;;;;;;;;;;;;;5870:34;;5770:142;;;;:::o;17347:30::-;;;;;;;;;;;;;:::o;21511:126::-;1644:13;:11;:13::i;:::-;21613:16:::1;21595:15;;:34;;;;;;;;;;;;;;;;;;21511:126:::0;:::o;2069:220::-;1644:13;:11;:13::i;:::-;2174:1:::1;2154:22;;:8;:22;;::::0;2150:93:::1;;2228:1;2200:31;;;;;;;;;;;:::i;:::-;;;;;;;;2150:93;2253:28;2272:8;2253:18;:28::i;:::-;2069:220:::0;:::o;1053:98::-;1106:7;1133:10;1126:17;;1053:98;:::o;12889:130::-;12974:37;12983:5;12990:7;12999:5;13006:4;12974:8;:37::i;:::-;12889:130;;;:::o;1780:166::-;1851:12;:10;:12::i;:::-;1840:23;;:7;:5;:7::i;:::-;:23;;;1836:103;;1914:12;:10;:12::i;:::-;1887:40;;;;;;;;;;;:::i;:::-;;;;;;;;1836:103;1780:166::o;20122:1170::-;17312:4;17301:8;;:15;;;;;;;;;;;;;;;;;;20209:1:::1;20195:11;:15;20192:1093;;;20227:21;20265:1;20251:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20227:40;;20300:4;20282;20287:1;20282:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;20330:11;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20320:4;20325:1;20320:7;;;;;;;;:::i;:::-;;;;;;;:28;;;;;;;;;::::0;::::1;20363:58;20380:4;20395:11;;;;;;;;;;;20409;20363:8;:58::i;:::-;20436:11;;;;;;;;;;;:62;;;20517:11;20547:1;20567:4;20598;20640:10;20622:15;:28;;;;:::i;:::-;20436:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20668:15;20686:2;20668:20;;20740:17;;20721:16;;:36;;;;:::i;:::-;20706:12;:51;20703:86;;;20787:2;20777:12;;20703:86;20804:15;20822:21;20804:39;;20858:16;20897:3;20887:7;20877;:17;;;;:::i;:::-;:23;;;;:::i;:::-;20858:42;;20915:21;20967:3;20962:2;20950:8;20940:7;:18;;;;:::i;:::-;20939:25;;;;:::i;:::-;:31;;;;:::i;:::-;20915:55;;20985:21;21030:13;21019:8;21009:7;:18;;;;:::i;:::-;:34;;;;:::i;:::-;20985:58;;21071:1;21061:7;:11;21058:216;;;21101:15;;;;;;;;;;;21093:33;;:43;21127:8;21093:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21163:9;;;;;;;;;;;21155:27;;:42;21183:13;21155:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21224:9;;;;;;;;;;;21216:27;;:42;21244:13;21216:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21058:216;20212:1073;;;;;;20192:1093;17332:5:::0;17321:8;;:16;;;;;;;;;;;;;;;;;;20122:1170;:::o;14602:487::-;14702:24;14729:25;14739:5;14746:7;14729:9;:25::i;:::-;14702:52;;14789:17;14769:16;:37;14765:317;;14846:5;14827:16;:24;14823:132;;;14906:7;14915:16;14933:5;14879:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;14823:132;14998:57;15007:5;15014:7;15042:5;15023:16;:24;15049:5;14998:8;:57::i;:::-;14765:317;14691:398;14602:487;;;:::o;18394:1720::-;18495:7;:5;:7::i;:::-;18487:15;;:4;:15;;;:37;;;;;18512:12;;;;;;;;;;;18506:18;;:2;:18;;;18487:37;:62;;;;;18548:1;18528:16;;:21;18487:62;18484:125;;;18585:12;18566:16;:31;;;;18484:125;18625:10;:16;18636:4;18625:16;;;;;;;;;;;;;;;;;;;;;;;;;18624:17;:36;;;;;18646:10;:14;18657:2;18646:14;;;;;;;;;;;;;;;;;;;;;;;;;18645:15;18624:36;18621:1486;;;18699:1;18680:16;;:20;:79;;;;;18739:20;;18720:16;;:39;;;;:::i;:::-;18704:12;:55;;18680:79;18677:182;;;18830:3;18811:16;;18795:13;:11;:13::i;:::-;:32;;;;:::i;:::-;:38;;;;:::i;:::-;18786:5;:47;;18778:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;18677:182;18888:13;18904:4;;;;;;;;;;;:12;;18915:1;18904:12;;;18911:1;18904:12;18888:28;;;;18955:1;18936:16;;:20;18933:328;;;18988:12;;;;;;;;;;;18980:20;;:4;:20;;;:98;;;;;19021:16;;19005:12;:32;:72;;;;19076:1;19057:16;;:20;;;;:::i;:::-;19041:12;:36;19005:72;18980:98;18977:268;;;19117:4;19103:7;:11;19111:2;19103:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;18977:268;;;19151:4;;;;;;;;;;;19150:5;:61;;;;;19194:17;;19175:16;;:36;;;;:::i;:::-;19159:12;:52;;19150:61;19147:98;;;19243:2;19235:10;;19147:98;18977:268;18933:328;19293:7;:13;19301:4;19293:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;19310:7;:11;19318:2;19310:11;;;;;;;;;;;;;;;;;;;;;;;;;19293:28;19289:61;;;19348:2;19340:10;;19289:61;19379:2;19370:5;:11;;:24;;;;;19386:8;;;;;;;;;;;19385:9;19370:24;:69;;;;;19426:13;;19398:24;19416:4;19398:9;:24::i;:::-;:41;;19370:69;:99;;;;;19457:12;;;;;;;;;;;19443:26;;:10;:26;;;;19370:99;19367:144;;;19488:23;19497:13;;19488:8;:23::i;:::-;19367:144;19528:17;19564:3;19556:5;19548;:13;;;;:::i;:::-;:19;;;;:::i;:::-;19528:39;;19582:22;19615:9;19607:5;:17;;;;:::i;:::-;19582:42;;19657:6;:10;19664:2;19657:10;;;;;;;;;;;;;;;;;;;;;;;;;19656:11;:35;;;;;19690:1;19671:16;;:20;19656:35;:94;;;;;19730:20;;19711:16;;:39;;;;:::i;:::-;19695:12;:55;;19656:94;19653:226;;;19846:3;19827:16;;19811:13;:11;:13::i;:::-;:32;;;;:::i;:::-;:38;;;;:::i;:::-;19793:14;19777:13;19787:2;19777:9;:13::i;:::-;:30;;;;:::i;:::-;:72;;19769:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;19653:226;19908:35;19918:4;19924:2;19928:14;19908:9;:35::i;:::-;19975:1;19963:9;:13;19960:76;;;19995:41;20005:4;20019;20026:9;19995;:41::i;:::-;19960:76;18662:1386;;;18621:1486;;;20069:26;20079:4;20085:2;20089:5;20069:9;:26::i;:::-;18621:1486;18394:1720;;;:::o;11584:213::-;11674:1;11655:21;;:7;:21;;;11651:93;;11729:1;11700:32;;;;;;;;;;;:::i;:::-;;;;;;;;11651:93;11754:35;11770:1;11774:7;11783:5;11754:7;:35::i;:::-;11584:213;;:::o;12125:211::-;12215:1;12196:21;;:7;:21;;;12192:91;;12268:1;12241:30;;;;;;;;;;;:::i;:::-;;;;;;;;12192:91;12293:35;12301:7;12318:1;12322:5;12293:7;:35::i;:::-;12125:211;;:::o;2301:191::-;2375:16;2394:6;;;;;;;;;;;2375:25;;2420:8;2411:6;;:17;;;;;;;;;;;;;;;;;;2475:8;2444:40;;2465:8;2444:40;;;;;;;;;;;;2364:128;2301:191;:::o;13870:443::-;14000:1;13983:19;;:5;:19;;;13979:91;;14055:1;14026:32;;;;;;;;;;;:::i;:::-;;;;;;;;13979:91;14103:1;14084:21;;:7;:21;;;14080:92;;14157:1;14129:31;;;;;;;;;;;:::i;:::-;;;;;;;;14080:92;14212:5;14182:11;:18;14194:5;14182:18;;;;;;;;;;;;;;;:27;14201:7;14182:27;;;;;;;;;;;;;;;:35;;;;14232:9;14228:78;;;14279:7;14263:31;;14272:5;14263:31;;;14288:5;14263:31;;;;;;:::i;:::-;;;;;;;;14228:78;13870:443;;;;:::o;9472:308::-;9572:1;9556:18;;:4;:18;;;9552:88;;9625:1;9598:30;;;;;;;;;;;:::i;:::-;;;;;;;;9552:88;9668:1;9654:16;;:2;:16;;;9650:88;;9723:1;9694:32;;;;;;;;;;;:::i;:::-;;;;;;;;9650:88;9748:24;9756:4;9762:2;9766:5;9748:7;:24::i;:::-;9472:308;;;:::o;10096:1135::-;10202:1;10186:18;;:4;:18;;;10182:552;;10340:5;10324:12;;:21;;;;;;;:::i;:::-;;;;;;;;10182:552;;;10378:19;10400:9;:15;10410:4;10400:15;;;;;;;;;;;;;;;;10378:37;;10448:5;10434:11;:19;10430:117;;;10506:4;10512:11;10525:5;10481:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;10430:117;10702:5;10688:11;:19;10670:9;:15;10680:4;10670:15;;;;;;;;;;;;;;;:37;;;;10363:371;10182:552;10764:1;10750:16;;:2;:16;;;10746:435;;10932:5;10916:12;;:21;;;;;;;;;;;10746:435;;;11149:5;11132:9;:13;11142:2;11132:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;10746:435;11213:2;11198:25;;11207:4;11198:25;;;11217:5;11198:25;;;;;;:::i;:::-;;;;;;;;10096:1135;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:116::-;4203:21;4218:5;4203:21;:::i;:::-;4196:5;4193:32;4183:60;;4239:1;4236;4229:12;4183:60;4133:116;:::o;4255:133::-;4298:5;4336:6;4323:20;4314:29;;4352:30;4376:5;4352:30;:::i;:::-;4255:133;;;;:::o;4394:468::-;4459:6;4467;4516:2;4504:9;4495:7;4491:23;4487:32;4484:119;;;4522:79;;:::i;:::-;4484:119;4642:1;4667:53;4712:7;4703:6;4692:9;4688:22;4667:53;:::i;:::-;4657:63;;4613:117;4769:2;4795:50;4837:7;4828:6;4817:9;4813:22;4795:50;:::i;:::-;4785:60;;4740:115;4394:468;;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:118::-;6345:24;6363:5;6345:24;:::i;:::-;6340:3;6333:37;6258:118;;:::o;6382:222::-;6475:4;6513:2;6502:9;6498:18;6490:26;;6526:71;6594:1;6583:9;6579:17;6570:6;6526:71;:::i;:::-;6382:222;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::o;7090:180::-;7138:77;7135:1;7128:88;7235:4;7232:1;7225:15;7259:4;7256:1;7249:15;7276:320;7320:6;7357:1;7351:4;7347:12;7337:22;;7404:1;7398:4;7394:12;7425:18;7415:81;;7481:4;7473:6;7469:17;7459:27;;7415:81;7543:2;7535:6;7532:14;7512:18;7509:38;7506:84;;7562:18;;:::i;:::-;7506:84;7327:269;7276:320;;;:::o;7602:180::-;7650:77;7647:1;7640:88;7747:4;7744:1;7737:15;7771:4;7768:1;7761:15;7788:191;7828:3;7847:20;7865:1;7847:20;:::i;:::-;7842:25;;7881:20;7899:1;7881:20;:::i;:::-;7876:25;;7924:1;7921;7917:9;7910:16;;7945:3;7942:1;7939:10;7936:36;;;7952:18;;:::i;:::-;7936:36;7788:191;;;;:::o;7985:174::-;8125:26;8121:1;8113:6;8109:14;8102:50;7985:174;:::o;8165:366::-;8307:3;8328:67;8392:2;8387:3;8328:67;:::i;:::-;8321:74;;8404:93;8493:3;8404:93;:::i;:::-;8522:2;8517:3;8513:12;8506:19;;8165:366;;;:::o;8537:419::-;8703:4;8741:2;8730:9;8726:18;8718:26;;8790:9;8784:4;8780:20;8776:1;8765:9;8761:17;8754:47;8818:131;8944:4;8818:131;:::i;:::-;8810:139;;8537:419;;;:::o;8962:442::-;9111:4;9149:2;9138:9;9134:18;9126:26;;9162:71;9230:1;9219:9;9215:17;9206:6;9162:71;:::i;:::-;9243:72;9311:2;9300:9;9296:18;9287:6;9243:72;:::i;:::-;9325;9393:2;9382:9;9378:18;9369:6;9325:72;:::i;:::-;8962:442;;;;;;:::o;9410:180::-;9458:77;9455:1;9448:88;9555:4;9552:1;9545:15;9579:4;9576:1;9569:15;9596:180;9644:77;9641:1;9634:88;9741:4;9738:1;9731:15;9765:4;9762:1;9755:15;9782:143;9839:5;9870:6;9864:13;9855:22;;9886:33;9913:5;9886:33;:::i;:::-;9782:143;;;;:::o;9931:351::-;10001:6;10050:2;10038:9;10029:7;10025:23;10021:32;10018:119;;;10056:79;;:::i;:::-;10018:119;10176:1;10201:64;10257:7;10248:6;10237:9;10233:22;10201:64;:::i;:::-;10191:74;;10147:128;9931:351;;;;:::o;10288:85::-;10333:7;10362:5;10351:16;;10288:85;;;:::o;10379:60::-;10407:3;10428:5;10421:12;;10379:60;;;:::o;10445:158::-;10503:9;10536:61;10554:42;10563:32;10589:5;10563:32;:::i;:::-;10554:42;:::i;:::-;10536:61;:::i;:::-;10523:74;;10445:158;;;:::o;10609:147::-;10704:45;10743:5;10704:45;:::i;:::-;10699:3;10692:58;10609:147;;:::o;10762:114::-;10829:6;10863:5;10857:12;10847:22;;10762:114;;;:::o;10882:184::-;10981:11;11015:6;11010:3;11003:19;11055:4;11050:3;11046:14;11031:29;;10882:184;;;;:::o;11072:132::-;11139:4;11162:3;11154:11;;11192:4;11187:3;11183:14;11175:22;;11072:132;;;:::o;11210:108::-;11287:24;11305:5;11287:24;:::i;:::-;11282:3;11275:37;11210:108;;:::o;11324:179::-;11393:10;11414:46;11456:3;11448:6;11414:46;:::i;:::-;11492:4;11487:3;11483:14;11469:28;;11324:179;;;;:::o;11509:113::-;11579:4;11611;11606:3;11602:14;11594:22;;11509:113;;;:::o;11658:732::-;11777:3;11806:54;11854:5;11806:54;:::i;:::-;11876:86;11955:6;11950:3;11876:86;:::i;:::-;11869:93;;11986:56;12036:5;11986:56;:::i;:::-;12065:7;12096:1;12081:284;12106:6;12103:1;12100:13;12081:284;;;12182:6;12176:13;12209:63;12268:3;12253:13;12209:63;:::i;:::-;12202:70;;12295:60;12348:6;12295:60;:::i;:::-;12285:70;;12141:224;12128:1;12125;12121:9;12116:14;;12081:284;;;12085:14;12381:3;12374:10;;11782:608;;;11658:732;;;;:::o;12396:831::-;12659:4;12697:3;12686:9;12682:19;12674:27;;12711:71;12779:1;12768:9;12764:17;12755:6;12711:71;:::i;:::-;12792:80;12868:2;12857:9;12853:18;12844:6;12792:80;:::i;:::-;12919:9;12913:4;12909:20;12904:2;12893:9;12889:18;12882:48;12947:108;13050:4;13041:6;12947:108;:::i;:::-;12939:116;;13065:72;13133:2;13122:9;13118:18;13109:6;13065:72;:::i;:::-;13147:73;13215:3;13204:9;13200:19;13191:6;13147:73;:::i;:::-;12396:831;;;;;;;;:::o;13233:410::-;13273:7;13296:20;13314:1;13296:20;:::i;:::-;13291:25;;13330:20;13348:1;13330:20;:::i;:::-;13325:25;;13385:1;13382;13378:9;13407:30;13425:11;13407:30;:::i;:::-;13396:41;;13586:1;13577:7;13573:15;13570:1;13567:22;13547:1;13540:9;13520:83;13497:139;;13616:18;;:::i;:::-;13497:139;13281:362;13233:410;;;;:::o;13649:180::-;13697:77;13694:1;13687:88;13794:4;13791:1;13784:15;13818:4;13815:1;13808:15;13835:185;13875:1;13892:20;13910:1;13892:20;:::i;:::-;13887:25;;13926:20;13944:1;13926:20;:::i;:::-;13921:25;;13965:1;13955:35;;13970:18;;:::i;:::-;13955:35;14012:1;14009;14005:9;14000:14;;13835:185;;;;:::o;14026:194::-;14066:4;14086:20;14104:1;14086:20;:::i;:::-;14081:25;;14120:20;14138:1;14120:20;:::i;:::-;14115:25;;14164:1;14161;14157:9;14149:17;;14188:1;14182:4;14179:11;14176:37;;;14193:18;;:::i;:::-;14176:37;14026:194;;;;:::o;14226:171::-;14366:23;14362:1;14354:6;14350:14;14343:47;14226:171;:::o;14403:366::-;14545:3;14566:67;14630:2;14625:3;14566:67;:::i;:::-;14559:74;;14642:93;14731:3;14642:93;:::i;:::-;14760:2;14755:3;14751:12;14744:19;;14403:366;;;:::o;14775:419::-;14941:4;14979:2;14968:9;14964:18;14956:26;;15028:9;15022:4;15018:20;15014:1;15003:9;14999:17;14992:47;15056:131;15182:4;15056:131;:::i;:::-;15048:139;;14775:419;;;:::o;15200:175::-;15340:27;15336:1;15328:6;15324:14;15317:51;15200:175;:::o;15381:366::-;15523:3;15544:67;15608:2;15603:3;15544:67;:::i;:::-;15537:74;;15620:93;15709:3;15620:93;:::i;:::-;15738:2;15733:3;15729:12;15722:19;;15381:366;;;:::o;15753:419::-;15919:4;15957:2;15946:9;15942:18;15934:26;;16006:9;16000:4;15996:20;15992:1;15981:9;15977:17;15970:47;16034:131;16160:4;16034:131;:::i;:::-;16026:139;;15753:419;;;:::o

Swarm Source

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