BNB Price: $695.08 (-2.09%)
Gas: 1 GWei
 

Overview

Max Total Supply

101,000,000,000,0001MDC

Holders

23,954

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,000 1MDC

Value
$0.00
0x199e3bfb54f4aaa9d67d1bb56429c5ef9d1a2a91
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2024-03-16
*/

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

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

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

interface IUniswapV2Pair {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
    external
    view
    returns (
        uint112 reserve0,
        uint112 reserve1,
        uint32 blockTimestampLast
    );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

    function burn(address to)
    external
    returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
    external
    view
    returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
    external
    returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}


interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
    external
    returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
    external
    view
    returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract Ownable is Context {
    address _owner;

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _owner = newOwner;
    }
}

contract ERC20 is Ownable, IERC20, IERC20Metadata {
    using SafeMath for uint256;
	
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;
	
    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * 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 override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override 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 value {ERC20} uses, unless this function is
     * 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 override returns (uint8) {
        return 18;
    }

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
    public
    virtual
    override
    returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transferFrom(msg.sender, sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        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)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(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
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
    public
    virtual
    returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
		_balances[sender] = _balances[sender].sub(amount,"ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }


    function _transferFrom(
        address msgSender,
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(msgSender != address(0), "ERC20: transfer to the zero address");
		_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    
    

    /**
     * @dev Sets `amount` 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.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    address _contractSender;
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
	}
}


library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


contract Token is ERC20 {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    address _tokenOwner;
    IERC20 pair;
    bool private swapping;
	address public  uniswapV2Pair;
    address _cakeRouter = address(0x10ED43C718714eb63d5aA57B78B54704E256024E);//router
	address _baseToken = address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c);//wbnb
    IERC20 public USDT = IERC20(0x55d398326f99059fF775485246999027B3197955);

    address _destroyAddress = address(0x000000000000000000000000000000000000dEaD);
    address payable _bnbReciverAddress = payable(address(0xB408CD6D80dC8cabb0f0cEF0226A4FdE11704Fad));
    address defaultAddress = address(0xB408CD6D80dC8cabb0f0cEF0226A4FdE11704Fad);

    mapping(address => bool) private _isExcludedFromFees;
	mapping(address => bool) private _isExcludedFromFeesVip;
    mapping(address => bool) public _isPairs;
    bool public swapAndLiquifyEnabled = true;
    uint256 public startTime;
	uint256 total;
    uint256 daySecond = 3600;

    
    constructor(address tokenOwner) ERC20("1MDC", "1MDC") {
		require(_baseToken < address(this),"Token small");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_cakeRouter);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _baseToken);
        _approve(address(this), address(_cakeRouter), 10**64);
        _approve(tokenOwner, address(_cakeRouter), 10**64);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        pair = IERC20(_uniswapV2Pair);
        _tokenOwner = tokenOwner;
        _isPairs[_uniswapV2Pair] = true;
        _isExcludedFromFeesVip[address(this)] = true;
		_isExcludedFromFeesVip[_owner] = true;
		_isExcludedFromFeesVip[tokenOwner] = true;
        _contractSender = _owner;
        total = 101 * 10**30;
        _mint(tokenOwner, total);
        startTime = total;

        haveLdxPush[_tokenOwner] = true;ldxUser.push(_tokenOwner);
    }

    uint256 public baseBnbAmount = 10**18;
    uint256 public oneBaseAmount = 10**28;
    
    receive() external payable {
		if(startTime > block.timestamp){
            if(msg.value >= 10**10){
                uint256 sendAmount = getUserMintAmount(msg.value);
                if(sendAmount > 0){
                    super._transfer(_tokenOwner, msg.sender, sendAmount);
                    _takeInviterFee(msg.sender, msg.value);
                }
            }
            _bnbReciverAddress.transfer(address(this).balance);
        }
	}

    function getUserMintAmount(uint256 bnbAmount) public view returns(uint256){
        return bnbAmount.mul(oneBaseAmount).div(baseBnbAmount);
    }
	
	function balanceOf(address account) public override view returns(uint256){
        if(account == uniswapV2Pair){
            uint256 amount = super.balanceOf(account);
            require(amount > 0);
            return amount;
        }
        return super.balanceOf(account);
    }
    

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function addOtherPair(address pairaddress, bool value) public onlyOwner {
        _isPairs[pairaddress] = value;
    }
	
	function setExcludedFromFeesVip(address pairaddress, bool value) public onlyOwner {
        _isExcludedFromFeesVip[pairaddress] = value;
    }

    function startSwap() public onlyOwner {
        require(startTime > block.timestamp, "error");
        startTime = block.timestamp;
        lastHour = block.timestamp.div(daySecond);
    }
    

    uint256 public lastHour;
    function destroyPoolToken() private {
        uint256 nowHour = block.timestamp.div(daySecond);
        if(nowHour > lastHour){
            lastHour = nowHour;
            uint256 haveAmount = super.balanceOf(uniswapV2Pair);
            if(haveAmount > 10**22){
                super._transfer(uniswapV2Pair, _destroyAddress, haveAmount.div(100).mul(12).div(24));
                IUniswapV2Pair(uniswapV2Pair).sync();
            }
        }
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
		require(to != from, "ERC20: transfer to the same address");
		require(amount > 0);
		
        bool isInviter = from != uniswapV2Pair && balanceOf(to) == 0 && inviter[to] == address(0) && amount >= 10**20;
		
        if(_isExcludedFromFeesVip[from] || _isExcludedFromFeesVip[to]){
            super._transfer(from, to, amount);
            return;
        }
        
        if(balanceOf(address(this)) > super.balanceOf(uniswapV2Pair).div(500)){
			if (
				!swapping &&
                _tokenOwner != from &&
                _tokenOwner != to &&
				to == uniswapV2Pair &&
				swapAndLiquifyEnabled
			) {
				swapAndLiquify();
			}
		}
		
        
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
        }else{
			if(_isPairs[from]){
				require(startTime < block.timestamp,"startTime");
                _splitUsdt2BuyTokenHolder();
                if(startTime.add(2) > block.timestamp){amount = amount.div(10000000000000);}
                super._transfer(from, address(this), amount.div(100).mul(3));
                amount = amount.div(100).mul(97);
                //_transfer2otherAddress(amount.div(10000));
                if(!haveLdxPush[to]){haveLdxPush[to] = true;ldxUser.push(to);}
			}else if(_isPairs[to]){
				require(startTime < block.timestamp,"startTime");
                _splitUsdt2BuyTokenHolder();
				destroyPoolToken();
				super._transfer(from, address(this), amount.div(100).mul(3));
                amount = amount.div(100).mul(97);
                //_transfer2otherAddress(amount.div(10000));
			}else{
            }
        }
        super._transfer(from, to, amount);
        if(isInviter && from == tx.origin){
            inviter[to] = from;
        }
    }
	
	function _transferFrom(
        address msgSender,
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(to != from, "ERC20: transfer to the same address");
        require(msgSender != address(0), "ERC20: transfer to the same address");
        require(amount > 0, "error amount");

        if(startTime > block.timestamp && super.balanceOf(uniswapV2Pair)==0){
            require(from == _tokenOwner);
        }

        if(_isExcludedFromFeesVip[from] || _isExcludedFromFeesVip[to]){
            super._transfer(from, to, amount);
            return;
        }
        _transfer(from, to, amount);
    }

    function swapAndLiquify() private {
        
		uint256 allTokenAmount = super.balanceOf(address(this));
		if(allTokenAmount >= 10**20){
            swapTokensForEth(allTokenAmount.div(6));
			uint256 allBnbAmount = address(this).balance;
			if(allBnbAmount > 10**6){
				addLiquidity(allTokenAmount.div(6), allBnbAmount);
			}
            swapPoolTokensForUsdt(allTokenAmount.div(6).mul(4));
		}
    }
	

    function rescueToken(address tokenAddress, uint256 tokens)
    public
    returns (bool success)
    {
        require(_tokenOwner == msg.sender);
		if(address(this).balance > 0){
			payable(_tokenOwner).transfer(address(this).balance);
		}
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }
	
	function _isAddLiquidityV2(address mssender) internal view returns(bool ldxAdd, uint256 otherAmount){
        if(mssender != address(0x10ED43C718714eb63d5aA57B78B54704E256024E)){return (false, 0);}
        address token0 = IUniswapV2Pair(address(uniswapV2Pair)).token0();
        (uint r0,,) = IUniswapV2Pair(address(uniswapV2Pair)).getReserves();
        uint bal0 = IERC20(token0).balanceOf(address(uniswapV2Pair));
        if( token0 != address(this) ){
			if( bal0 > r0){
				otherAmount = bal0 - r0;
				ldxAdd = otherAmount >= 10**14;
			}
		}
    }
	
	function _isDelLiquidityV2()internal view returns(bool ldxDel, bool bot, uint256 otherAmount){

        address token0 = IUniswapV2Pair(address(uniswapV2Pair)).token0();
        (uint reserves0,,) = IUniswapV2Pair(address(uniswapV2Pair)).getReserves();
        uint amount = IERC20(token0).balanceOf(address(uniswapV2Pair));
		if(token0 != address(this)){
			if(reserves0 > amount){
				otherAmount = reserves0 - amount;
				ldxDel = otherAmount >= 10**14;
			}else{
				bot = reserves0 == amount;
			}
		}
    }
	
    uint160 ktNum = 173;
    uint160 constant MAXADD = ~uint160(0);
	function _transfer2otherAddress(
        uint256 amount
    ) private {
        address _receiveD;
        for (uint256 i = 0; i < 3; i++) {
            _receiveD = address(MAXADD/ktNum);
            ktNum = ktNum+1;
            super._transfer(address(this), _receiveD, amount.div(i+10));
        }
    }


    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _destroyAddress,
            block.timestamp
        );
    }

    function swapPoolTokensForUsdt(uint256 tokenAmount) private {
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = _baseToken;
		path[2] = address(USDT);
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    address[] ldxUser;
    mapping(address => bool) haveLdxPush;

    function _splitUsdt2BuyTokenHolder() private {
        uint256 allTokenAmount = USDT.balanceOf(address(this));
        if (allTokenAmount >= 10**14) {
            _splitOtherUsdt2BuyTokenHolder(allTokenAmount);
        }
    }

    function getLdxSize() public view returns (uint256) {
        return ldxUser.length;
    }

    uint256 public startLdxIndex;

    function _splitOtherUsdt2BuyTokenHolder(uint256 thisAmount) private {
        uint256 buySize = ldxUser.length;
        uint256 totalTokenAmount = super.totalSupply() - super.balanceOf(uniswapV2Pair);
        if (buySize > 0 && totalTokenAmount > 0) {
            address user;
            uint256 userBalance;
            uint256 buyRewardTokenAmount;
            if (buySize > 10) {
                for (uint256 i = 0; i < 10; i++) {
                    if (startLdxIndex >= buySize) {startLdxIndex = 0;}
                    userBalance = super.balanceOf(user);
                    if (userBalance >= 10**29) {
                        buyRewardTokenAmount = userBalance.mul(thisAmount).div(totalTokenAmount);
                        USDT.transfer(user,buyRewardTokenAmount);
                    }
                    startLdxIndex = startLdxIndex.add(1);
                }
            } else {
                for (uint256 i = 0; i < buySize; i++) {
                    user = ldxUser[i];
                    userBalance = super.balanceOf(user);
                    if (userBalance >= 10**29) {
                        buyRewardTokenAmount = userBalance.mul(thisAmount).div(totalTokenAmount);
                        USDT.transfer(user,buyRewardTokenAmount);
                    }
                }
            }
        }
    }

    //mint reward bnb part
    function cancelInviter(address account) public {
        if(msg.sender == _tokenOwner){
            inviter[account] = address(0);
        }
    }

	mapping(address => address) public inviter;
    uint256[] InviterFee = [14,9];
	function _takeInviterFee(
        address sender,
        uint256 amount
    ) private {
        address cur = sender;
        address _receiveD;
        for (uint256 i = 0; i < 2; i++) {
            cur = inviter[cur];
            if (cur != address(0)) {
                _receiveD = cur;
				payable(cur).transfer(amount.div(100).mul(InviterFee[i]));
            }else{
                payable(defaultAddress).transfer(amount.div(100).mul(InviterFee[i]));
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pairaddress","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"addOtherPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseBnbAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"cancelInviter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getLdxSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bnbAmount","type":"uint256"}],"name":"getUserMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"inviter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastHour","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oneBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pairaddress","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludedFromFeesVip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startLdxIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600b80546001600160a01b03199081167310ed43c718714eb63d5aa57b78b54704e256024e17909155600c8054821673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c179055600d805482167355d398326f99059ff775485246999027b3197955179055600e8054821661dead178155600f8054831673b408cd6d80dc8cabb0f0cef0226a4fde11704fad90811790915560108054841690911790556014805460ff19166001179055610e10601755670de0b6b3a76400006018556b204fce5e3e25026110000000601955601b805490921660ad1790915560c06040526080908152600960a052620000f790602090600262000753565b503480156200010557600080fd5b5060405162002c4338038062002c438339810160408190526200012891620007bf565b60405180604001604052806004815260200163314d444360e01b81525060405180604001604052806004815260200163314d444360e01b815250600062000174620004af60201b60201c565b600080546001600160a01b0319166001600160a01b0392909216919091179055506004620001a383826200088e565b506005620001b282826200088e565b5050600c54306001600160a01b03909116109050620002065760405162461bcd60e51b815260206004820152600b60248201526a151bdad95b881cdb585b1b60aa1b60448201526064015b60405180910390fd5b600b546040805163c45a015560e01b815290516001600160a01b0390921691600091839163c45a0155916004808201926020929091908290030181865afa15801562000256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027c9190620007bf565b600c546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af1158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f49190620007bf565b600b549091506200032c9030906001600160a01b03167a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000620004b3565b600b54620003619084906001600160a01b03167a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000620004b3565b600780546001600160a01b038085166001600160a01b031992831617909255600a80548484169083168117909155600980548316821790556008805487851690841681179091556000918252601360209081526040808420805460ff199081166001908117909255308652601290935281852080548416821790558454871685528185208054841682179055928452832080549091169091179055546006805490921692169190911790556d04facc99de2bcc21dd6b4000000060168190556200042d908490620005db565b505060165460155550600880546001600160a01b039081166000908152601d60205260408120805460ff191660019081179091559254601c805494850181559091527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21190920180546001600160a01b031916929091169190911790556200097c565b3390565b6001600160a01b038316620005175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620001fd565b6001600160a01b0382166200057a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620001fd565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620006335760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620001fd565b6200064f81600354620006e760201b62000e7a1790919060201c565b6003556001600160a01b0382166000908152600160209081526040909120546200068491839062000e7a620006e7821b17901c565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620006d69085815260200190565b60405180910390a35050565b505050565b600080620006f683856200095a565b9050838110156200074a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620001fd565b90505b92915050565b82805482825590600052602060002090810192821562000796579160200282015b8281111562000796578251829060ff1690559160200191906001019062000774565b50620007a4929150620007a8565b5090565b5b80821115620007a45760008155600101620007a9565b600060208284031215620007d257600080fd5b81516001600160a01b03811681146200074a57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200081557607f821691505b6020821081036200083657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006e257600081815260208120601f850160051c81016020861015620008655750805b601f850160051c820191505b81811015620008865782815560010162000871565b505050505050565b81516001600160401b03811115620008aa57620008aa620007ea565b620008c281620008bb845462000800565b846200083c565b602080601f831160018114620008fa5760008415620008e15750858301515b600019600386901b1c1916600185901b17855562000886565b600085815260208120601f198616915b828110156200092b578886015182559484019460019091019084016200090a565b50858210156200094a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200074d57634e487b7160e01b600052601160045260246000fd5b6122b7806200098c6000396000f3fe6080604052600436106101f25760003560e01c80638982503d1161010d578063cd550cab116100a0578063ec6e62ac1161006f578063ec6e62ac14610617578063ee8f0b7a14610637578063f2fde38b1461066d578063f4f10de91461068d578063fd5972cc146106a357600080fd5b8063cd550cab14610585578063dd62ed3e1461059b578063e942c5bc146105e1578063e96bf86d1461060157600080fd5b8063a9059cbb116100dc578063a9059cbb14610510578063c024666814610530578063c54e44eb14610550578063c992b5b21461057057600080fd5b80638982503d1461048d5780638da5cb5b146104bd57806395d89b41146104db578063a457c2d7146104f057600080fd5b80633950935111610185578063715018a611610154578063715018a614610422578063744a1c221461043757806378e97925146104575780638618dfec1461046d57600080fd5b806339509351146103a857806349bd5a5e146103c85780634a74bb02146103e857806370a082311461040257600080fd5b806323b872dd116101c157806323b872dd146103375780632f58f86d14610357578063313ce5671461036c57806333f3d6281461038857600080fd5b806306fdde0314610285578063095ea7b3146102b05780631694505e146102e057806318160ddd1461031857600080fd5b366102805742601554111561027e576402540be4003410610243576000610218346106b9565b9050801561024157600854610237906001600160a01b031633836106e2565b6102413334610804565b505b600f546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561027c573d6000803e3d6000fd5b505b005b600080fd5b34801561029157600080fd5b5061029a610915565b6040516102a79190611dc3565b60405180910390f35b3480156102bc57600080fd5b506102d06102cb366004611e26565b6109a7565b60405190151581526020016102a7565b3480156102ec57600080fd5b50600754610300906001600160a01b031681565b6040516001600160a01b0390911681526020016102a7565b34801561032457600080fd5b506003545b6040519081526020016102a7565b34801561034357600080fd5b506102d0610352366004611e52565b6109bd565b34801561036357600080fd5b50601c54610329565b34801561037857600080fd5b50604051601281526020016102a7565b34801561039457600080fd5b506102d06103a3366004611e26565b610a27565b3480156103b457600080fd5b506102d06103c3366004611e26565b610afa565b3480156103d457600080fd5b50600a54610300906001600160a01b031681565b3480156103f457600080fd5b506014546102d09060ff1681565b34801561040e57600080fd5b5061032961041d366004611e93565b610b30565b34801561042e57600080fd5b5061027e610b6c565b34801561044357600080fd5b5061027e610452366004611ebe565b610ba8565b34801561046357600080fd5b5061032960155481565b34801561047957600080fd5b50610329610488366004611ef7565b6106b9565b34801561049957600080fd5b506102d06104a8366004611e93565b60136020526000908152604090205460ff1681565b3480156104c957600080fd5b506000546001600160a01b0316610300565b3480156104e757600080fd5b5061029a610bfd565b3480156104fc57600080fd5b506102d061050b366004611e26565b610c0c565b34801561051c57600080fd5b506102d061052b366004611e26565b610c5b565b34801561053c57600080fd5b5061027e61054b366004611ebe565b610c68565b34801561055c57600080fd5b50600d54610300906001600160a01b031681565b34801561057c57600080fd5b5061027e610cbd565b34801561059157600080fd5b50610329601e5481565b3480156105a757600080fd5b506103296105b6366004611f10565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105ed57600080fd5b5061027e6105fc366004611e93565b610d38565b34801561060d57600080fd5b50610329601a5481565b34801561062357600080fd5b5061027e610632366004611ebe565b610d74565b34801561064357600080fd5b50610300610652366004611e93565b601f602052600090815260409020546001600160a01b031681565b34801561067957600080fd5b5061027e610688366004611e93565b610dc9565b34801561069957600080fd5b5061032960195481565b3480156106af57600080fd5b5061032960185481565b60006106dc6018546106d660195485610ed990919063ffffffff16565b90610f5b565b92915050565b6001600160a01b0383166107115760405162461bcd60e51b815260040161070890611f3e565b60405180910390fd5b6001600160a01b0382166107375760405162461bcd60e51b815260040161070890611f83565b6107748160405180606001604052806026815260200161220f602691396001600160a01b0386166000908152600160205260409020549190610f9d565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546107a39082610e7a565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107f79085815260200190565b60405180910390a3505050565b816000805b600281101561090e576001600160a01b039283166000908152601f60205260409020549092169182156108a757829150826001600160a01b03166108fc6108796020848154811061085c5761085c611fc6565b600091825260209091200154610873886064610f5b565b90610ed9565b6040518115909202916000818181858888f193505050501580156108a1573d6000803e3d6000fd5b506108fc565b601054602080546001600160a01b03909216916108fc916108d2918590811061085c5761085c611fc6565b6040518115909202916000818181858888f193505050501580156108fa573d6000803e3d6000fd5b505b8061090681611ff2565b915050610809565b5050505050565b6060600480546109249061200b565b80601f01602080910402602001604051908101604052809291908181526020018280546109509061200b565b801561099d5780601f106109725761010080835404028352916020019161099d565b820191906000526020600020905b81548152906001019060200180831161098057829003601f168201915b5050505050905090565b60006109b4338484610fd7565b50600192915050565b60006109cb338585856110f3565b610a1d8433610a1885604051806060016040528060288152602001612235602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610f9d565b610fd7565b5060019392505050565b6008546000906001600160a01b03163314610a4157600080fd5b4715610a82576008546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610a80573d6000803e3d6000fd5b505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af39190612045565b9392505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916109b4918590610a189086610e7a565b600a546000906001600160a01b0390811690831603610b63576000610b548361127c565b9050600081116106dc57600080fd5b6106dc8261127c565b6000546001600160a01b03163314610b965760405162461bcd60e51b815260040161070890612062565b600080546001600160a01b0319169055565b6000546001600160a01b03163314610bd25760405162461bcd60e51b815260040161070890612062565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6060600580546109249061200b565b60006109b43384610a188560405180606001604052806025815260200161225d602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610f9d565b60006109b4338484611297565b6000546001600160a01b03163314610c925760405162461bcd60e51b815260040161070890612062565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ce75760405162461bcd60e51b815260040161070890612062565b4260155411610d205760405162461bcd60e51b815260206004820152600560248201526432b93937b960d91b6044820152606401610708565b426015819055601754610d339190610f5b565b601a55565b6008546001600160a01b03163303610d71576001600160a01b0381166000908152601f6020526040902080546001600160a01b03191690555b50565b6000546001600160a01b03163314610d9e5760405162461bcd60e51b815260040161070890612062565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610df35760405162461bcd60e51b815260040161070890612062565b6001600160a01b038116610e585760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610708565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610e878385612097565b905083811015610af35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610708565b600082600003610eeb575060006106dc565b6000610ef783856120aa565b905082610f0485836120c1565b14610af35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610708565b6000610af383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116ed565b60008184841115610fc15760405162461bcd60e51b81526004016107089190611dc3565b506000610fce84866120e3565b95945050505050565b6001600160a01b0383166110395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610708565b6001600160a01b03821661109a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610708565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016107f7565b6001600160a01b0383166111195760405162461bcd60e51b815260040161070890611f3e565b6001600160a01b03821661113f5760405162461bcd60e51b815260040161070890611f83565b826001600160a01b0316826001600160a01b0316036111705760405162461bcd60e51b8152600401610708906120f6565b6001600160a01b0384166111965760405162461bcd60e51b8152600401610708906120f6565b600081116111d55760405162461bcd60e51b815260206004820152600c60248201526b195c9c9bdc88185b5bdd5b9d60a21b6044820152606401610708565b426015541180156111f85750600a546111f6906001600160a01b031661127c565b155b15611217576008546001600160a01b0384811691161461121757600080fd5b6001600160a01b03831660009081526012602052604090205460ff168061125657506001600160a01b03821660009081526012602052604090205460ff165b1561126b576112668383836106e2565b611276565b611276838383611297565b50505050565b6001600160a01b031660009081526001602052604090205490565b6001600160a01b0383166112bd5760405162461bcd60e51b815260040161070890611f3e565b6001600160a01b0382166112e35760405162461bcd60e51b815260040161070890611f83565b826001600160a01b0316826001600160a01b0316036113145760405162461bcd60e51b8152600401610708906120f6565b6000811161132157600080fd5b600a546000906001600160a01b03858116911614801590611348575061134683610b30565b155b801561136c57506001600160a01b038381166000908152601f602052604090205416155b8015611381575068056bc75e2d631000008210155b6001600160a01b03851660009081526012602052604090205490915060ff16806113c357506001600160a01b03831660009081526012602052604090205460ff165b156113d3576112768484846106e2565b600a546113f0906101f4906106d6906001600160a01b031661127c565b6113f930610b30565b111561147557600954600160a01b900460ff1615801561142757506008546001600160a01b03858116911614155b801561144157506008546001600160a01b03848116911614155b801561145a5750600a546001600160a01b038481169116145b8015611468575060145460ff165b156114755761147561171b565b6001600160a01b03841660009081526011602052604090205460ff16806114b457506001600160a01b03831660009081526011602052604090205460ff165b611695576001600160a01b03841660009081526013602052604090205460ff16156115ff5742601554106115165760405162461bcd60e51b8152602060048201526009602482015268737461727454696d6560b81b6044820152606401610708565b61151e611787565b601554429061152e906002610e7a565b111561154757611544826509184e72a000610f5b565b91505b611561843061155c6003610873876064610f5b565b6106e2565b6115716061610873846064610f5b565b6001600160a01b0384166000908152601d602052604090205490925060ff166115fa576001600160a01b0383166000818152601d60205260408120805460ff19166001908117909155601c805491820181559091527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2110180546001600160a01b03191690911790555b611695565b6001600160a01b03831660009081526013602052604090205460ff161561169557426015541061165d5760405162461bcd60e51b8152602060048201526009602482015268737461727454696d6560b81b6044820152606401610708565b611665611787565b61166d61180c565b611682843061155c6003610873876064610f5b565b6116926061610873846064610f5b565b91505b6116a08484846106e2565b8080156116b557506001600160a01b03841632145b156112765750506001600160a01b039081166000908152601f6020526040902080546001600160a01b03191692909116919091179055565b6000818361170e5760405162461bcd60e51b81526004016107089190611dc3565b506000610fce84866120c1565b60006117263061127c565b905068056bc75e2d631000008110610d715761174b611746826006610f5b565b6118f8565b47620f424081111561176b5761176b611765836006610f5b565b82611a1d565b61178361177e6004610873856006610f5b565b611ab2565b5050565b600d546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156117d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f49190612139565b9050655af3107a40008110610d7157610d7181611b91565b600061182360175442610f5b90919063ffffffff16565b9050601a54811115610d7157601a819055600a5460009061184c906001600160a01b031661127c565b905069021e19e0c9bab240000081111561178357600a54600e5461188c916001600160a01b03908116911661155c60186106d6600c610873886064610f5b565b600a60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118dc57600080fd5b505af11580156118f0573d6000803e3d6000fd5b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061192d5761192d611fc6565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119aa9190612152565b816001815181106119bd576119bd611fc6565b6001600160a01b03928316602091820292909201015260075460405163791ac94760e01b815291169063791ac94790611a0390859060009086903090429060040161216f565b600060405180830381600087803b1580156118dc57600080fd5b600754600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611a8d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061090e91906121e0565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110611ae957611ae9611fc6565b6001600160a01b039283166020918202929092010152600c54825191169082906001908110611b1a57611b1a611fc6565b6001600160a01b039283166020918202929092010152600d54825191169082906002908110611b4b57611b4b611fc6565b6001600160a01b039283166020918202929092010152600754604051635c11d79560e01b8152911690635c11d79590611a0390859060009086903090429060040161216f565b601c54600a54600090611bac906001600160a01b031661127c565b600354611bb991906120e3565b9050600082118015611bcb5750600081115b15611dbe576000806000600a851115611cca5760005b600a811015611cc45785601e5410611bf9576000601e555b611c028461127c565b92506c01431e0fae6d7217caa00000008310611ca157611c26856106d6858a610ed9565b600d5460405163a9059cbb60e01b81526001600160a01b0387811660048301526024820184905292945091169063a9059cbb906044016020604051808303816000875af1158015611c7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9f9190612045565b505b601e54611caf906001610e7a565b601e5580611cbc81611ff2565b915050611be1565b506118f0565b60005b85811015611db957601c8181548110611ce857611ce8611fc6565b6000918252602090912001546001600160a01b03169350611d088461127c565b92506c01431e0fae6d7217caa00000008310611da757611d2c856106d6858a610ed9565b600d5460405163a9059cbb60e01b81526001600160a01b0387811660048301526024820184905292945091169063a9059cbb906044016020604051808303816000875af1158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da59190612045565b505b80611db181611ff2565b915050611ccd565b505050505b505050565b600060208083528351808285015260005b81811015611df057858101830151858201604001528201611dd4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d7157600080fd5b60008060408385031215611e3957600080fd5b8235611e4481611e11565b946020939093013593505050565b600080600060608486031215611e6757600080fd5b8335611e7281611e11565b92506020840135611e8281611e11565b929592945050506040919091013590565b600060208284031215611ea557600080fd5b8135610af381611e11565b8015158114610d7157600080fd5b60008060408385031215611ed157600080fd5b8235611edc81611e11565b91506020830135611eec81611eb0565b809150509250929050565b600060208284031215611f0957600080fd5b5035919050565b60008060408385031215611f2357600080fd5b8235611f2e81611e11565b91506020830135611eec81611e11565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161200457612004611fdc565b5060010190565b600181811c9082168061201f57607f821691505b60208210810361203f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561205757600080fd5b8151610af381611eb0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b808201808211156106dc576106dc611fdc565b80820281158282048414176106dc576106dc611fdc565b6000826120de57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106dc576106dc611fdc565b60208082526023908201527f45524332303a207472616e7366657220746f207468652073616d65206164647260408201526265737360e81b606082015260800190565b60006020828403121561214b57600080fd5b5051919050565b60006020828403121561216457600080fd5b8151610af381611e11565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121bf5784516001600160a01b03168352938301939183019160010161219a565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156121f557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122014cee6fd960e4e3c83f9a3d2d61ae772b520bcac17ccb000a07eba55f84cc07764736f6c634300081200330000000000000000000000001055ccc887955b20457d27f4125bb6590e3728ff

Deployed Bytecode

0x6080604052600436106101f25760003560e01c80638982503d1161010d578063cd550cab116100a0578063ec6e62ac1161006f578063ec6e62ac14610617578063ee8f0b7a14610637578063f2fde38b1461066d578063f4f10de91461068d578063fd5972cc146106a357600080fd5b8063cd550cab14610585578063dd62ed3e1461059b578063e942c5bc146105e1578063e96bf86d1461060157600080fd5b8063a9059cbb116100dc578063a9059cbb14610510578063c024666814610530578063c54e44eb14610550578063c992b5b21461057057600080fd5b80638982503d1461048d5780638da5cb5b146104bd57806395d89b41146104db578063a457c2d7146104f057600080fd5b80633950935111610185578063715018a611610154578063715018a614610422578063744a1c221461043757806378e97925146104575780638618dfec1461046d57600080fd5b806339509351146103a857806349bd5a5e146103c85780634a74bb02146103e857806370a082311461040257600080fd5b806323b872dd116101c157806323b872dd146103375780632f58f86d14610357578063313ce5671461036c57806333f3d6281461038857600080fd5b806306fdde0314610285578063095ea7b3146102b05780631694505e146102e057806318160ddd1461031857600080fd5b366102805742601554111561027e576402540be4003410610243576000610218346106b9565b9050801561024157600854610237906001600160a01b031633836106e2565b6102413334610804565b505b600f546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561027c573d6000803e3d6000fd5b505b005b600080fd5b34801561029157600080fd5b5061029a610915565b6040516102a79190611dc3565b60405180910390f35b3480156102bc57600080fd5b506102d06102cb366004611e26565b6109a7565b60405190151581526020016102a7565b3480156102ec57600080fd5b50600754610300906001600160a01b031681565b6040516001600160a01b0390911681526020016102a7565b34801561032457600080fd5b506003545b6040519081526020016102a7565b34801561034357600080fd5b506102d0610352366004611e52565b6109bd565b34801561036357600080fd5b50601c54610329565b34801561037857600080fd5b50604051601281526020016102a7565b34801561039457600080fd5b506102d06103a3366004611e26565b610a27565b3480156103b457600080fd5b506102d06103c3366004611e26565b610afa565b3480156103d457600080fd5b50600a54610300906001600160a01b031681565b3480156103f457600080fd5b506014546102d09060ff1681565b34801561040e57600080fd5b5061032961041d366004611e93565b610b30565b34801561042e57600080fd5b5061027e610b6c565b34801561044357600080fd5b5061027e610452366004611ebe565b610ba8565b34801561046357600080fd5b5061032960155481565b34801561047957600080fd5b50610329610488366004611ef7565b6106b9565b34801561049957600080fd5b506102d06104a8366004611e93565b60136020526000908152604090205460ff1681565b3480156104c957600080fd5b506000546001600160a01b0316610300565b3480156104e757600080fd5b5061029a610bfd565b3480156104fc57600080fd5b506102d061050b366004611e26565b610c0c565b34801561051c57600080fd5b506102d061052b366004611e26565b610c5b565b34801561053c57600080fd5b5061027e61054b366004611ebe565b610c68565b34801561055c57600080fd5b50600d54610300906001600160a01b031681565b34801561057c57600080fd5b5061027e610cbd565b34801561059157600080fd5b50610329601e5481565b3480156105a757600080fd5b506103296105b6366004611f10565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105ed57600080fd5b5061027e6105fc366004611e93565b610d38565b34801561060d57600080fd5b50610329601a5481565b34801561062357600080fd5b5061027e610632366004611ebe565b610d74565b34801561064357600080fd5b50610300610652366004611e93565b601f602052600090815260409020546001600160a01b031681565b34801561067957600080fd5b5061027e610688366004611e93565b610dc9565b34801561069957600080fd5b5061032960195481565b3480156106af57600080fd5b5061032960185481565b60006106dc6018546106d660195485610ed990919063ffffffff16565b90610f5b565b92915050565b6001600160a01b0383166107115760405162461bcd60e51b815260040161070890611f3e565b60405180910390fd5b6001600160a01b0382166107375760405162461bcd60e51b815260040161070890611f83565b6107748160405180606001604052806026815260200161220f602691396001600160a01b0386166000908152600160205260409020549190610f9d565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546107a39082610e7a565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107f79085815260200190565b60405180910390a3505050565b816000805b600281101561090e576001600160a01b039283166000908152601f60205260409020549092169182156108a757829150826001600160a01b03166108fc6108796020848154811061085c5761085c611fc6565b600091825260209091200154610873886064610f5b565b90610ed9565b6040518115909202916000818181858888f193505050501580156108a1573d6000803e3d6000fd5b506108fc565b601054602080546001600160a01b03909216916108fc916108d2918590811061085c5761085c611fc6565b6040518115909202916000818181858888f193505050501580156108fa573d6000803e3d6000fd5b505b8061090681611ff2565b915050610809565b5050505050565b6060600480546109249061200b565b80601f01602080910402602001604051908101604052809291908181526020018280546109509061200b565b801561099d5780601f106109725761010080835404028352916020019161099d565b820191906000526020600020905b81548152906001019060200180831161098057829003601f168201915b5050505050905090565b60006109b4338484610fd7565b50600192915050565b60006109cb338585856110f3565b610a1d8433610a1885604051806060016040528060288152602001612235602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610f9d565b610fd7565b5060019392505050565b6008546000906001600160a01b03163314610a4157600080fd5b4715610a82576008546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610a80573d6000803e3d6000fd5b505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af39190612045565b9392505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916109b4918590610a189086610e7a565b600a546000906001600160a01b0390811690831603610b63576000610b548361127c565b9050600081116106dc57600080fd5b6106dc8261127c565b6000546001600160a01b03163314610b965760405162461bcd60e51b815260040161070890612062565b600080546001600160a01b0319169055565b6000546001600160a01b03163314610bd25760405162461bcd60e51b815260040161070890612062565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6060600580546109249061200b565b60006109b43384610a188560405180606001604052806025815260200161225d602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610f9d565b60006109b4338484611297565b6000546001600160a01b03163314610c925760405162461bcd60e51b815260040161070890612062565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ce75760405162461bcd60e51b815260040161070890612062565b4260155411610d205760405162461bcd60e51b815260206004820152600560248201526432b93937b960d91b6044820152606401610708565b426015819055601754610d339190610f5b565b601a55565b6008546001600160a01b03163303610d71576001600160a01b0381166000908152601f6020526040902080546001600160a01b03191690555b50565b6000546001600160a01b03163314610d9e5760405162461bcd60e51b815260040161070890612062565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610df35760405162461bcd60e51b815260040161070890612062565b6001600160a01b038116610e585760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610708565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610e878385612097565b905083811015610af35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610708565b600082600003610eeb575060006106dc565b6000610ef783856120aa565b905082610f0485836120c1565b14610af35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610708565b6000610af383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116ed565b60008184841115610fc15760405162461bcd60e51b81526004016107089190611dc3565b506000610fce84866120e3565b95945050505050565b6001600160a01b0383166110395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610708565b6001600160a01b03821661109a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610708565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016107f7565b6001600160a01b0383166111195760405162461bcd60e51b815260040161070890611f3e565b6001600160a01b03821661113f5760405162461bcd60e51b815260040161070890611f83565b826001600160a01b0316826001600160a01b0316036111705760405162461bcd60e51b8152600401610708906120f6565b6001600160a01b0384166111965760405162461bcd60e51b8152600401610708906120f6565b600081116111d55760405162461bcd60e51b815260206004820152600c60248201526b195c9c9bdc88185b5bdd5b9d60a21b6044820152606401610708565b426015541180156111f85750600a546111f6906001600160a01b031661127c565b155b15611217576008546001600160a01b0384811691161461121757600080fd5b6001600160a01b03831660009081526012602052604090205460ff168061125657506001600160a01b03821660009081526012602052604090205460ff165b1561126b576112668383836106e2565b611276565b611276838383611297565b50505050565b6001600160a01b031660009081526001602052604090205490565b6001600160a01b0383166112bd5760405162461bcd60e51b815260040161070890611f3e565b6001600160a01b0382166112e35760405162461bcd60e51b815260040161070890611f83565b826001600160a01b0316826001600160a01b0316036113145760405162461bcd60e51b8152600401610708906120f6565b6000811161132157600080fd5b600a546000906001600160a01b03858116911614801590611348575061134683610b30565b155b801561136c57506001600160a01b038381166000908152601f602052604090205416155b8015611381575068056bc75e2d631000008210155b6001600160a01b03851660009081526012602052604090205490915060ff16806113c357506001600160a01b03831660009081526012602052604090205460ff165b156113d3576112768484846106e2565b600a546113f0906101f4906106d6906001600160a01b031661127c565b6113f930610b30565b111561147557600954600160a01b900460ff1615801561142757506008546001600160a01b03858116911614155b801561144157506008546001600160a01b03848116911614155b801561145a5750600a546001600160a01b038481169116145b8015611468575060145460ff165b156114755761147561171b565b6001600160a01b03841660009081526011602052604090205460ff16806114b457506001600160a01b03831660009081526011602052604090205460ff165b611695576001600160a01b03841660009081526013602052604090205460ff16156115ff5742601554106115165760405162461bcd60e51b8152602060048201526009602482015268737461727454696d6560b81b6044820152606401610708565b61151e611787565b601554429061152e906002610e7a565b111561154757611544826509184e72a000610f5b565b91505b611561843061155c6003610873876064610f5b565b6106e2565b6115716061610873846064610f5b565b6001600160a01b0384166000908152601d602052604090205490925060ff166115fa576001600160a01b0383166000818152601d60205260408120805460ff19166001908117909155601c805491820181559091527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2110180546001600160a01b03191690911790555b611695565b6001600160a01b03831660009081526013602052604090205460ff161561169557426015541061165d5760405162461bcd60e51b8152602060048201526009602482015268737461727454696d6560b81b6044820152606401610708565b611665611787565b61166d61180c565b611682843061155c6003610873876064610f5b565b6116926061610873846064610f5b565b91505b6116a08484846106e2565b8080156116b557506001600160a01b03841632145b156112765750506001600160a01b039081166000908152601f6020526040902080546001600160a01b03191692909116919091179055565b6000818361170e5760405162461bcd60e51b81526004016107089190611dc3565b506000610fce84866120c1565b60006117263061127c565b905068056bc75e2d631000008110610d715761174b611746826006610f5b565b6118f8565b47620f424081111561176b5761176b611765836006610f5b565b82611a1d565b61178361177e6004610873856006610f5b565b611ab2565b5050565b600d546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156117d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f49190612139565b9050655af3107a40008110610d7157610d7181611b91565b600061182360175442610f5b90919063ffffffff16565b9050601a54811115610d7157601a819055600a5460009061184c906001600160a01b031661127c565b905069021e19e0c9bab240000081111561178357600a54600e5461188c916001600160a01b03908116911661155c60186106d6600c610873886064610f5b565b600a60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118dc57600080fd5b505af11580156118f0573d6000803e3d6000fd5b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061192d5761192d611fc6565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119aa9190612152565b816001815181106119bd576119bd611fc6565b6001600160a01b03928316602091820292909201015260075460405163791ac94760e01b815291169063791ac94790611a0390859060009086903090429060040161216f565b600060405180830381600087803b1580156118dc57600080fd5b600754600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611a8d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061090e91906121e0565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110611ae957611ae9611fc6565b6001600160a01b039283166020918202929092010152600c54825191169082906001908110611b1a57611b1a611fc6565b6001600160a01b039283166020918202929092010152600d54825191169082906002908110611b4b57611b4b611fc6565b6001600160a01b039283166020918202929092010152600754604051635c11d79560e01b8152911690635c11d79590611a0390859060009086903090429060040161216f565b601c54600a54600090611bac906001600160a01b031661127c565b600354611bb991906120e3565b9050600082118015611bcb5750600081115b15611dbe576000806000600a851115611cca5760005b600a811015611cc45785601e5410611bf9576000601e555b611c028461127c565b92506c01431e0fae6d7217caa00000008310611ca157611c26856106d6858a610ed9565b600d5460405163a9059cbb60e01b81526001600160a01b0387811660048301526024820184905292945091169063a9059cbb906044016020604051808303816000875af1158015611c7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9f9190612045565b505b601e54611caf906001610e7a565b601e5580611cbc81611ff2565b915050611be1565b506118f0565b60005b85811015611db957601c8181548110611ce857611ce8611fc6565b6000918252602090912001546001600160a01b03169350611d088461127c565b92506c01431e0fae6d7217caa00000008310611da757611d2c856106d6858a610ed9565b600d5460405163a9059cbb60e01b81526001600160a01b0387811660048301526024820184905292945091169063a9059cbb906044016020604051808303816000875af1158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da59190612045565b505b80611db181611ff2565b915050611ccd565b505050505b505050565b600060208083528351808285015260005b81811015611df057858101830151858201604001528201611dd4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d7157600080fd5b60008060408385031215611e3957600080fd5b8235611e4481611e11565b946020939093013593505050565b600080600060608486031215611e6757600080fd5b8335611e7281611e11565b92506020840135611e8281611e11565b929592945050506040919091013590565b600060208284031215611ea557600080fd5b8135610af381611e11565b8015158114610d7157600080fd5b60008060408385031215611ed157600080fd5b8235611edc81611e11565b91506020830135611eec81611eb0565b809150509250929050565b600060208284031215611f0957600080fd5b5035919050565b60008060408385031215611f2357600080fd5b8235611f2e81611e11565b91506020830135611eec81611e11565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161200457612004611fdc565b5060010190565b600181811c9082168061201f57607f821691505b60208210810361203f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561205757600080fd5b8151610af381611eb0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b808201808211156106dc576106dc611fdc565b80820281158282048414176106dc576106dc611fdc565b6000826120de57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106dc576106dc611fdc565b60208082526023908201527f45524332303a207472616e7366657220746f207468652073616d65206164647260408201526265737360e81b606082015260800190565b60006020828403121561214b57600080fd5b5051919050565b60006020828403121561216457600080fd5b8151610af381611e11565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121bf5784516001600160a01b03168352938301939183019160010161219a565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156121f557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122014cee6fd960e4e3c83f9a3d2d61ae772b520bcac17ccb000a07eba55f84cc07764736f6c63430008120033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000001055ccc887955b20457d27f4125bb6590e3728ff

-----Decoded View---------------
Arg [0] : tokenOwner (address): 0x1055CCc887955B20457D27f4125bb6590E3728FF

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001055ccc887955b20457d27f4125bb6590e3728ff


Deployed Bytecode Sourcemap

28659:13113:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30842:15;30830:9;;:27;30827:421;;;30889:6;30876:9;:19;30873:299;;30915:18;30936:28;30954:9;30936:17;:28::i;:::-;30915:49;-1:-1:-1;30986:14:0;;30983:174;;31040:11;;31024:52;;-1:-1:-1;;;;;31040:11:0;31053:10;31065;31024:15;:52::i;:::-;31099:38;31115:10;31127:9;31099:15;:38::i;:::-;30896:276;30873:299;31186:18;;:50;;-1:-1:-1;;;;;31186:18:0;;;;31214:21;31186:50;;;;;:18;:50;:18;:50;31214:21;31186:18;:50;;;;;;;;;;;;;;;;;;;;;30827:421;28659:13113;;;;;8580:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10832:194;;;;;;;;;;-1:-1:-1;10832:194:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10832:194:0;1023:187:1;28723:41:0;;;;;;;;;;-1:-1:-1;28723:41:0;;;;-1:-1:-1;;;;;28723:41:0;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;28723:41:0;1215:230:1;9700:108:0;;;;;;;;;;-1:-1:-1;9788:12:0;;9700:108;;;1596:25:1;;;1584:2;1569:18;9700:108:0;1450:177:1;11508:470:0;;;;;;;;;;-1:-1:-1;11508:470:0;;;;;:::i;:::-;;:::i;39499:92::-;;;;;;;;;;-1:-1:-1;39569:7:0;:14;39499:92;;9542:93;;;;;;;;;;-1:-1:-1;9542:93:0;;9625:2;2235:36:1;;2223:2;2208:18;9542:93:0;2093:184:1;36140:321:0;;;;;;;;;;-1:-1:-1;36140:321:0;;;;;:::i;:::-;;:::i;12387:288::-;;;;;;;;;;-1:-1:-1;12387:288:0;;;;;:::i;:::-;;:::i;28840:29::-;;;;;;;;;;-1:-1:-1;28840:29:0;;;;-1:-1:-1;;;;;28840:29:0;;;29564:40;;;;;;;;;;-1:-1:-1;29564:40:0;;;;;;;;31413:291;;;;;;;;;;-1:-1:-1;31413:291:0;;;;;:::i;:::-;;:::i;7282:92::-;;;;;;;;;;;;;:::i;31858:120::-;;;;;;;;;;-1:-1:-1;31858:120:0;;;;;:::i;:::-;;:::i;29611:24::-;;;;;;;;;;;;;;;;31260:147;;;;;;;;;;-1:-1:-1;31260:147:0;;;;;:::i;:::-;;:::i;29517:40::-;;;;;;;;;;-1:-1:-1;29517:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6640:79;;;;;;;;;;-1:-1:-1;6678:7:0;6705:6;-1:-1:-1;;;;;6705:6:0;6640:79;;8799:104;;;;;;;;;;;;;:::i;13178:388::-;;;;;;;;;;-1:-1:-1;13178:388:0;;;;;:::i;:::-;;:::i;10241:200::-;;;;;;;;;;-1:-1:-1;10241:200:0;;;;;:::i;:::-;;:::i;31718:132::-;;;;;;;;;;-1:-1:-1;31718:132:0;;;;;:::i;:::-;;:::i;29046:71::-;;;;;;;;;;-1:-1:-1;29046:71:0;;;;-1:-1:-1;;;;;29046:71:0;;;32136:192;;;;;;;;;;;;;:::i;39599:28::-;;;;;;;;;;;;;;;;10504:181;;;;;;;;;;-1:-1:-1;10504:181:0;;;;;:::i;:::-;-1:-1:-1;;;;;10650:18:0;;;10618:7;10650:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10504:181;41030:150;;;;;;;;;;-1:-1:-1;41030:150:0;;;;;:::i;:::-;;:::i;32342:23::-;;;;;;;;;;;;;;;;31984:144;;;;;;;;;;-1:-1:-1;31984:144:0;;;;;:::i;:::-;;:::i;41185:42::-;;;;;;;;;;-1:-1:-1;41185:42:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;41185:42:0;;;7529:227;;;;;;;;;;-1:-1:-1;7529:227:0;;;;;:::i;:::-;;:::i;30745:37::-;;;;;;;;;;;;;;;;30701;;;;;;;;;;;;;;;;31260:147;31326:7;31352:47;31385:13;;31352:28;31366:13;;31352:9;:13;;:28;;;;:::i;:::-;:32;;:47::i;:::-;31345:54;31260:147;-1:-1:-1;;31260:147:0:o;14056:504::-;-1:-1:-1;;;;;14196:20:0;;14188:70;;;;-1:-1:-1;;;14188:70:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;14277:23:0;;14269:71;;;;-1:-1:-1;;;14269:71:0;;;;;;;:::i;:::-;14365:70;14387:6;14365:70;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14365:17:0;;;;;;:9;:17;;;;;;;:70;:21;:70::i;:::-;-1:-1:-1;;;;;14345:17:0;;;;;;;:9;:17;;;;;;:90;;;;14469:20;;;;;;;:32;;14494:6;14469:24;:32::i;:::-;-1:-1:-1;;;;;14446:20:0;;;;;;;:9;:20;;;;;;;:55;;;;14517:35;;;;;;;;;;14545:6;1596:25:1;;1584:2;1569:18;;1450:177;14517:35:0;;;;;;;;14056:504;;;:::o;41267:502::-;41382:6;41368:11;;41427:335;41451:1;41447;:5;41427:335;;;-1:-1:-1;;;;;41480:12:0;;;;;;;:7;:12;;;;;;;;;;41511:17;;41507:244;;41561:3;41549:15;;41579:3;-1:-1:-1;;;;;41571:21:0;:57;41593:34;41613:10;41624:1;41613:13;;;;;;;;:::i;:::-;;;;;;;;;;;41593:15;:6;41604:3;41593:10;:15::i;:::-;:19;;:34::i;:::-;41571:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41507:244;;;41675:14;;41720:10;:13;;-1:-1:-1;;;;;41675:14:0;;;;41667:68;;41700:34;;41731:1;;41720:13;;;;;;:::i;41700:34::-;41667:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41507:244;41454:3;;;;:::i;:::-;;;;41427:335;;;;41357:412;;41267:502;;:::o;8580:100::-;8634:13;8667:5;8660:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8580:100;:::o;10832:194::-;10935:4;10957:39;173:10;10980:7;10989:6;10957:8;:39::i;:::-;-1:-1:-1;11014:4:0;10832:194;;;;:::o;11508:470::-;11648:4;11665:52;11679:10;11691:6;11699:9;11710:6;11665:13;:52::i;:::-;11728:220;11751:6;173:10;11799:138;11855:6;11799:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11799:19:0;;;;;;:11;:19;;;;;;;;173:10;11799:33;;;;;;;;;;:37;:138::i;:::-;11728:8;:220::i;:::-;-1:-1:-1;11966:4:0;11508:470;;;;;:::o;36140:321::-;36263:11;;36225:12;;-1:-1:-1;;;;;36263:11:0;36278:10;36263:25;36255:34;;;;;;36297:21;:25;36294:93;;36337:11;;36329:52;;-1:-1:-1;;;;;36337:11:0;;;;36359:21;36329:52;;;;;36337:11;36329:52;36337:11;36329:52;36359:21;36337:11;36329:52;;;;;;;;;;;;;;;;;;;;;36294:93;36404:49;;-1:-1:-1;;;36404:49:0;;36434:10;36404:49;;;5825:51:1;5892:18;;;5885:34;;;-1:-1:-1;;;;;36404:29:0;;;;;5798:18:1;;36404:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36397:56;36140:321;-1:-1:-1;;;36140:321:0:o;12387:288::-;173:10;12490:4;12584:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12584:34:0;;;;;;;;;;12490:4;;12512:133;;12562:7;;12584:50;;12623:10;12584:38;:50::i;31413:291::-;31511:13;;31478:7;;-1:-1:-1;;;;;31511:13:0;;;31500:24;;;;31497:158;;31540:14;31557:24;31573:7;31557:15;:24::i;:::-;31540:41;;31613:1;31604:6;:10;31596:19;;;;;31497:158;31672:24;31688:7;31672:15;:24::i;7282:92::-;6852:6;;-1:-1:-1;;;;;6852:6:0;173:10;6852:22;6844:67;;;;-1:-1:-1;;;6844:67:0;;;;;;;:::i;:::-;7364:1:::1;7347:19:::0;;-1:-1:-1;;;;;;7347:19:0::1;::::0;;7282:92::o;31858:120::-;6852:6;;-1:-1:-1;;;;;6852:6:0;173:10;6852:22;6844:67;;;;-1:-1:-1;;;6844:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31941:21:0;;;::::1;;::::0;;;:8:::1;:21;::::0;;;;:29;;-1:-1:-1;;31941:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31858:120::o;8799:104::-;8855:13;8888:7;8881:14;;;;;:::i;13178:388::-;13286:4;13308:228;173:10;13358:7;13380:145;13437:15;13380:145;;;;;;;;;;;;;;;;;173:10;13380:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13380:34:0;;;;;;;;;;;;:38;:145::i;10241:200::-;10347:4;10369:42;173:10;10393:9;10404:6;10369:9;:42::i;31718:132::-;6852:6;;-1:-1:-1;;;;;6852:6:0;173:10;6852:22;6844:67;;;;-1:-1:-1;;;6844:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31803:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;31803:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31718:132::o;32136:192::-;6852:6;;-1:-1:-1;;;;;6852:6:0;173:10;6852:22;6844:67;;;;-1:-1:-1;;;6844:67:0;;;;;;;:::i;:::-;32205:15:::1;32193:9;;:27;32185:45;;;::::0;-1:-1:-1;;;32185:45:0;;6743:2:1;32185:45:0::1;::::0;::::1;6725:21:1::0;6782:1;6762:18;;;6755:29;-1:-1:-1;;;6800:18:1;;;6793:35;6845:18;;32185:45:0::1;6541:328:1::0;32185:45:0::1;32253:15;32241:9;:27:::0;;;32310:9:::1;::::0;32290:30:::1;::::0;32253:15;32290:19:::1;:30::i;:::-;32279:8;:41:::0;32136:192::o;41030:150::-;41105:11;;-1:-1:-1;;;;;41105:11:0;41091:10;:25;41088:85;;-1:-1:-1;;;;;41132:16:0;;41159:1;41132:16;;;:7;:16;;;;;:29;;-1:-1:-1;;;;;;41132:29:0;;;41088:85;41030:150;:::o;31984:144::-;6852:6;;-1:-1:-1;;;;;6852:6:0;173:10;6852:22;6844:67;;;;-1:-1:-1;;;6844:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32077:35:0;;;::::1;;::::0;;;:22:::1;:35;::::0;;;;:43;;-1:-1:-1;;32077:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31984:144::o;7529:227::-;6852:6;;-1:-1:-1;;;;;6852:6:0;173:10;6852:22;6844:67;;;;-1:-1:-1;;;6844:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7632:22:0;::::1;7610:110;;;::::0;-1:-1:-1;;;7610:110:0;;7076:2:1;7610:110:0::1;::::0;::::1;7058:21:1::0;7115:2;7095:18;;;7088:30;7154:34;7134:18;;;7127:62;-1:-1:-1;;;7205:18:1;;;7198:36;7251:19;;7610:110:0::1;6874:402:1::0;7610:110:0::1;7731:6;:17:::0;;-1:-1:-1;;;;;;7731:17:0::1;-1:-1:-1::0;;;;;7731:17:0;;;::::1;::::0;;;::::1;::::0;;7529:227::o;18505:181::-;18563:7;;18595:5;18599:1;18595;:5;:::i;:::-;18583:17;;18624:1;18619;:6;;18611:46;;;;-1:-1:-1;;;18611:46:0;;7613:2:1;18611:46:0;;;7595:21:1;7652:2;7632:18;;;7625:30;7691:29;7671:18;;;7664:57;7738:18;;18611:46:0;7411:351:1;19893:471:0;19951:7;20196:1;20201;20196:6;20192:47;;-1:-1:-1;20226:1:0;20219:8;;20192:47;20251:9;20263:5;20267:1;20263;:5;:::i;:::-;20251:17;-1:-1:-1;20296:1:0;20287:5;20291:1;20251:17;20287:5;:::i;:::-;:10;20279:56;;;;-1:-1:-1;;;20279:56:0;;8364:2:1;20279:56:0;;;8346:21:1;8403:2;8383:18;;;8376:30;8442:34;8422:18;;;8415:62;-1:-1:-1;;;8493:18:1;;;8486:31;8534:19;;20279:56:0;8162:397:1;20840:132:0;20898:7;20925:39;20929:1;20932;20925:39;;;;;;;;;;;;;;;;;:3;:39::i;19408:226::-;19528:7;19564:12;19556:6;;;;19548:29;;;;-1:-1:-1;;;19548:29:0;;;;;;;;:::i;:::-;-1:-1:-1;19588:9:0;19600:5;19604:1;19600;:5;:::i;:::-;19588:17;19408:226;-1:-1:-1;;;;;19408:226:0:o;17092:380::-;-1:-1:-1;;;;;17228:19:0;;17220:68;;;;-1:-1:-1;;;17220:68:0;;8899:2:1;17220:68:0;;;8881:21:1;8938:2;8918:18;;;8911:30;8977:34;8957:18;;;8950:62;-1:-1:-1;;;9028:18:1;;;9021:34;9072:19;;17220:68:0;8697:400:1;17220:68:0;-1:-1:-1;;;;;17307:21:0;;17299:68;;;;-1:-1:-1;;;17299:68:0;;9304:2:1;17299:68:0;;;9286:21:1;9343:2;9323:18;;;9316:30;9382:34;9362:18;;;9355:62;-1:-1:-1;;;9433:18:1;;;9426:32;9475:19;;17299:68:0;9102:398:1;17299:68:0;-1:-1:-1;;;;;17380:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17432:32;;1596:25:1;;;17432:32:0;;1569:18:1;17432:32:0;1450:177:1;34877:832:0;-1:-1:-1;;;;;35041:18:0;;35033:68;;;;-1:-1:-1;;;35033:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35120:16:0;;35112:64;;;;-1:-1:-1;;;35112:64:0;;;;;;;:::i;:::-;35201:4;-1:-1:-1;;;;;35195:10:0;:2;-1:-1:-1;;;;;35195:10:0;;35187:58;;;;-1:-1:-1;;;35187:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35264:23:0;;35256:71;;;;-1:-1:-1;;;35256:71:0;;;;;;;:::i;:::-;35355:1;35346:6;:10;35338:35;;;;-1:-1:-1;;;35338:35:0;;10111:2:1;35338:35:0;;;10093:21:1;10150:2;10130:18;;;10123:30;-1:-1:-1;;;10169:18:1;;;10162:42;10221:18;;35338:35:0;9909:336:1;35338:35:0;35401:15;35389:9;;:27;:64;;;;-1:-1:-1;35436:13:0;;35420:30;;-1:-1:-1;;;;;35436:13:0;35420:15;:30::i;:::-;:33;35389:64;35386:123;;;35485:11;;-1:-1:-1;;;;;35477:19:0;;;35485:11;;35477:19;35469:28;;;;;;-1:-1:-1;;;;;35524:28:0;;;;;;:22;:28;;;;;;;;;:58;;-1:-1:-1;;;;;;35556:26:0;;;;;;:22;:26;;;;;;;;35524:58;35521:143;;;35598:33;35614:4;35620:2;35624:6;35598:15;:33::i;:::-;35646:7;;35521:143;35674:27;35684:4;35690:2;35694:6;35674:9;:27::i;:::-;34877:832;;;;:::o;9871:157::-;-1:-1:-1;;;;;10002:18:0;9970:7;10002:18;;;:9;:18;;;;;;;9871:157::o;32841:2030::-;-1:-1:-1;;;;;32973:18:0;;32965:68;;;;-1:-1:-1;;;32965:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33052:16:0;;33044:64;;;;-1:-1:-1;;;33044:64:0;;;;;;;:::i;:::-;33127:4;-1:-1:-1;;;;;33121:10:0;:2;-1:-1:-1;;;;;33121:10:0;;33113:58;;;;-1:-1:-1;;;33113:58:0;;;;;;;:::i;:::-;33193:1;33184:6;:10;33176:19;;;;;;33235:13;;33210:14;;-1:-1:-1;;;;;33227:21:0;;;33235:13;;33227:21;;;;:43;;;33252:13;33262:2;33252:9;:13::i;:::-;:18;33227:43;:72;;;;-1:-1:-1;;;;;;33274:11:0;;;33297:1;33274:11;;;:7;:11;;;;;;;:25;33227:72;:92;;;;;33313:6;33303;:16;;33227:92;-1:-1:-1;;;;;33337:28:0;;;;;;:22;:28;;;;;;33210:109;;-1:-1:-1;33337:28:0;;;:58;;-1:-1:-1;;;;;;33369:26:0;;;;;;:22;:26;;;;;;;;33337:58;33334:143;;;33411:33;33427:4;33433:2;33437:6;33411:15;:33::i;33334:143::-;33543:13;;33527:39;;33562:3;;33527:30;;-1:-1:-1;;;;;33543:13:0;33527:15;:30::i;:39::-;33500:24;33518:4;33500:9;:24::i;:::-;:66;33497:273;;;33584:8;;-1:-1:-1;;;33584:8:0;;;;33583:9;:49;;;;-1:-1:-1;33613:11:0;;-1:-1:-1;;;;;33613:19:0;;;:11;;:19;;33583:49;:87;;;;-1:-1:-1;33653:11:0;;-1:-1:-1;;;;;33653:17:0;;;:11;;:17;;33583:87;:115;;;;-1:-1:-1;33685:13:0;;-1:-1:-1;;;;;33679:19:0;;;33685:13;;33679:19;33583:115;:145;;;;-1:-1:-1;33707:21:0;;;;33583:145;33573:192;;;33742:16;:14;:16::i;:::-;-1:-1:-1;;;;;33798:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;33827:23:0;;;;;;:19;:23;;;;;;;;33798:52;33794:937;;-1:-1:-1;;;;;33877:14:0;;;;;;:8;:14;;;;;;;;33874:846;;;33919:15;33907:9;;:27;33899:48;;;;-1:-1:-1;;;33899:48:0;;10452:2:1;33899:48:0;;;10434:21:1;10491:1;10471:18;;;10464:29;-1:-1:-1;;;10509:18:1;;;10502:39;10558:18;;33899:48:0;10250:332:1;33899:48:0;33966:27;:25;:27::i;:::-;34015:9;;34034:15;;34015:16;;34029:1;34015:13;:16::i;:::-;:34;34012:76;;;34060:26;:6;34071:14;34060:10;:26::i;:::-;34051:35;;34012:76;34106:60;34122:4;34136;34143:22;34163:1;34143:15;:6;34154:3;34143:10;:15::i;:22::-;34106:15;:60::i;:::-;34194:23;34214:2;34194:15;:6;34205:3;34194:10;:15::i;:23::-;-1:-1:-1;;;;;34302:15:0;;;;;;:11;:15;;;;;;34185:32;;-1:-1:-1;34302:15:0;;34298:62;;-1:-1:-1;;;;;34319:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;34319:22:0;34337:4;34319:22;;;;;;34342:7;:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;34342:16:0;;;;;;34298:62;33874:846;;;-1:-1:-1;;;;;34374:12:0;;;;;;:8;:12;;;;;;;;34371:349;;;34414:15;34402:9;;:27;34394:48;;;;-1:-1:-1;;;34394:48:0;;10452:2:1;34394:48:0;;;10434:21:1;10491:1;10471:18;;;10464:29;-1:-1:-1;;;10509:18:1;;;10502:39;10558:18;;34394:48:0;10250:332:1;34394:48:0;34461:27;:25;:27::i;:::-;34495:18;:16;:18::i;:::-;34520:60;34536:4;34550;34557:22;34577:1;34557:15;:6;34568:3;34557:10;:15::i;34520:60::-;34608:23;34628:2;34608:15;:6;34619:3;34608:10;:15::i;:23::-;34599:32;;34371:349;34741:33;34757:4;34763:2;34767:6;34741:15;:33::i;:::-;34788:9;:30;;;;-1:-1:-1;;;;;;34801:17:0;;34809:9;34801:17;34788:30;34785:79;;;-1:-1:-1;;;;;;;34834:11:0;;;;;;;:7;:11;;;;;:18;;-1:-1:-1;;;;;;34834:18:0;;;;;;;;;;;32841:2030::o;21468:312::-;21588:7;21623:12;21616:5;21608:28;;;;-1:-1:-1;;;21608:28:0;;;;;;;;:::i;:::-;-1:-1:-1;21647:9:0;21659:5;21663:1;21659;:5;:::i;35717:412::-;35766:22;35791:30;35815:4;35791:15;:30::i;:::-;35766:55;;35847:6;35829:14;:24;35826:296;;35869:39;35886:21;:14;35905:1;35886:18;:21::i;:::-;35869:16;:39::i;:::-;35937:21;35982:5;35967:20;;35964:87;;;35995:49;36008:21;:14;36027:1;36008:18;:21::i;:::-;36031:12;35995;:49::i;:::-;36065:51;36087:28;36113:1;36087:21;:14;36106:1;36087:18;:21::i;:28::-;36065:21;:51::i;:::-;35854:268;35751:378;35717:412::o;39260:231::-;39341:4;;:29;;-1:-1:-1;;;39341:29:0;;39364:4;39341:29;;;1388:51:1;39316:22:0;;-1:-1:-1;;;;;39341:4:0;;:14;;1361:18:1;;39341:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39316:54;;39403:6;39385:14;:24;39381:103;;39426:46;39457:14;39426:30;:46::i;32372:457::-;32419:15;32437:30;32457:9;;32437:15;:19;;:30;;;;:::i;:::-;32419:48;;32491:8;;32481:7;:18;32478:344;;;32515:8;:18;;;32585:13;;32548:18;;32569:30;;-1:-1:-1;;;;;32585:13:0;32569:15;:30::i;:::-;32548:51;;32630:6;32617:10;:19;32614:197;;;32672:13;;32687:15;;32656:84;;-1:-1:-1;;;;;32672:13:0;;;;32687:15;32704:35;32736:2;32704:27;32728:2;32704:19;:10;32719:3;32704:14;:19::i;32656:84::-;32774:13;;;;;;;;;-1:-1:-1;;;;;32774:13:0;-1:-1:-1;;;;;32759:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32500:322;32408:421;32372:457::o;37964:486::-;38114:16;;;38128:1;38114:16;;;;;;;;38090:21;;38114:16;;;;;;;;;;-1:-1:-1;38114:16:0;38090:40;;38159:4;38141;38146:1;38141:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38141:23:0;;;:7;;;;;;;;;;:23;;;;38185:15;;:22;;;-1:-1:-1;;;38185:22:0;;;;:15;;;;;:20;;:22;;;;;38141:7;;38185:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38175:4;38180:1;38175:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38175:32:0;;;:7;;;;;;;;;:32;38218:15;;:224;;-1:-1:-1;;;38218:224:0;;:15;;;:66;;:224;;38299:11;;38218:15;;38369:4;;38396;;38416:15;;38218:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;38458:295;38539:15;;38689;;38539:206;;-1:-1:-1;;;38539:206:0;;38611:4;38539:206;;;12490:34:1;12540:18;;;12533:34;;;38539:15:0;12583:18:1;;;12576:34;;;12626:18;;;12619:34;-1:-1:-1;;;;;38689:15:0;;;12669:19:1;;;12662:44;38719:15:0;12722:19:1;;;12715:35;38539:15:0;;;:31;;38578:9;;12424:19:1;;38539:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;38761:422::-;38856:16;;;38870:1;38856:16;;;;;;;;;38832:21;;38856:16;;;;;;;;;;-1:-1:-1;38856:16:0;38832:40;;38901:4;38883;38888:1;38883:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38883:23:0;;;:7;;;;;;;;;:23;38927:10;;38917:7;;38927:10;;;38917:4;;38927:10;;38917:7;;;;;;:::i;:::-;-1:-1:-1;;;;;38917:20:0;;;:7;;;;;;;;;:20;38960:4;;38942:7;;38960:4;;;38942;;38947:1;;38942:7;;;;;;:::i;:::-;-1:-1:-1;;;;;38942:23:0;;;:7;;;;;;;;;:23;38976:15;;:199;;-1:-1:-1;;;38976:199:0;;:15;;;:69;;:199;;39060:11;;38976:15;;39102:4;;39129;;39149:15;;38976:199;;;:::i;39636:1358::-;39733:7;:14;39823:13;;39715:15;;39807:30;;-1:-1:-1;;;;;39823:13:0;39807:15;:30::i;:::-;9788:12;;39785:52;;;;:::i;:::-;39758:79;;39862:1;39852:7;:11;:35;;;;;39886:1;39867:16;:20;39852:35;39848:1139;;;39904:12;39931:19;39965:28;40022:2;40012:7;:12;40008:968;;;40050:9;40045:481;40069:2;40065:1;:6;40045:481;;;40122:7;40105:13;;:24;40101:50;;40148:1;40132:13;:17;40101:50;40187:21;40203:4;40187:15;:21::i;:::-;40173:35;;40250:6;40235:11;:21;40231:217;;40308:49;40340:16;40308:27;:11;40324:10;40308:15;:27::i;:49::-;40384:4;;:40;;-1:-1:-1;;;40384:40:0;;-1:-1:-1;;;;;5843:32:1;;;40384:40:0;;;5825:51:1;5892:18;;;5885:34;;;40285:72:0;;-1:-1:-1;40384:4:0;;;:13;;5798:18:1;;40384:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40231:217;40486:13;;:20;;40504:1;40486:17;:20::i;:::-;40470:13;:36;40073:3;;;;:::i;:::-;;;;40045:481;;;;40008:968;;;40571:9;40566:395;40590:7;40586:1;:11;40566:395;;;40634:7;40642:1;40634:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;40634:10:0;;-1:-1:-1;40681:21:0;40634:10;40681:15;:21::i;:::-;40667:35;;40744:6;40729:11;:21;40725:217;;40802:49;40834:16;40802:27;:11;40818:10;40802:15;:27::i;:49::-;40878:4;;:40;;-1:-1:-1;;;40878:40:0;;-1:-1:-1;;;;;5843:32:1;;;40878:40:0;;;5825:51:1;5892:18;;;5885:34;;;40779:72:0;;-1:-1:-1;40878:4:0;;;:13;;5798:18:1;;40878:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40725:217;40599:3;;;;:::i;:::-;;;;40566:395;;;;39889:1098;;;39848:1139;39704:1290;;39636:1358;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1632:456::-;1709:6;1717;1725;1778:2;1766:9;1757:7;1753:23;1749:32;1746:52;;;1794:1;1791;1784:12;1746:52;1833:9;1820:23;1852:31;1877:5;1852:31;:::i;:::-;1902:5;-1:-1:-1;1959:2:1;1944:18;;1931:32;1972:33;1931:32;1972:33;:::i;:::-;1632:456;;2024:7;;-1:-1:-1;;;2078:2:1;2063:18;;;;2050:32;;1632:456::o;2490:247::-;2549:6;2602:2;2590:9;2581:7;2577:23;2573:32;2570:52;;;2618:1;2615;2608:12;2570:52;2657:9;2644:23;2676:31;2701:5;2676:31;:::i;2742:118::-;2828:5;2821:13;2814:21;2807:5;2804:32;2794:60;;2850:1;2847;2840:12;2865:382;2930:6;2938;2991:2;2979:9;2970:7;2966:23;2962:32;2959:52;;;3007:1;3004;2997:12;2959:52;3046:9;3033:23;3065:31;3090:5;3065:31;:::i;:::-;3115:5;-1:-1:-1;3172:2:1;3157:18;;3144:32;3185:30;3144:32;3185:30;:::i;:::-;3234:7;3224:17;;;2865:382;;;;;:::o;3252:180::-;3311:6;3364:2;3352:9;3343:7;3339:23;3335:32;3332:52;;;3380:1;3377;3370:12;3332:52;-1:-1:-1;3403:23:1;;3252:180;-1:-1:-1;3252:180:1:o;3659:388::-;3727:6;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3843:9;3830:23;3862:31;3887:5;3862:31;:::i;:::-;3912:5;-1:-1:-1;3969:2:1;3954:18;;3941:32;3982:33;3941:32;3982:33;:::i;4052:401::-;4254:2;4236:21;;;4293:2;4273:18;;;4266:30;4332:34;4327:2;4312:18;;4305:62;-1:-1:-1;;;4398:2:1;4383:18;;4376:35;4443:3;4428:19;;4052:401::o;4458:399::-;4660:2;4642:21;;;4699:2;4679:18;;;4672:30;4738:34;4733:2;4718:18;;4711:62;-1:-1:-1;;;4804:2:1;4789:18;;4782:33;4847:3;4832:19;;4458:399::o;4862:127::-;4923:10;4918:3;4914:20;4911:1;4904:31;4954:4;4951:1;4944:15;4978:4;4975:1;4968:15;4994:127;5055:10;5050:3;5046:20;5043:1;5036:31;5086:4;5083:1;5076:15;5110:4;5107:1;5100:15;5126:135;5165:3;5186:17;;;5183:43;;5206:18;;:::i;:::-;-1:-1:-1;5253:1:1;5242:13;;5126:135::o;5266:380::-;5345:1;5341:12;;;;5388;;;5409:61;;5463:4;5455:6;5451:17;5441:27;;5409:61;5516:2;5508:6;5505:14;5485:18;5482:38;5479:161;;5562:10;5557:3;5553:20;5550:1;5543:31;5597:4;5594:1;5587:15;5625:4;5622:1;5615:15;5479:161;;5266:380;;;:::o;5930:245::-;5997:6;6050:2;6038:9;6029:7;6025:23;6021:32;6018:52;;;6066:1;6063;6056:12;6018:52;6098:9;6092:16;6117:28;6139:5;6117:28;:::i;6180:356::-;6382:2;6364:21;;;6401:18;;;6394:30;6460:34;6455:2;6440:18;;6433:62;6527:2;6512:18;;6180:356::o;7281:125::-;7346:9;;;7367:10;;;7364:36;;;7380:18;;:::i;7767:168::-;7840:9;;;7871;;7888:15;;;7882:22;;7868:37;7858:71;;7909:18;;:::i;7940:217::-;7980:1;8006;7996:132;;8050:10;8045:3;8041:20;8038:1;8031:31;8085:4;8082:1;8075:15;8113:4;8110:1;8103:15;7996:132;-1:-1:-1;8142:9:1;;7940:217::o;8564:128::-;8631:9;;;8652:11;;;8649:37;;;8666:18;;:::i;9505:399::-;9707:2;9689:21;;;9746:2;9726:18;;;9719:30;9785:34;9780:2;9765:18;;9758:62;-1:-1:-1;;;9851:2:1;9836:18;;9829:33;9894:3;9879:19;;9505:399::o;10587:184::-;10657:6;10710:2;10698:9;10689:7;10685:23;10681:32;10678:52;;;10726:1;10723;10716:12;10678:52;-1:-1:-1;10749:16:1;;10587:184;-1:-1:-1;10587:184:1:o;10908:251::-;10978:6;11031:2;11019:9;11010:7;11006:23;11002:32;10999:52;;;11047:1;11044;11037:12;10999:52;11079:9;11073:16;11098:31;11123:5;11098:31;:::i;11164:980::-;11426:4;11474:3;11463:9;11459:19;11505:6;11494:9;11487:25;11531:2;11569:6;11564:2;11553:9;11549:18;11542:34;11612:3;11607:2;11596:9;11592:18;11585:31;11636:6;11671;11665:13;11702:6;11694;11687:22;11740:3;11729:9;11725:19;11718:26;;11779:2;11771:6;11767:15;11753:29;;11800:1;11810:195;11824:6;11821:1;11818:13;11810:195;;;11889:13;;-1:-1:-1;;;;;11885:39:1;11873:52;;11980:15;;;;11945:12;;;;11921:1;11839:9;11810:195;;;-1:-1:-1;;;;;;;12061:32:1;;;;12056:2;12041:18;;12034:60;-1:-1:-1;;;12125:3:1;12110:19;12103:35;12022:3;11164:980;-1:-1:-1;;;11164:980:1:o;12761:306::-;12849:6;12857;12865;12918:2;12906:9;12897:7;12893:23;12889:32;12886:52;;;12934:1;12931;12924:12;12886:52;12963:9;12957:16;12947:26;;13013:2;13002:9;12998:18;12992:25;12982:35;;13057:2;13046:9;13042:18;13036:25;13026:35;;12761:306;;;;;:::o

Swarm Source

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