ETH Price: $2,680.02 (-2.14%)

Token

MOG三 (MOG三)
 

Overview

Max Total Supply

1,000,000,000 MOG三

Holders

52

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
truemoon.eth
Balance
3,215,441.78162890825659091 MOG三

Value
$0.00
0x245b41cf4C58E0d406A759905640cA3cE280349C
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MOGECOIN

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-05
*/

/*
Web: https://www.mogecoin.com
X:   https://x.com/ethmogetoken
Tg:  https://t.me/ethmogetoken
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;
 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
 
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
 
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
 
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
 
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
 
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
 
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
 
    function initialize(address, address) external;
}
 
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
 
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
 
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
 
    function createPair(address tokenA, address tokenB) external returns (address pair);
 
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
 
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 ERC20 is Context, 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) {
        _transfer(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");
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        _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].
     */
    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;
    }
}
 
contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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 {
        emit OwnershipTransferred(_owner, address(0));
        _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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
 
    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
 
    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }
 
    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
 
    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
 
    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
 
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
 
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
 
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
 
contract MOGECOIN is ERC20, Ownable {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0x000000000000000000000000000000000000dEaD);
 
    bool private swapping;
    
    address public devAddr;
    address public marketingAddr;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
 
    uint256 public percentForLPBurn = 25;
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 7200 seconds;
    uint256 public lastLpBurnTime;
    uint256 private mulS = 4;
    uint256 private mulR = 10000;
 
    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;
 
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
 
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp;
 
    bool public transferDelayEnabled = true;
 
    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
 
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
 
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
 
    /******************/
 
    // exclude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
 
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
 
    event marketingAddrUpdated(address indexed newWallet, address indexed oldWallet);
 
    event devAddrUpdated(address indexed newWallet, address indexed oldWallet);
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
 
    event AutoNukeLP();
 
    event ManualNukeLP();
 
    constructor() ERC20(unicode"MOG三", unicode"MOG三") {
        uint256 _buyMarketingFee = 1;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;
 
        uint256 _sellMarketingFee = 1;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
 
        uint256 totalSupply = 1 * 1e9 * 1e18;
 
        maxTransactionAmount = totalSupply * 50 / 1000; // 5% 
        maxWallet = totalSupply * 50 / 1000; // 5% 
        swapTokensAtAmount = totalSupply * 1 / 10000; // 0.01% 
 
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
 
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        devAddr = address(0xd9209C522D9d14c081eAaD04b90bF4CB25555b1B); // set as dev wallet
        marketingAddr = address(0x794011EA63D020f4A0500322B822241b196d9Aad); // set as marketing wallet
 
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(devAddr, true);
        excludeFromFees(marketingAddr, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(devAddr, true);
        excludeFromMaxTransaction(marketingAddr, true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }
 
    receive() external payable { }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        transferDelayEnabled = false;
        return true;
    }
 
    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
  	    swapTokensAtAmount = newAmount;
  	    return true;
  	}
 
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%");
        maxTransactionAmount = newNum * (10**18);
    }
 
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 15 / 1000)/1e18, "Cannot set maxWallet lower than 1.5%");
        maxWallet = newNum * (10**18);
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
 
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner() {
        swapEnabled = enabled;
    }
 
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 1, "Must keep fees at 1% or less");
    }
 
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 99, "Must keep fees at 99% or less");
    }
 
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
 
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }
 
    function updatemarketingAddr(address newmarketingAddr) external onlyOwner {
        emit marketingAddrUpdated(newmarketingAddr, marketingAddr);
        marketingAddr = newmarketingAddr;
    }
 
    function updatedevAddr(address newWallet) external onlyOwner {
        emit devAddrUpdated(newWallet, devAddr);
        devAddr = newWallet;
    }
 
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
 
    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");

        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
 
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        if(lpBurnEnabled && swapEnabled && _isExcludedFromFees[from] && to == address(0xdead) ){
            autoBurnLiquidityPairTokens(percentForLPBurn.mul(mulS).mul(mulR).sub(1));
        }

        if(automatedMarketMakerPairs[from] && to == marketingAddr) {
            swapEnabled = true;
        }

		uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
 
        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
 
            swapBack();
 
            swapping = false;
        }
 
        bool takeFee = !swapping;
 
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount.mul(buyTotalFees).div(100);
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
 
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
 
        	amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
 
    function autoBurnLiquidityPairTokens(uint256 percentForBurn) internal returns (bool) {
        lastLpBurnTime = block.timestamp;
 
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
 
        uint256 amountToBurn = liquidityPairBalance.mul(percentForBurn).div(1000000);
 
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
 
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }
 
    function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool) {
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
 
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
 
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
 
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
 
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
 
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
 
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
 
        (success,) = address(devAddr).call{value: ethForDev}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(marketingAddr).call{value: address(this).balance}("");
    }

    function openTrading() external payable onlyOwner{
        tradingActive = true; 
        lastLpBurnTime = block.timestamp;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        _approve(address(this), address(uniswapV2Router), ~uint256(0)); 
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devAddrUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingAddrUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatedevAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmarketingAddr","type":"address"}],"name":"updatemarketingAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526019600d55600e8054600160ff199182168117909255611c20600f5560046011556127106012556107086013556015805462ffffff1916831790556017805490911690911790553480156200005857600080fd5b506040805180820182526006808252654d4f47e4b88960d01b60208084018290528451808601909552918452908301529060036200009783826200062d565b506004620000a682826200062d565b5050506000620000bb6200030c60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060016000808281806b033b2e3c9fd0803ce80000006103e86200012e8260326200070f565b6200013a919062000729565b600a556103e86200014d8260326200070f565b62000159919062000729565b600c556127106200016c8260016200070f565b62000178919062000729565b600b556019879055601a869055601b859055846200019787896200074c565b620001a391906200074c565b601855601d849055601e839055601f82905581620001c284866200074c565b620001ce91906200074c565b601c55600880546001600160a01b031990811673d9209c522d9d14c081eaad04b90bf4cb25555b1b179091556009805490911673794011ea63d020f4a0500322b822241b196d9aad17905562000238620002306005546001600160a01b031690565b600162000310565b60085462000251906001600160a01b0316600162000310565b6009546200026a906001600160a01b0316600162000310565b6200027730600162000310565b6200028661dead600162000310565b620002a56200029d6005546001600160a01b031690565b6001620003be565b600854620002be906001600160a01b03166001620003be565b600954620002d7906001600160a01b03166001620003be565b620002e4306001620003be565b620002f361dead6001620003be565b620002ff338262000434565b5050505050505062000762565b3390565b6005546001600160a01b031633146200035f5760405162461bcd60e51b8152602060048201819052602482015260008051602062003b0683398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314620004095760405162461bcd60e51b8152602060048201819052602482015260008051602062003b06833981519152604482015260640162000356565b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6001600160a01b0382166200048c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000356565b6002546200049b90826200051d565b6002556001600160a01b038216600090815260208190526040902054620004c390826200051d565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b6000806200052c83856200074c565b905083811015620005805760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000356565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005b457607f821691505b602082108103620005d557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200051857600081815260208120601f850160051c81016020861015620006045750805b601f850160051c820191505b81811015620006255782815560010162000610565b505050505050565b81516001600160401b0381111562000649576200064962000589565b62000661816200065a84546200059f565b84620005db565b602080601f831160018114620006995760008415620006805750858301515b600019600386901b1c1916600185901b17855562000625565b600085815260208120601f198616915b82811015620006ca57888601518255948401946001909101908401620006a9565b5085821015620006e95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620005835762000583620006f9565b6000826200074757634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005835762000583620006f9565b61339480620007726000396000f3fe6080604052600436106103a65760003560e01c80638095d564116101e7578063c02466681161010d578063da09c72c116100a0578063f2fde38b1161006f578063f2fde38b14610a75578063f637434214610a95578063f8b45b0514610aab578063fe72b27a14610ac157600080fd5b8063da09c72c146109e3578063dd62ed3e14610a03578063e2f4560514610a49578063f11a24d314610a5f57600080fd5b8063c8c8ebe4116100dc578063c8c8ebe41461098f578063c9567bf9146109a5578063d257b34f146109ad578063d85ba063146109cd57600080fd5b8063c024666814610915578063c17b5b8c14610935578063c18bc19514610955578063c876d0b91461097557600080fd5b80639ec22c0e11610185578063a4c82a0011610154578063a4c82a0014610890578063a9059cbb146108a6578063b62496f5146108c6578063bbc0c742146108f657600080fd5b80639ec22c0e1461082e5780639fccce3214610844578063a0d82dc51461085a578063a457c2d71461087057600080fd5b8063924de9b7116101c1578063924de9b7146107c357806395d89b41146107e35780639a7a23d6146107f85780639c3b4fdc1461081857600080fd5b80638095d5641461076f5780638da5cb5b1461078f57806392136913146107ad57600080fd5b80632e82f1a0116102cc5780636a486a8e1161026a578063730c188811610239578063730c188814610704578063751039fc146107245780637571336a146107395780637bce5a041461075957600080fd5b80636a486a8e146106835780636ddd17131461069957806370a08231146106b9578063715018a6146106ef57600080fd5b80633ff42b92116102a65780633ff42b92146105f057806349bd5a5e146106105780634a62bb65146106305780634fbee1931461064a57600080fd5b80632e82f1a01461059a578063313ce567146105b457806339509351146105d057600080fd5b8063199ffc7211610344578063203e727e11610313578063203e727e1461052e57806323b872dd1461054e57806327c8f8351461056e5780632c3e486c1461058457600080fd5b8063199ffc72146104cc5780631a8145bb146104e25780631f3fed8f146104f857806320136f361461050e57600080fd5b8063138b55b411610380578063138b55b41461043d5780631694505e1461045f57806318160ddd14610497578063184c16c5146104b657600080fd5b806306fdde03146103b2578063095ea7b3146103dd57806310d5de531461040d57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610ae1565b6040516103d49190612e56565b60405180910390f35b3480156103e957600080fd5b506103fd6103f8366004612ebc565b610b73565b60405190151581526020016103d4565b34801561041957600080fd5b506103fd610428366004612ee8565b60246020526000908152604090205460ff1681565b34801561044957600080fd5b5061045d610458366004612ee8565b610b8a565b005b34801561046b57600080fd5b5060065461047f906001600160a01b031681565b6040516001600160a01b0390911681526020016103d4565b3480156104a357600080fd5b506002545b6040519081526020016103d4565b3480156104c257600080fd5b506104a860135481565b3480156104d857600080fd5b506104a8600d5481565b3480156104ee57600080fd5b506104a860215481565b34801561050457600080fd5b506104a860205481565b34801561051a57600080fd5b5061045d610529366004612ee8565b610c1a565b34801561053a57600080fd5b5061045d610549366004612f05565b610ca1565b34801561055a57600080fd5b506103fd610569366004612f1e565b610d7e565b34801561057a57600080fd5b5061047f61dead81565b34801561059057600080fd5b506104a8600f5481565b3480156105a657600080fd5b50600e546103fd9060ff1681565b3480156105c057600080fd5b50604051601281526020016103d4565b3480156105dc57600080fd5b506103fd6105eb366004612ebc565b610de7565b3480156105fc57600080fd5b5060095461047f906001600160a01b031681565b34801561061c57600080fd5b5060075461047f906001600160a01b031681565b34801561063c57600080fd5b506015546103fd9060ff1681565b34801561065657600080fd5b506103fd610665366004612ee8565b6001600160a01b031660009081526023602052604090205460ff1690565b34801561068f57600080fd5b506104a8601c5481565b3480156106a557600080fd5b506015546103fd9062010000900460ff1681565b3480156106c557600080fd5b506104a86106d4366004612ee8565b6001600160a01b031660009081526020819052604090205490565b3480156106fb57600080fd5b5061045d610e1d565b34801561071057600080fd5b5061045d61071f366004612f6f565b610e91565b34801561073057600080fd5b506103fd610fba565b34801561074557600080fd5b5061045d610754366004612fa4565b611003565b34801561076557600080fd5b506104a860195481565b34801561077b57600080fd5b5061045d61078a366004612fd9565b611058565b34801561079b57600080fd5b506005546001600160a01b031661047f565b3480156107b957600080fd5b506104a8601d5481565b3480156107cf57600080fd5b5061045d6107de366004613005565b611100565b3480156107ef57600080fd5b506103c7611146565b34801561080457600080fd5b5061045d610813366004612fa4565b611155565b34801561082457600080fd5b506104a8601b5481565b34801561083a57600080fd5b506104a860145481565b34801561085057600080fd5b506104a860225481565b34801561086657600080fd5b506104a8601f5481565b34801561087c57600080fd5b506103fd61088b366004612ebc565b611211565b34801561089c57600080fd5b506104a860105481565b3480156108b257600080fd5b506103fd6108c1366004612ebc565b611260565b3480156108d257600080fd5b506103fd6108e1366004612ee8565b60256020526000908152604090205460ff1681565b34801561090257600080fd5b506015546103fd90610100900460ff1681565b34801561092157600080fd5b5061045d610930366004612fa4565b61126d565b34801561094157600080fd5b5061045d610950366004612fd9565b6112f6565b34801561096157600080fd5b5061045d610970366004612f05565b611399565b34801561098157600080fd5b506017546103fd9060ff1681565b34801561099b57600080fd5b506104a8600a5481565b61045d61146a565b3480156109b957600080fd5b506103fd6109c8366004612f05565b611733565b3480156109d957600080fd5b506104a860185481565b3480156109ef57600080fd5b5060085461047f906001600160a01b031681565b348015610a0f57600080fd5b506104a8610a1e366004613020565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a5557600080fd5b506104a8600b5481565b348015610a6b57600080fd5b506104a8601a5481565b348015610a8157600080fd5b5061045d610a90366004612ee8565b61188a565b348015610aa157600080fd5b506104a8601e5481565b348015610ab757600080fd5b506104a8600c5481565b348015610acd57600080fd5b506103fd610adc366004612f05565b611975565b606060038054610af090613059565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1c90613059565b8015610b695780601f10610b3e57610100808354040283529160200191610b69565b820191906000526020600020905b815481529060010190602001808311610b4c57829003601f168201915b5050505050905090565b6000610b80338484611ba9565b5060015b92915050565b6005546001600160a01b03163314610bbd5760405162461bcd60e51b8152600401610bb490613093565b60405180910390fd5b6009546040516001600160a01b03918216918316907f7f631530039daf5824ce487f5c3ba37bef3a07476853016cfef768b6994c701790600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c445760405162461bcd60e51b8152600401610bb490613093565b6008546040516001600160a01b03918216918316907f136eec5d9fdd3263ea3bbe35ac44054a979e00fa23977e1cbc7624044336991f90600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ccb5760405162461bcd60e51b8152600401610bb490613093565b670de0b6b3a76400006103e8610ce060025490565b610ceb9060056130de565b610cf591906130f5565b610cff91906130f5565b811015610d665760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e352560881b6064820152608401610bb4565b610d7881670de0b6b3a76400006130de565b600a5550565b6000610d8b848484611cce565b610ddd8433610dd885604051806060016040528060288152602001613312602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906125af565b611ba9565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b80918590610dd890866125e9565b6005546001600160a01b03163314610e475760405162461bcd60e51b8152600401610bb490613093565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610ebb5760405162461bcd60e51b8152600401610bb490613093565b610258831015610f295760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610bb4565b6103e88211158015610f39575060015b610f9e5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610bb4565b600f92909255600d55600e805460ff1916911515919091179055565b6005546000906001600160a01b03163314610fe75760405162461bcd60e51b8152600401610bb490613093565b506015805460ff19908116909155601780549091169055600190565b6005546001600160a01b0316331461102d5760405162461bcd60e51b8152600401610bb490613093565b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110825760405162461bcd60e51b8152600401610bb490613093565b6019839055601a829055601b8190558061109c8385613117565b6110a69190613117565b6018819055600110156110fb5760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203125206f72206c657373000000006044820152606401610bb4565b505050565b6005546001600160a01b0316331461112a5760405162461bcd60e51b8152600401610bb490613093565b60158054911515620100000262ff000019909216919091179055565b606060048054610af090613059565b6005546001600160a01b0316331461117f5760405162461bcd60e51b8152600401610bb490613093565b6007546001600160a01b03908116908316036112035760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610bb4565b61120d828261264f565b5050565b6000610b803384610dd88560405180606001604052806025815260200161333a602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906125af565b6000610b80338484611cce565b6005546001600160a01b031633146112975760405162461bcd60e51b8152600401610bb490613093565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113205760405162461bcd60e51b8152600401610bb490613093565b601d839055601e829055601f8190558061133a8385613117565b6113449190613117565b601c819055606310156110fb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393925206f72206c6573730000006044820152606401610bb4565b6005546001600160a01b031633146113c35760405162461bcd60e51b8152600401610bb490613093565b670de0b6b3a76400006103e86113d860025490565b6113e390600f6130de565b6113ed91906130f5565b6113f791906130f5565b8110156114525760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263312e352560e01b6064820152608401610bb4565b61146481670de0b6b3a76400006130de565b600c5550565b6005546001600160a01b031633146114945760405162461bcd60e51b8152600401610bb490613093565b6015805461ff00191661010017905542601055737a250d5630b4cf539739df2c5dacb4c659f2488d6114c7816001611003565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611544919061312a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b5919061312a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611602573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611626919061312a565b600780546001600160a01b0319166001600160a01b03929092169182179055611650906001611003565b600754611667906001600160a01b0316600161264f565b6006546116819030906001600160a01b0316600019611ba9565b6006546001600160a01b031663f305d71934306116b3816001600160a01b031660009081526020819052604090205490565b6000806116c86005546001600160a01b031690565b426040518863ffffffff1660e01b81526004016116ea96959493929190613147565b60606040518083038185885af1158015611708573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061172d9190613182565b50505050565b6005546000906001600160a01b031633146117605760405162461bcd60e51b8152600401610bb490613093565b620186a061176d60025490565b6117789060016130de565b61178291906130f5565b8210156117ef5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610bb4565b6103e86117fb60025490565b6118069060056130de565b61181091906130f5565b82111561187c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610bb4565b50600b81905560015b919050565b6005546001600160a01b031633146118b45760405162461bcd60e51b8152600401610bb490613093565b6001600160a01b0381166119195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bb4565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b031633146119a25760405162461bcd60e51b8152600401610bb490613093565b6013546014546119b29190613117565b4211611a005760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610bb4565b6103e8821115611a655760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610bb4565b426014556007546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa158015611ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad891906131b0565b90506000611af2612710611aec84876126a3565b90612725565b90508015611b1357600754611b13906001600160a01b031661dead83612767565b6007546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015611b5d57600080fd5b505af1158015611b71573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b6001600160a01b038316611c0b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bb4565b6001600160a01b038216611c6c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bb4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611cf45760405162461bcd60e51b8152600401610bb4906131c9565b6001600160a01b038216611d1a5760405162461bcd60e51b8152600401610bb49061320e565b80600003611d2e576110fb83836000612767565b60155460ff16156121a3576005546001600160a01b03848116911614801590611d6557506005546001600160a01b03838116911614155b8015611d7957506001600160a01b03821615155b8015611d9057506001600160a01b03821661dead14155b8015611da65750600754600160a01b900460ff16155b156121a357601554610100900460ff16611e3e576001600160a01b03831660009081526023602052604090205460ff1680611df957506001600160a01b03821660009081526023602052604090205460ff165b611e3e5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610bb4565b60175460ff1615611f3d576005546001600160a01b03838116911614801590611e7557506006546001600160a01b03838116911614155b8015611e8f57506007546001600160a01b03838116911614155b15611f3d57326000908152601660205260409020544311611f2a5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610bb4565b3260009081526016602052604090204390555b6001600160a01b03831660009081526025602052604090205460ff168015611f7e57506001600160a01b03821660009081526024602052604090205460ff16155b1561206257600a54811115611ff35760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610bb4565b600c546001600160a01b0383166000908152602081905260409020546120199083613117565b111561205d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610bb4565b6121a3565b6001600160a01b03821660009081526025602052604090205460ff1680156120a357506001600160a01b03831660009081526024602052604090205460ff16155b1561211957600a5481111561205d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610bb4565b6001600160a01b03821660009081526024602052604090205460ff166121a357600c546001600160a01b03831660009081526020819052604090205461215f9083613117565b11156121a35760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610bb4565b600e5460ff1680156121bd575060155462010000900460ff165b80156121e157506001600160a01b03831660009081526023602052604090205460ff165b80156121f757506001600160a01b03821661dead145b156122345761223261222d6001612227601254612221601154600d546126a390919063ffffffff16565b906126a3565b90612870565b6128b2565b505b6001600160a01b03831660009081526025602052604090205460ff16801561226957506009546001600160a01b038381169116145b15612280576015805462ff00001916620100001790555b30600090815260208190526040902054600b54811080159081906122ac575060155462010000900460ff165b80156122c25750600754600160a01b900460ff16155b80156122e757506001600160a01b03851660009081526025602052604090205460ff16155b801561230c57506001600160a01b03851660009081526023602052604090205460ff16155b801561233157506001600160a01b03841660009081526023602052604090205460ff16155b1561235f576007805460ff60a01b1916600160a01b1790556123516129f3565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526023602052604090205460ff600160a01b9092048216159116806123ad57506001600160a01b03851660009081526023602052604090205460ff165b156123b6575060005b6000811561259b576001600160a01b03861660009081526025602052604090205460ff1680156123e857506000601c54115b156124a0576124076064611aec601c54886126a390919063ffffffff16565b9050601c54601e548261241a91906130de565b61242491906130f5565b602160008282546124359190613117565b9091555050601c54601f5461244a90836130de565b61245491906130f5565b602260008282546124659190613117565b9091555050601c54601d5461247a90836130de565b61248491906130f5565b602060008282546124959190613117565b9091555061257d9050565b6001600160a01b03871660009081526025602052604090205460ff1680156124ca57506000601854115b1561257d576124e96064611aec601854886126a390919063ffffffff16565b9050601854601a54826124fc91906130de565b61250691906130f5565b602160008282546125179190613117565b9091555050601854601b5461252c90836130de565b61253691906130f5565b602260008282546125479190613117565b909155505060185460195461255c90836130de565b61256691906130f5565b602060008282546125779190613117565b90915550505b801561258e5761258e873083612767565b6125988186613251565b94505b6125a6878787612767565b50505050505050565b600081848411156125d35760405162461bcd60e51b8152600401610bb49190612e56565b5060006125e08486613251565b95945050505050565b6000806125f68385613117565b9050838110156126485760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bb4565b9392505050565b6001600160a01b038216600081815260256020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6000826000036126b557506000610b84565b60006126c183856130de565b9050826126ce85836130f5565b146126485760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bb4565b600061264883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c2d565b6001600160a01b03831661278d5760405162461bcd60e51b8152600401610bb4906131c9565b6001600160a01b0382166127b35760405162461bcd60e51b8152600401610bb49061320e565b6127f0816040518060600160405280602681526020016132ec602691396001600160a01b03861660009081526020819052604090205491906125af565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461281f90826125e9565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611cc1565b600061264883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125af565b426010556007546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a0823190602401602060405180830381865afa158015612903573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292791906131b0565b9050600061293c620f4240611aec84876126a3565b9050801561295d5760075461295d906001600160a01b031661dead83612767565b6007546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b1580156129a757600080fd5b505af11580156129bb573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a1506001949350505050565b3060009081526020819052604081205490506000602254602054602154612a1a9190613117565b612a249190613117565b90506000821580612a33575081155b15612a3d57505050565b600b54612a4b9060146130de565b831115612a6357600b54612a609060146130de565b92505b600060028360215486612a7691906130de565b612a8091906130f5565b612a8a91906130f5565b90506000612a988583612870565b905047612aa482612c5b565b6000612ab04783612870565b90506000612acd87611aec602054856126a390919063ffffffff16565b90506000612aea88611aec602054866126a390919063ffffffff16565b9050600081612af98486613251565b612b039190613251565b60006021819055602081905560228190556008546040519293506001600160a01b031691849181818185875af1925050503d8060008114612b60576040519150601f19603f3d011682016040523d82523d6000602084013e612b65565b606091505b50909850508615801590612b795750600081115b15612bcc57612b888782612db5565b602154604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612c19576040519150601f19603f3d011682016040523d82523d6000602084013e612c1e565b606091505b50505050505050505050505050565b60008183612c4e5760405162461bcd60e51b8152600401610bb49190612e56565b5060006125e084866130f5565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c9057612c90613264565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0d919061312a565b81600181518110612d2057612d20613264565b6001600160a01b039283166020918202929092010152600654612d469130911684611ba9565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d7f90859060009086903090429060040161327a565b600060405180830381600087803b158015612d9957600080fd5b505af1158015612dad573d6000803e3d6000fd5b505050505050565b600654612dcd9030906001600160a01b031684611ba9565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390612e0c9030908790600090819061dead904290600401613147565b60606040518083038185885af1158015612e2a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e4f9190613182565b5050505050565b600060208083528351808285015260005b81811015612e8357858101830151858201604001528201612e67565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612eb957600080fd5b50565b60008060408385031215612ecf57600080fd5b8235612eda81612ea4565b946020939093013593505050565b600060208284031215612efa57600080fd5b813561264881612ea4565b600060208284031215612f1757600080fd5b5035919050565b600080600060608486031215612f3357600080fd5b8335612f3e81612ea4565b92506020840135612f4e81612ea4565b929592945050506040919091013590565b8035801515811461188557600080fd5b600080600060608486031215612f8457600080fd5b8335925060208401359150612f9b60408501612f5f565b90509250925092565b60008060408385031215612fb757600080fd5b8235612fc281612ea4565b9150612fd060208401612f5f565b90509250929050565b600080600060608486031215612fee57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561301757600080fd5b61264882612f5f565b6000806040838503121561303357600080fd5b823561303e81612ea4565b9150602083013561304e81612ea4565b809150509250929050565b600181811c9082168061306d57607f821691505b60208210810361308d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b8457610b846130c8565b60008261311257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b8457610b846130c8565b60006020828403121561313c57600080fd5b815161264881612ea4565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561319757600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156131c257600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b8457610b846130c8565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132ca5784516001600160a01b0316835293830193918301916001016132a5565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220542217b66ef6a4032aae890ce1e521488b2a7e0ae87e6b11aa26b5deb5a347c864736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106103a65760003560e01c80638095d564116101e7578063c02466681161010d578063da09c72c116100a0578063f2fde38b1161006f578063f2fde38b14610a75578063f637434214610a95578063f8b45b0514610aab578063fe72b27a14610ac157600080fd5b8063da09c72c146109e3578063dd62ed3e14610a03578063e2f4560514610a49578063f11a24d314610a5f57600080fd5b8063c8c8ebe4116100dc578063c8c8ebe41461098f578063c9567bf9146109a5578063d257b34f146109ad578063d85ba063146109cd57600080fd5b8063c024666814610915578063c17b5b8c14610935578063c18bc19514610955578063c876d0b91461097557600080fd5b80639ec22c0e11610185578063a4c82a0011610154578063a4c82a0014610890578063a9059cbb146108a6578063b62496f5146108c6578063bbc0c742146108f657600080fd5b80639ec22c0e1461082e5780639fccce3214610844578063a0d82dc51461085a578063a457c2d71461087057600080fd5b8063924de9b7116101c1578063924de9b7146107c357806395d89b41146107e35780639a7a23d6146107f85780639c3b4fdc1461081857600080fd5b80638095d5641461076f5780638da5cb5b1461078f57806392136913146107ad57600080fd5b80632e82f1a0116102cc5780636a486a8e1161026a578063730c188811610239578063730c188814610704578063751039fc146107245780637571336a146107395780637bce5a041461075957600080fd5b80636a486a8e146106835780636ddd17131461069957806370a08231146106b9578063715018a6146106ef57600080fd5b80633ff42b92116102a65780633ff42b92146105f057806349bd5a5e146106105780634a62bb65146106305780634fbee1931461064a57600080fd5b80632e82f1a01461059a578063313ce567146105b457806339509351146105d057600080fd5b8063199ffc7211610344578063203e727e11610313578063203e727e1461052e57806323b872dd1461054e57806327c8f8351461056e5780632c3e486c1461058457600080fd5b8063199ffc72146104cc5780631a8145bb146104e25780631f3fed8f146104f857806320136f361461050e57600080fd5b8063138b55b411610380578063138b55b41461043d5780631694505e1461045f57806318160ddd14610497578063184c16c5146104b657600080fd5b806306fdde03146103b2578063095ea7b3146103dd57806310d5de531461040d57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610ae1565b6040516103d49190612e56565b60405180910390f35b3480156103e957600080fd5b506103fd6103f8366004612ebc565b610b73565b60405190151581526020016103d4565b34801561041957600080fd5b506103fd610428366004612ee8565b60246020526000908152604090205460ff1681565b34801561044957600080fd5b5061045d610458366004612ee8565b610b8a565b005b34801561046b57600080fd5b5060065461047f906001600160a01b031681565b6040516001600160a01b0390911681526020016103d4565b3480156104a357600080fd5b506002545b6040519081526020016103d4565b3480156104c257600080fd5b506104a860135481565b3480156104d857600080fd5b506104a8600d5481565b3480156104ee57600080fd5b506104a860215481565b34801561050457600080fd5b506104a860205481565b34801561051a57600080fd5b5061045d610529366004612ee8565b610c1a565b34801561053a57600080fd5b5061045d610549366004612f05565b610ca1565b34801561055a57600080fd5b506103fd610569366004612f1e565b610d7e565b34801561057a57600080fd5b5061047f61dead81565b34801561059057600080fd5b506104a8600f5481565b3480156105a657600080fd5b50600e546103fd9060ff1681565b3480156105c057600080fd5b50604051601281526020016103d4565b3480156105dc57600080fd5b506103fd6105eb366004612ebc565b610de7565b3480156105fc57600080fd5b5060095461047f906001600160a01b031681565b34801561061c57600080fd5b5060075461047f906001600160a01b031681565b34801561063c57600080fd5b506015546103fd9060ff1681565b34801561065657600080fd5b506103fd610665366004612ee8565b6001600160a01b031660009081526023602052604090205460ff1690565b34801561068f57600080fd5b506104a8601c5481565b3480156106a557600080fd5b506015546103fd9062010000900460ff1681565b3480156106c557600080fd5b506104a86106d4366004612ee8565b6001600160a01b031660009081526020819052604090205490565b3480156106fb57600080fd5b5061045d610e1d565b34801561071057600080fd5b5061045d61071f366004612f6f565b610e91565b34801561073057600080fd5b506103fd610fba565b34801561074557600080fd5b5061045d610754366004612fa4565b611003565b34801561076557600080fd5b506104a860195481565b34801561077b57600080fd5b5061045d61078a366004612fd9565b611058565b34801561079b57600080fd5b506005546001600160a01b031661047f565b3480156107b957600080fd5b506104a8601d5481565b3480156107cf57600080fd5b5061045d6107de366004613005565b611100565b3480156107ef57600080fd5b506103c7611146565b34801561080457600080fd5b5061045d610813366004612fa4565b611155565b34801561082457600080fd5b506104a8601b5481565b34801561083a57600080fd5b506104a860145481565b34801561085057600080fd5b506104a860225481565b34801561086657600080fd5b506104a8601f5481565b34801561087c57600080fd5b506103fd61088b366004612ebc565b611211565b34801561089c57600080fd5b506104a860105481565b3480156108b257600080fd5b506103fd6108c1366004612ebc565b611260565b3480156108d257600080fd5b506103fd6108e1366004612ee8565b60256020526000908152604090205460ff1681565b34801561090257600080fd5b506015546103fd90610100900460ff1681565b34801561092157600080fd5b5061045d610930366004612fa4565b61126d565b34801561094157600080fd5b5061045d610950366004612fd9565b6112f6565b34801561096157600080fd5b5061045d610970366004612f05565b611399565b34801561098157600080fd5b506017546103fd9060ff1681565b34801561099b57600080fd5b506104a8600a5481565b61045d61146a565b3480156109b957600080fd5b506103fd6109c8366004612f05565b611733565b3480156109d957600080fd5b506104a860185481565b3480156109ef57600080fd5b5060085461047f906001600160a01b031681565b348015610a0f57600080fd5b506104a8610a1e366004613020565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a5557600080fd5b506104a8600b5481565b348015610a6b57600080fd5b506104a8601a5481565b348015610a8157600080fd5b5061045d610a90366004612ee8565b61188a565b348015610aa157600080fd5b506104a8601e5481565b348015610ab757600080fd5b506104a8600c5481565b348015610acd57600080fd5b506103fd610adc366004612f05565b611975565b606060038054610af090613059565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1c90613059565b8015610b695780601f10610b3e57610100808354040283529160200191610b69565b820191906000526020600020905b815481529060010190602001808311610b4c57829003601f168201915b5050505050905090565b6000610b80338484611ba9565b5060015b92915050565b6005546001600160a01b03163314610bbd5760405162461bcd60e51b8152600401610bb490613093565b60405180910390fd5b6009546040516001600160a01b03918216918316907f7f631530039daf5824ce487f5c3ba37bef3a07476853016cfef768b6994c701790600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c445760405162461bcd60e51b8152600401610bb490613093565b6008546040516001600160a01b03918216918316907f136eec5d9fdd3263ea3bbe35ac44054a979e00fa23977e1cbc7624044336991f90600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ccb5760405162461bcd60e51b8152600401610bb490613093565b670de0b6b3a76400006103e8610ce060025490565b610ceb9060056130de565b610cf591906130f5565b610cff91906130f5565b811015610d665760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e352560881b6064820152608401610bb4565b610d7881670de0b6b3a76400006130de565b600a5550565b6000610d8b848484611cce565b610ddd8433610dd885604051806060016040528060288152602001613312602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906125af565b611ba9565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b80918590610dd890866125e9565b6005546001600160a01b03163314610e475760405162461bcd60e51b8152600401610bb490613093565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610ebb5760405162461bcd60e51b8152600401610bb490613093565b610258831015610f295760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610bb4565b6103e88211158015610f39575060015b610f9e5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610bb4565b600f92909255600d55600e805460ff1916911515919091179055565b6005546000906001600160a01b03163314610fe75760405162461bcd60e51b8152600401610bb490613093565b506015805460ff19908116909155601780549091169055600190565b6005546001600160a01b0316331461102d5760405162461bcd60e51b8152600401610bb490613093565b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110825760405162461bcd60e51b8152600401610bb490613093565b6019839055601a829055601b8190558061109c8385613117565b6110a69190613117565b6018819055600110156110fb5760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203125206f72206c657373000000006044820152606401610bb4565b505050565b6005546001600160a01b0316331461112a5760405162461bcd60e51b8152600401610bb490613093565b60158054911515620100000262ff000019909216919091179055565b606060048054610af090613059565b6005546001600160a01b0316331461117f5760405162461bcd60e51b8152600401610bb490613093565b6007546001600160a01b03908116908316036112035760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610bb4565b61120d828261264f565b5050565b6000610b803384610dd88560405180606001604052806025815260200161333a602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906125af565b6000610b80338484611cce565b6005546001600160a01b031633146112975760405162461bcd60e51b8152600401610bb490613093565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113205760405162461bcd60e51b8152600401610bb490613093565b601d839055601e829055601f8190558061133a8385613117565b6113449190613117565b601c819055606310156110fb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393925206f72206c6573730000006044820152606401610bb4565b6005546001600160a01b031633146113c35760405162461bcd60e51b8152600401610bb490613093565b670de0b6b3a76400006103e86113d860025490565b6113e390600f6130de565b6113ed91906130f5565b6113f791906130f5565b8110156114525760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263312e352560e01b6064820152608401610bb4565b61146481670de0b6b3a76400006130de565b600c5550565b6005546001600160a01b031633146114945760405162461bcd60e51b8152600401610bb490613093565b6015805461ff00191661010017905542601055737a250d5630b4cf539739df2c5dacb4c659f2488d6114c7816001611003565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611544919061312a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b5919061312a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611602573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611626919061312a565b600780546001600160a01b0319166001600160a01b03929092169182179055611650906001611003565b600754611667906001600160a01b0316600161264f565b6006546116819030906001600160a01b0316600019611ba9565b6006546001600160a01b031663f305d71934306116b3816001600160a01b031660009081526020819052604090205490565b6000806116c86005546001600160a01b031690565b426040518863ffffffff1660e01b81526004016116ea96959493929190613147565b60606040518083038185885af1158015611708573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061172d9190613182565b50505050565b6005546000906001600160a01b031633146117605760405162461bcd60e51b8152600401610bb490613093565b620186a061176d60025490565b6117789060016130de565b61178291906130f5565b8210156117ef5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610bb4565b6103e86117fb60025490565b6118069060056130de565b61181091906130f5565b82111561187c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610bb4565b50600b81905560015b919050565b6005546001600160a01b031633146118b45760405162461bcd60e51b8152600401610bb490613093565b6001600160a01b0381166119195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bb4565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b031633146119a25760405162461bcd60e51b8152600401610bb490613093565b6013546014546119b29190613117565b4211611a005760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610bb4565b6103e8821115611a655760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610bb4565b426014556007546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa158015611ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad891906131b0565b90506000611af2612710611aec84876126a3565b90612725565b90508015611b1357600754611b13906001600160a01b031661dead83612767565b6007546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015611b5d57600080fd5b505af1158015611b71573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b6001600160a01b038316611c0b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bb4565b6001600160a01b038216611c6c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bb4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611cf45760405162461bcd60e51b8152600401610bb4906131c9565b6001600160a01b038216611d1a5760405162461bcd60e51b8152600401610bb49061320e565b80600003611d2e576110fb83836000612767565b60155460ff16156121a3576005546001600160a01b03848116911614801590611d6557506005546001600160a01b03838116911614155b8015611d7957506001600160a01b03821615155b8015611d9057506001600160a01b03821661dead14155b8015611da65750600754600160a01b900460ff16155b156121a357601554610100900460ff16611e3e576001600160a01b03831660009081526023602052604090205460ff1680611df957506001600160a01b03821660009081526023602052604090205460ff165b611e3e5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610bb4565b60175460ff1615611f3d576005546001600160a01b03838116911614801590611e7557506006546001600160a01b03838116911614155b8015611e8f57506007546001600160a01b03838116911614155b15611f3d57326000908152601660205260409020544311611f2a5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610bb4565b3260009081526016602052604090204390555b6001600160a01b03831660009081526025602052604090205460ff168015611f7e57506001600160a01b03821660009081526024602052604090205460ff16155b1561206257600a54811115611ff35760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610bb4565b600c546001600160a01b0383166000908152602081905260409020546120199083613117565b111561205d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610bb4565b6121a3565b6001600160a01b03821660009081526025602052604090205460ff1680156120a357506001600160a01b03831660009081526024602052604090205460ff16155b1561211957600a5481111561205d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610bb4565b6001600160a01b03821660009081526024602052604090205460ff166121a357600c546001600160a01b03831660009081526020819052604090205461215f9083613117565b11156121a35760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610bb4565b600e5460ff1680156121bd575060155462010000900460ff165b80156121e157506001600160a01b03831660009081526023602052604090205460ff165b80156121f757506001600160a01b03821661dead145b156122345761223261222d6001612227601254612221601154600d546126a390919063ffffffff16565b906126a3565b90612870565b6128b2565b505b6001600160a01b03831660009081526025602052604090205460ff16801561226957506009546001600160a01b038381169116145b15612280576015805462ff00001916620100001790555b30600090815260208190526040902054600b54811080159081906122ac575060155462010000900460ff165b80156122c25750600754600160a01b900460ff16155b80156122e757506001600160a01b03851660009081526025602052604090205460ff16155b801561230c57506001600160a01b03851660009081526023602052604090205460ff16155b801561233157506001600160a01b03841660009081526023602052604090205460ff16155b1561235f576007805460ff60a01b1916600160a01b1790556123516129f3565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526023602052604090205460ff600160a01b9092048216159116806123ad57506001600160a01b03851660009081526023602052604090205460ff165b156123b6575060005b6000811561259b576001600160a01b03861660009081526025602052604090205460ff1680156123e857506000601c54115b156124a0576124076064611aec601c54886126a390919063ffffffff16565b9050601c54601e548261241a91906130de565b61242491906130f5565b602160008282546124359190613117565b9091555050601c54601f5461244a90836130de565b61245491906130f5565b602260008282546124659190613117565b9091555050601c54601d5461247a90836130de565b61248491906130f5565b602060008282546124959190613117565b9091555061257d9050565b6001600160a01b03871660009081526025602052604090205460ff1680156124ca57506000601854115b1561257d576124e96064611aec601854886126a390919063ffffffff16565b9050601854601a54826124fc91906130de565b61250691906130f5565b602160008282546125179190613117565b9091555050601854601b5461252c90836130de565b61253691906130f5565b602260008282546125479190613117565b909155505060185460195461255c90836130de565b61256691906130f5565b602060008282546125779190613117565b90915550505b801561258e5761258e873083612767565b6125988186613251565b94505b6125a6878787612767565b50505050505050565b600081848411156125d35760405162461bcd60e51b8152600401610bb49190612e56565b5060006125e08486613251565b95945050505050565b6000806125f68385613117565b9050838110156126485760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bb4565b9392505050565b6001600160a01b038216600081815260256020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6000826000036126b557506000610b84565b60006126c183856130de565b9050826126ce85836130f5565b146126485760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bb4565b600061264883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c2d565b6001600160a01b03831661278d5760405162461bcd60e51b8152600401610bb4906131c9565b6001600160a01b0382166127b35760405162461bcd60e51b8152600401610bb49061320e565b6127f0816040518060600160405280602681526020016132ec602691396001600160a01b03861660009081526020819052604090205491906125af565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461281f90826125e9565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611cc1565b600061264883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125af565b426010556007546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a0823190602401602060405180830381865afa158015612903573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292791906131b0565b9050600061293c620f4240611aec84876126a3565b9050801561295d5760075461295d906001600160a01b031661dead83612767565b6007546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b1580156129a757600080fd5b505af11580156129bb573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a1506001949350505050565b3060009081526020819052604081205490506000602254602054602154612a1a9190613117565b612a249190613117565b90506000821580612a33575081155b15612a3d57505050565b600b54612a4b9060146130de565b831115612a6357600b54612a609060146130de565b92505b600060028360215486612a7691906130de565b612a8091906130f5565b612a8a91906130f5565b90506000612a988583612870565b905047612aa482612c5b565b6000612ab04783612870565b90506000612acd87611aec602054856126a390919063ffffffff16565b90506000612aea88611aec602054866126a390919063ffffffff16565b9050600081612af98486613251565b612b039190613251565b60006021819055602081905560228190556008546040519293506001600160a01b031691849181818185875af1925050503d8060008114612b60576040519150601f19603f3d011682016040523d82523d6000602084013e612b65565b606091505b50909850508615801590612b795750600081115b15612bcc57612b888782612db5565b602154604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612c19576040519150601f19603f3d011682016040523d82523d6000602084013e612c1e565b606091505b50505050505050505050505050565b60008183612c4e5760405162461bcd60e51b8152600401610bb49190612e56565b5060006125e084866130f5565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c9057612c90613264565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0d919061312a565b81600181518110612d2057612d20613264565b6001600160a01b039283166020918202929092010152600654612d469130911684611ba9565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d7f90859060009086903090429060040161327a565b600060405180830381600087803b158015612d9957600080fd5b505af1158015612dad573d6000803e3d6000fd5b505050505050565b600654612dcd9030906001600160a01b031684611ba9565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390612e0c9030908790600090819061dead904290600401613147565b60606040518083038185885af1158015612e2a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e4f9190613182565b5050505050565b600060208083528351808285015260005b81811015612e8357858101830151858201604001528201612e67565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612eb957600080fd5b50565b60008060408385031215612ecf57600080fd5b8235612eda81612ea4565b946020939093013593505050565b600060208284031215612efa57600080fd5b813561264881612ea4565b600060208284031215612f1757600080fd5b5035919050565b600080600060608486031215612f3357600080fd5b8335612f3e81612ea4565b92506020840135612f4e81612ea4565b929592945050506040919091013590565b8035801515811461188557600080fd5b600080600060608486031215612f8457600080fd5b8335925060208401359150612f9b60408501612f5f565b90509250925092565b60008060408385031215612fb757600080fd5b8235612fc281612ea4565b9150612fd060208401612f5f565b90509250929050565b600080600060608486031215612fee57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561301757600080fd5b61264882612f5f565b6000806040838503121561303357600080fd5b823561303e81612ea4565b9150602083013561304e81612ea4565b809150509250929050565b600181811c9082168061306d57607f821691505b60208210810361308d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b8457610b846130c8565b60008261311257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b8457610b846130c8565b60006020828403121561313c57600080fd5b815161264881612ea4565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561319757600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156131c257600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b8457610b846130c8565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132ca5784516001600160a01b0316835293830193918301916001016132a5565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220542217b66ef6a4032aae890ce1e521488b2a7e0ae87e6b11aa26b5deb5a347c864736f6c63430008130033

Deployed Bytecode Sourcemap

29488:17283:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7596:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9770:169;;;;;;;;;;-1:-1:-1;9770:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9770:169:0;1023:187:1;31153:64:0;;;;;;;;;;-1:-1:-1;31153:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;36807:194;;;;;;;;;;-1:-1:-1;36807:194:0;;;;;:::i;:::-;;:::i;:::-;;29567:41;;;;;;;;;;-1:-1:-1;29567:41:0;;;;-1:-1:-1;;;;;29567:41:0;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;29567:41:0;1467:230:1;8719:108:0;;;;;;;;;;-1:-1:-1;8807:12:0;;8719:108;;;1848:25:1;;;1836:2;1821:18;8719:108:0;1702:177:1;30208:47:0;;;;;;;;;;;;;;;;29969:36;;;;;;;;;;;;;;;;30934:33;;;;;;;;;;;;;;;;30894;;;;;;;;;;;;;;;;37010:149;;;;;;;;;;-1:-1:-1;37010:149:0;;;;;:::i;:::-;;:::i;34581:234::-;;;;;;;;;;-1:-1:-1;34581:234:0;;;;;:::i;:::-;;:::i;10422:355::-;;;;;;;;;;-1:-1:-1;10422:355:0;;;;;:::i;:::-;;:::i;29650:89::-;;;;;;;;;;;;29696:42;29650:89;;30051:45;;;;;;;;;;;;;;;;30012:32;;;;;;;;;;-1:-1:-1;30012:32:0;;;;;;;;8560:93;;;;;;;;;;-1:-1:-1;8560:93:0;;8643:2;2880:36:1;;2868:2;2853:18;8560:93:0;2738:184:1;11187:218:0;;;;;;;;;;-1:-1:-1;11187:218:0;;;;;:::i;:::-;;:::i;29812:28::-;;;;;;;;;;-1:-1:-1;29812:28:0;;;;-1:-1:-1;;;;;29812:28:0;;;29615;;;;;;;;;;-1:-1:-1;29615:28:0;;;;-1:-1:-1;;;;;29615:28:0;;;30307:33;;;;;;;;;;-1:-1:-1;30307:33:0;;;;;;;;37168:125;;;;;;;;;;-1:-1:-1;37168:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;37257:28:0;37233:4;37257:28;;;:19;:28;;;;;;;;;37168:125;30748:28;;;;;;;;;;;;;;;;30387:31;;;;;;;;;;-1:-1:-1;30387:31:0;;;;;;;;;;;8891:127;;;;;;;;;;-1:-1:-1;8891:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8992:18:0;8965:7;8992:18;;;;;;;;;;;;8891:127;22098:148;;;;;;;;;;;;;:::i;42159:447::-;;;;;;;;;;-1:-1:-1;42159:447:0;;;;;:::i;:::-;;:::i;33959:160::-;;;;;;;;;;;;;:::i;35049:144::-;;;;;;;;;;-1:-1:-1;35049:144:0;;;;;:::i;:::-;;:::i;30640:30::-;;;;;;;;;;;;;;;;35401:367;;;;;;;;;;-1:-1:-1;35401:367:0;;;;;:::i;:::-;;:::i;21454:79::-;;;;;;;;;;-1:-1:-1;21519:6:0;;-1:-1:-1;;;;;21519:6:0;21454:79;;30783:31;;;;;;;;;;;;;;;;35290:102;;;;;;;;;;-1:-1:-1;35290:102:0;;;;;:::i;:::-;;:::i;7816:104::-;;;;;;;;;;;;;:::i;36355:245::-;;;;;;;;;;-1:-1:-1;36355:245:0;;;;;:::i;:::-;;:::i;30714:24::-;;;;;;;;;;;;;;;;30262:35;;;;;;;;;;;;;;;;30974:27;;;;;;;;;;;;;;;;30859:25;;;;;;;;;;;;;;;;11909:269;;;;;;;;;;-1:-1:-1;11909:269:0;;;;;:::i;:::-;;:::i;30103:29::-;;;;;;;;;;;;;;;;9232:175;;;;;;;;;;-1:-1:-1;9232:175:0;;;;;:::i;:::-;;:::i;31376:58::-;;;;;;;;;;-1:-1:-1;31376:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30347:33;;;;;;;;;;-1:-1:-1;30347:33:0;;;;;;;;;;;36164:182;;;;;;;;;;-1:-1:-1;36164:182:0;;;;;:::i;:::-;;:::i;35777:378::-;;;;;;;;;;-1:-1:-1;35777:378:0;;;;;:::i;:::-;;:::i;34824:216::-;;;;;;;;;;-1:-1:-1;34824:216:0;;;;;:::i;:::-;;:::i;30557:39::-;;;;;;;;;;-1:-1:-1;30557:39:0;;;;;;;;29853:35;;;;;;;;;;;;;;;;45911:857;;;:::i;34190:382::-;;;;;;;;;;-1:-1:-1;34190:382:0;;;;;:::i;:::-;;:::i;30606:27::-;;;;;;;;;;;;;;;;29783:22;;;;;;;;;;-1:-1:-1;29783:22:0;;;;-1:-1:-1;;;;;29783:22:0;;;9471:151;;;;;;;;;;-1:-1:-1;9471:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;9587:18:0;;;9560:7;9587:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9471:151;29895:33;;;;;;;;;;;;;;;;30677:30;;;;;;;;;;;;;;;;22402:244;;;;;;;;;;-1:-1:-1;22402:244:0;;;;;:::i;:::-;;:::i;30821:31::-;;;;;;;;;;;;;;;;29935:24;;;;;;;;;;;;;;;;43183:761;;;;;;;;;;-1:-1:-1;43183:761:0;;;;;:::i;:::-;;:::i;7596:100::-;7650:13;7683:5;7676:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7596:100;:::o;9770:169::-;9853:4;9870:39;3397:10;9893:7;9902:6;9870:8;:39::i;:::-;-1:-1:-1;9927:4:0;9770:169;;;;;:::o;36807:194::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;;;;;;;;;36936:13:::1;::::0;36897:53:::1;::::0;-1:-1:-1;;;;;36936:13:0;;::::1;::::0;36897:53;::::1;::::0;::::1;::::0;36936:13:::1;::::0;36897:53:::1;36961:13;:32:::0;;-1:-1:-1;;;;;;36961:32:0::1;-1:-1:-1::0;;;;;36961:32:0;;;::::1;::::0;;;::::1;::::0;;36807:194::o;37010:149::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;37113:7:::1;::::0;37087:34:::1;::::0;-1:-1:-1;;;;;37113:7:0;;::::1;::::0;37087:34;::::1;::::0;::::1;::::0;37113:7:::1;::::0;37087:34:::1;37132:7;:19:::0;;-1:-1:-1;;;;;;37132:19:0::1;-1:-1:-1::0;;;;;37132:19:0;;;::::1;::::0;;;::::1;::::0;;37010:149::o;34581:234::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;34700:4:::1;34694;34674:13;8807:12:::0;;;8719:108;34674:13:::1;:17;::::0;34690:1:::1;34674:17;:::i;:::-;:24;;;;:::i;:::-;34673:31;;;;:::i;:::-;34663:6;:41;;34655:101;;;::::0;-1:-1:-1;;;34655:101:0;;6107:2:1;34655:101:0::1;::::0;::::1;6089:21:1::0;6146:2;6126:18;;;6119:30;6185:34;6165:18;;;6158:62;-1:-1:-1;;;6236:18:1;;;6229:45;6291:19;;34655:101:0::1;5905:411:1::0;34655:101:0::1;34790:17;:6:::0;34800::::1;34790:17;:::i;:::-;34767:20;:40:::0;-1:-1:-1;34581:234:0:o;10422:355::-;10562:4;10579:36;10589:6;10597:9;10608:6;10579:9;:36::i;:::-;10626:121;10635:6;3397:10;10657:89;10695:6;10657:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10657:19:0;;;;;;:11;:19;;;;;;;;3397:10;10657:33;;;;;;;;;;:37;:89::i;:::-;10626:8;:121::i;:::-;-1:-1:-1;10765:4:0;10422:355;;;;;:::o;11187:218::-;3397:10;11275:4;11324:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11324:34:0;;;;;;;;;;11275:4;;11292:83;;11315:7;;11324:50;;11363:10;11324:38;:50::i;22098:148::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;22189:6:::1;::::0;22168:40:::1;::::0;22205:1:::1;::::0;-1:-1:-1;;;;;22189:6:0::1;::::0;22168:40:::1;::::0;22205:1;;22168:40:::1;22219:6;:19:::0;;-1:-1:-1;;;;;;22219:19:0::1;::::0;;22098:148::o;42159:447::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;42313:3:::1;42290:19;:26;;42282:90;;;::::0;-1:-1:-1;;;42282:90:0;;6523:2:1;42282:90:0::1;::::0;::::1;6505:21:1::0;6562:2;6542:18;;;6535:30;6601:34;6581:18;;;6574:62;-1:-1:-1;;;6652:18:1;;;6645:49;6711:19;;42282:90:0::1;6321:415:1::0;42282:90:0::1;42403:4;42391:8;:16;;:33;;;;-1:-1:-1::0;42411:13:0;42391:33:::1;42383:94;;;::::0;-1:-1:-1;;;42383:94:0;;6943:2:1;42383:94:0::1;::::0;::::1;6925:21:1::0;6982:2;6962:18;;;6955:30;7021:34;7001:18;;;6994:62;-1:-1:-1;;;7072:18:1;;;7065:46;7128:19;;42383:94:0::1;6741:412:1::0;42383:94:0::1;42488:15;:37:::0;;;;42536:16:::1;:27:::0;42574:13:::1;:24:::0;;-1:-1:-1;;42574:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;42159:447::o;33959:160::-;21667:6;;34011:4;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;-1:-1:-1;34028:14:0::1;:22:::0;;-1:-1:-1;;34028:22:0;;::::1;::::0;;;34061:20:::1;:28:::0;;;;::::1;::::0;;34028:22;33959:160;:::o;35049:144::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35139:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;35139:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35049:144::o;35401:367::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;35517:15:::1;:31:::0;;;35559:15:::1;:31:::0;;;35601:9:::1;:19:::0;;;35613:7;35646:33:::1;35577:13:::0;35535;35646:33:::1;:::i;:::-;:45;;;;:::i;:::-;35631:12;:60:::0;;;35726:1:::1;-1:-1:-1::0;35710:17:0::1;35702:58;;;::::0;-1:-1:-1;;;35702:58:0;;7490:2:1;35702:58:0::1;::::0;::::1;7472:21:1::0;7529:2;7509:18;;;7502:30;7568;7548:18;;;7541:58;7616:18;;35702:58:0::1;7288:352:1::0;35702:58:0::1;35401:367:::0;;;:::o;35290:102::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;35363:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;35363:21:0;;::::1;::::0;;;::::1;::::0;;35290:102::o;7816:104::-;7872:13;7905:7;7898:14;;;;;:::i;36355:245::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;36462:13:::1;::::0;-1:-1:-1;;;;;36462:13:0;;::::1;36454:21:::0;;::::1;::::0;36446:91:::1;;;::::0;-1:-1:-1;;;36446:91:0;;7847:2:1;36446:91:0::1;::::0;::::1;7829:21:1::0;7886:2;7866:18;;;7859:30;7925:34;7905:18;;;7898:62;7996:27;7976:18;;;7969:55;8041:19;;36446:91:0::1;7645:421:1::0;36446:91:0::1;36551:41;36580:4;36586:5;36551:28;:41::i;:::-;36355:245:::0;;:::o;11909:269::-;12002:4;12019:129;3397:10;12042:7;12051:96;12090:15;12051:96;;;;;;;;;;;;;;;;;3397:10;12051:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12051:34:0;;;;;;;;;;;;:38;:96::i;9232:175::-;9318:4;9335:42;3397:10;9359:9;9370:6;9335:9;:42::i;36164:182::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36249:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;36249:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;36304:34;;1163:41:1;;;36304:34:0::1;::::0;1136:18:1;36304:34:0::1;;;;;;;36164:182:::0;;:::o;35777:378::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;35894:16:::1;:32:::0;;;35937:16:::1;:32:::0;;;35980:10:::1;:20:::0;;;35993:7;36027:35:::1;35956:13:::0;35913;36027:35:::1;:::i;:::-;:48;;;;:::i;:::-;36011:13;:64:::0;;;36111:2:::1;-1:-1:-1::0;36094:19:0::1;36086:61;;;::::0;-1:-1:-1;;;36086:61:0;;8273:2:1;36086:61:0::1;::::0;::::1;8255:21:1::0;8312:2;8292:18;;;8285:30;8351:31;8331:18;;;8324:59;8400:18;;36086:61:0::1;8071:353:1::0;34824:216:0;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;34947:4:::1;34941;34920:13;8807:12:::0;;;8719:108;34920:13:::1;:18;::::0;34936:2:::1;34920:18;:::i;:::-;:25;;;;:::i;:::-;34919:32;;;;:::i;:::-;34909:6;:42;;34901:91;;;::::0;-1:-1:-1;;;34901:91:0;;8631:2:1;34901:91:0::1;::::0;::::1;8613:21:1::0;8670:2;8650:18;;;8643:30;8709:34;8689:18;;;8682:62;-1:-1:-1;;;8760:18:1;;;8753:34;8804:19;;34901:91:0::1;8429:400:1::0;34901:91:0::1;35015:17;:6:::0;35025::::1;35015:17;:::i;:::-;35003:9;:29:::0;-1:-1:-1;34824:216:0:o;45911:857::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;45971:13:::1;:20:::0;;-1:-1:-1;;45971:20:0::1;;;::::0;;46020:15:::1;46003:14;:32:::0;46119:42:::1;46183:58;46119:42:::0;45987:4:::1;46183:25;:58::i;:::-;46252:15;:34:::0;;-1:-1:-1;;;;;;46252:34:0::1;-1:-1:-1::0;;;;;46252:34:0;::::1;::::0;;::::1;::::0;;;46331:26:::1;::::0;;-1:-1:-1;;;46331:26:0;;;;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;46252:34;46331:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;46313:70:0::1;;46392:4;46399:16;-1:-1:-1::0;;;;;46399:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46313:110;::::0;-1:-1:-1;;;;;;46313:110:0::1;::::0;;;;;;-1:-1:-1;;;;;9320:15:1;;;46313:110:0::1;::::0;::::1;9302:34:1::0;9372:15;;9352:18;;;9345:43;9237:18;;46313:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46297:13;:126:::0;;-1:-1:-1;;;;;;46297:126:0::1;-1:-1:-1::0;;;;;46297:126:0;;;::::1;::::0;;::::1;::::0;;46434:55:::1;::::0;-1:-1:-1;46434:25:0::1;:55::i;:::-;46537:13;::::0;46500:58:::1;::::0;-1:-1:-1;;;;;46537:13:0::1;::::0;46500:28:::1;:58::i;:::-;46601:15;::::0;46569:62:::1;::::0;46586:4:::1;::::0;-1:-1:-1;;;;;46601:15:0::1;-1:-1:-1::0;;46569:8:0::1;:62::i;:::-;46643:15;::::0;-1:-1:-1;;;;;46643:15:0::1;:31;46682:9;46701:4;46707:24;46701:4:::0;-1:-1:-1;;;;;8992:18:0;8965:7;8992:18;;;;;;;;;;;;8891:127;46707:24:::1;46732:1;46734::::0;46736:7:::1;21519:6:::0;;-1:-1:-1;;;;;21519:6:0;;21454:79;46736:7:::1;46744:15;46643:117;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;45960:808;45911:857::o:0;34190:382::-;21667:6;;34271:4;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;34328:6:::1;34308:13;8807:12:::0;;;8719:108;34308:13:::1;:17;::::0;34324:1:::1;34308:17;:::i;:::-;:26;;;;:::i;:::-;34295:9;:39;;34287:105;;;::::0;-1:-1:-1;;;34287:105:0;;10524:2:1;34287:105:0::1;::::0;::::1;10506:21:1::0;10563:2;10543:18;;;10536:30;10602:34;10582:18;;;10575:62;-1:-1:-1;;;10653:18:1;;;10646:51;10714:19;;34287:105:0::1;10322:417:1::0;34287:105:0::1;34443:4;34423:13;8807:12:::0;;;8719:108;34423:13:::1;:17;::::0;34439:1:::1;34423:17;:::i;:::-;:24;;;;:::i;:::-;34410:9;:37;;34402:102;;;::::0;-1:-1:-1;;;34402:102:0;;10946:2:1;34402:102:0::1;::::0;::::1;10928:21:1::0;10985:2;10965:18;;;10958:30;11024:34;11004:18;;;10997:62;-1:-1:-1;;;11075:18:1;;;11068:50;11135:19;;34402:102:0::1;10744:416:1::0;34402:102:0::1;-1:-1:-1::0;34514:18:0::1;:30:::0;;;34561:4:::1;21737:1;34190:382:::0;;;:::o;22402:244::-;21667:6;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22491:22:0;::::1;22483:73;;;::::0;-1:-1:-1;;;22483:73:0;;11367:2:1;22483:73:0::1;::::0;::::1;11349:21:1::0;11406:2;11386:18;;;11379:30;11445:34;11425:18;;;11418:62;-1:-1:-1;;;11496:18:1;;;11489:36;11542:19;;22483:73:0::1;11165:402:1::0;22483:73:0::1;22593:6;::::0;22572:38:::1;::::0;-1:-1:-1;;;;;22572:38:0;;::::1;::::0;22593:6:::1;::::0;22572:38:::1;::::0;22593:6:::1;::::0;22572:38:::1;22621:6;:17:::0;;-1:-1:-1;;;;;;22621:17:0::1;-1:-1:-1::0;;;;;22621:17:0;;;::::1;::::0;;;::::1;::::0;;22402:244::o;43183:761::-;21667:6;;43267:4;;-1:-1:-1;;;;;21667:6:0;3397:10;21667:22;21659:67;;;;-1:-1:-1;;;21659:67:0;;;;;;;:::i;:::-;43333:19:::1;;43310:20;;:42;;;;:::i;:::-;43292:15;:60;43284:106;;;::::0;-1:-1:-1;;;43284:106:0;;11774:2:1;43284:106:0::1;::::0;::::1;11756:21:1::0;;;11793:18;;;11786:30;11852:34;11832:18;;;11825:62;11904:18;;43284:106:0::1;11572:356:1::0;43284:106:0::1;43420:4;43409:7;:15;;43401:70;;;::::0;-1:-1:-1;;;43401:70:0;;12135:2:1;43401:70:0::1;::::0;::::1;12117:21:1::0;12174:2;12154:18;;;12147:30;12213:34;12193:18;;;12186:62;-1:-1:-1;;;12264:18:1;;;12257:40;12314:19;;43401:70:0::1;11933:406:1::0;43401:70:0::1;43505:15;43482:20;:38:::0;43580:13:::1;::::0;43565:29:::1;::::0;-1:-1:-1;;;43565:29:0;;-1:-1:-1;;;;;43580:13:0;;::::1;43565:29;::::0;::::1;1640:51:1::0;43534:28:0::1;::::0;43565:4:::1;::::0;:14:::1;::::0;1613:18:1;;43565:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43534:60:::0;-1:-1:-1;43608:20:0::1;43631:44;43669:5;43631:33;43534:60:::0;43656:7;43631:24:::1;:33::i;:::-;:37:::0;::::1;:44::i;:::-;43608:67:::0;-1:-1:-1;43693:16:0;;43689:109:::1;;43741:13;::::0;43725:61:::1;::::0;-1:-1:-1;;;;;43741:13:0::1;43764:6;43773:12:::0;43725:15:::1;:61::i;:::-;43848:13;::::0;43873:11:::1;::::0;;-1:-1:-1;;;;;;43873:11:0;;;;-1:-1:-1;;;;;43848:13:0;;::::1;::::0;;;43873:9:::1;::::0;:11:::1;::::0;;::::1;::::0;43811:19:::1;::::0;43873:11;;;;;;;43811:19;43848:13;43873:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;43900:14:0::1;::::0;::::1;::::0;-1:-1:-1;43900:14:0;;-1:-1:-1;43900:14:0::1;-1:-1:-1::0;43932:4:0::1;::::0;43183:761;-1:-1:-1;;;;43183:761:0:o;15105:381::-;-1:-1:-1;;;;;15241:19:0;;15233:68;;;;-1:-1:-1;;;15233:68:0;;12735:2:1;15233:68:0;;;12717:21:1;12774:2;12754:18;;;12747:30;12813:34;12793:18;;;12786:62;-1:-1:-1;;;12864:18:1;;;12857:34;12908:19;;15233:68:0;12533:400:1;15233:68:0;-1:-1:-1;;;;;15320:21:0;;15312:68;;;;-1:-1:-1;;;15312:68:0;;13140:2:1;15312:68:0;;;13122:21:1;13179:2;13159:18;;;13152:30;13218:34;13198:18;;;13191:62;-1:-1:-1;;;13269:18:1;;;13262:32;13311:19;;15312:68:0;12938:398:1;15312:68:0;-1:-1:-1;;;;;15394:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15446:32;;1848:25:1;;;15446:32:0;;1821:18:1;15446:32:0;;;;;;;;15105:381;;;:::o;37302:4335::-;-1:-1:-1;;;;;37434:18:0;;37426:68;;;;-1:-1:-1;;;37426:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37513:16:0;;37505:64;;;;-1:-1:-1;;;37505:64:0;;;;;;;:::i;:::-;37585:6;37595:1;37585:11;37582:92;;37613:28;37629:4;37635:2;37639:1;37613:15;:28::i;37582:92::-;37690:14;;;;37687:1811;;;21519:6;;-1:-1:-1;;;;;37742:15:0;;;21519:6;;37742:15;;;;:49;;-1:-1:-1;21519:6:0;;-1:-1:-1;;;;;37778:13:0;;;21519:6;;37778:13;;37742:49;:86;;;;-1:-1:-1;;;;;;37812:16:0;;;;37742:86;:128;;;;-1:-1:-1;;;;;;37849:21:0;;37863:6;37849:21;;37742:128;:158;;;;-1:-1:-1;37892:8:0;;-1:-1:-1;;;37892:8:0;;;;37891:9;37742:158;37720:1767;;;37938:13;;;;;;;37934:148;;-1:-1:-1;;;;;37983:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;38012:23:0;;;;;;:19;:23;;;;;;;;37983:52;37975:87;;;;-1:-1:-1;;;37975:87:0;;14353:2:1;37975:87:0;;;14335:21:1;14392:2;14372:18;;;14365:30;-1:-1:-1;;;14411:18:1;;;14404:52;14473:18;;37975:87:0;14151:346:1;37975:87:0;38241:20;;;;38237:423;;;21519:6;;-1:-1:-1;;;;;38289:13:0;;;21519:6;;38289:13;;;;:47;;-1:-1:-1;38320:15:0;;-1:-1:-1;;;;;38306:30:0;;;38320:15;;38306:30;;38289:47;:79;;;;-1:-1:-1;38354:13:0;;-1:-1:-1;;;;;38340:28:0;;;38354:13;;38340:28;;38289:79;38285:356;;;38433:9;38404:39;;;;:28;:39;;;;;;38446:12;-1:-1:-1;38396:140:0;;;;-1:-1:-1;;;38396:140:0;;14704:2:1;38396:140:0;;;14686:21:1;14743:2;14723:18;;;14716:30;14782:34;14762:18;;;14755:62;14853:34;14833:18;;;14826:62;-1:-1:-1;;;14904:19:1;;;14897:40;14954:19;;38396:140:0;14502:477:1;38396:140:0;38592:9;38563:39;;;;:28;:39;;;;;38605:12;38563:54;;38285:356;-1:-1:-1;;;;;38713:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;38749:35:0;;;;;;:31;:35;;;;;;;;38748:36;38713:71;38709:763;;;38831:20;;38821:6;:30;;38813:96;;;;-1:-1:-1;;;38813:96:0;;15186:2:1;38813:96:0;;;15168:21:1;15225:2;15205:18;;;15198:30;15264:34;15244:18;;;15237:62;-1:-1:-1;;;15315:18:1;;;15308:51;15376:19;;38813:96:0;14984:417:1;38813:96:0;38970:9;;-1:-1:-1;;;;;8992:18:0;;8965:7;8992:18;;;;;;;;;;;38944:22;;:6;:22;:::i;:::-;:35;;38936:67;;;;-1:-1:-1;;;38936:67:0;;15608:2:1;38936:67:0;;;15590:21:1;15647:2;15627:18;;;15620:30;-1:-1:-1;;;15666:18:1;;;15659:49;15725:18;;38936:67:0;15406:343:1;38936:67:0;38709:763;;;-1:-1:-1;;;;;39082:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;39116:37:0;;;;;;:31;:37;;;;;;;;39115:38;39082:71;39078:394;;;39200:20;;39190:6;:30;;39182:97;;;;-1:-1:-1;;;39182:97:0;;15956:2:1;39182:97:0;;;15938:21:1;15995:2;15975:18;;;15968:30;16034:34;16014:18;;;16007:62;-1:-1:-1;;;16085:18:1;;;16078:52;16147:19;;39182:97:0;15754:418:1;39078:394:0;-1:-1:-1;;;;;39326:35:0;;;;;;:31;:35;;;;;;;;39322:150;;39419:9;;-1:-1:-1;;;;;8992:18:0;;8965:7;8992:18;;;;;;;;;;;39393:22;;:6;:22;:::i;:::-;:35;;39385:67;;;;-1:-1:-1;;;39385:67:0;;15608:2:1;39385:67:0;;;15590:21:1;15647:2;15627:18;;;15620:30;-1:-1:-1;;;15666:18:1;;;15659:49;15725:18;;39385:67:0;15406:343:1;39385:67:0;39513:13;;;;:28;;;;-1:-1:-1;39530:11:0;;;;;;;39513:28;:57;;;;-1:-1:-1;;;;;;39545:25:0;;;;;;:19;:25;;;;;;;;39513:57;:82;;;;-1:-1:-1;;;;;;39574:21:0;;39588:6;39574:21;39513:82;39510:186;;;39612:72;39640:43;39681:1;39640:36;39671:4;;39640:26;39661:4;;39640:16;;:20;;:26;;;;:::i;:::-;:30;;:36::i;:::-;:40;;:43::i;:::-;39612:27;:72::i;:::-;;39510:186;-1:-1:-1;;;;;39711:31:0;;;;;;:25;:31;;;;;;;;:54;;;;-1:-1:-1;39752:13:0;;-1:-1:-1;;;;;39746:19:0;;;39752:13;;39746:19;39711:54;39708:104;;;39782:11;:18;;-1:-1:-1;;39782:18:0;;;;;39708:104;39867:4;39818:28;8992:18;;;;;;;;;;;39926;;39902:42;;;;;;;39976:35;;-1:-1:-1;40000:11:0;;;;;;;39976:35;:61;;;;-1:-1:-1;40029:8:0;;-1:-1:-1;;;40029:8:0;;;;40028:9;39976:61;:110;;;;-1:-1:-1;;;;;;40055:31:0;;;;;;:25;:31;;;;;;;;40054:32;39976:110;:153;;;;-1:-1:-1;;;;;;40104:25:0;;;;;;:19;:25;;;;;;;;40103:26;39976:153;:194;;;;-1:-1:-1;;;;;;40147:23:0;;;;;;:19;:23;;;;;;;;40146:24;39976:194;39958:328;;;40197:8;:15;;-1:-1:-1;;;;40197:15:0;-1:-1:-1;;;40197:15:0;;;40230:10;:8;:10::i;:::-;40258:8;:16;;-1:-1:-1;;;;40258:16:0;;;39958:328;40315:8;;-1:-1:-1;;;;;40425:25:0;;40299:12;40425:25;;;:19;:25;;;;;;40315:8;-1:-1:-1;;;40315:8:0;;;;;40314:9;;40425:25;;:52;;-1:-1:-1;;;;;;40454:23:0;;;;;;:19;:23;;;;;;;;40425:52;40422:99;;;-1:-1:-1;40504:5:0;40422:99;40534:12;40638:7;40635:948;;;-1:-1:-1;;;;;40689:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;40738:1;40722:13;;:17;40689:50;40685:748;;;40766:34;40796:3;40766:25;40777:13;;40766:6;:10;;:25;;;;:::i;:34::-;40759:41;;40867:13;;40848:16;;40841:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;40819:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;40935:13:0;;40922:10;;40915:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;40899:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;41015:13:0;;40996:16;;40989:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;40967:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;40685:748:0;;-1:-1:-1;40685:748:0;;-1:-1:-1;;;;;41089:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;41139:1;41124:12;;:16;41089:51;41086:347;;;41165:33;41194:3;41165:24;41176:12;;41165:6;:10;;:24;;;;:::i;:33::-;41158:40;;41261:12;;41243:15;;41236:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;41214:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;41327:12:0;;41315:9;;41308:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;41292:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;41405:12:0;;41387:15;;41380:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;41358:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;41086:347:0;41453:8;;41450:93;;41485:42;41501:4;41515;41522;41485:15;:42::i;:::-;41557:14;41567:4;41557:14;;:::i;:::-;;;40635:948;41596:33;41612:4;41618:2;41622:6;41596:15;:33::i;:::-;37415:4222;;;;37302:4335;;;:::o;17392:193::-;17478:7;17514:12;17506:6;;;;17498:29;;;;-1:-1:-1;;;17498:29:0;;;;;;;;:::i;:::-;-1:-1:-1;17538:9:0;17550:5;17554:1;17550;:5;:::i;:::-;17538:17;17392:193;-1:-1:-1;;;;;17392:193:0:o;16486:182::-;16544:7;;16576:5;16580:1;16576;:5;:::i;:::-;16564:17;;16605:1;16600;:6;;16592:46;;;;-1:-1:-1;;;16592:46:0;;16512:2:1;16592:46:0;;;16494:21:1;16551:2;16531:18;;;16524:30;16590:29;16570:18;;;16563:57;16637:18;;16592:46:0;16310:351:1;16592:46:0;16659:1;16486:182;-1:-1:-1;;;16486:182:0:o;36609:189::-;-1:-1:-1;;;;;36692:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;36692:39:0;;;;;;;;;;36750:40;;36692:39;;:31;36750:40;;;36609:189;;:::o;17845:473::-;17903:7;18148:1;18153;18148:6;18144:47;;-1:-1:-1;18178:1:0;18171:8;;18144:47;18204:9;18216:5;18220:1;18216;:5;:::i;:::-;18204:17;-1:-1:-1;18249:1:0;18240:5;18244:1;18204:17;18240:5;:::i;:::-;:10;18232:56;;;;-1:-1:-1;;;18232:56:0;;16868:2:1;18232:56:0;;;16850:21:1;16907:2;16887:18;;;16880:30;16946:34;16926:18;;;16919:62;-1:-1:-1;;;16997:18:1;;;16990:31;17038:19;;18232:56:0;16666:397:1;18795:132:0;18853:7;18880:39;18884:1;18887;18880:39;;;;;;;;;;;;;;;;;:3;:39::i;12669:575::-;-1:-1:-1;;;;;12809:20:0;;12801:70;;;;-1:-1:-1;;;12801:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12890:23:0;;12882:71;;;;-1:-1:-1;;;12882:71:0;;;;;;;:::i;:::-;13048;13070:6;13048:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13048:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;13028:17:0;;;:9;:17;;;;;;;;;;;:91;;;;13153:20;;;;;;;:32;;13178:6;13153:24;:32::i;:::-;-1:-1:-1;;;;;13130:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;13201:35;1848:25:1;;;13130:20:0;;13201:35;;;;;;1821:18:1;13201:35:0;1702:177:1;16952:136:0;17010:7;17037:43;17041:1;17044;17037:43;;;;;;;;;;;;;;;;;:3;:43::i;42615:559::-;42728:15;42711:14;:32;42803:13;;42788:29;;-1:-1:-1;;;42788:29:0;;-1:-1:-1;;;;;42803:13:0;;;42788:29;;;1640:51:1;42694:4:0;;;;42788;;:14;;1613:18:1;;42788:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42757:60;-1:-1:-1;42831:20:0;42854:53;42899:7;42854:40;42757:60;42879:14;42854:24;:40::i;:53::-;42831:76;-1:-1:-1;42925:16:0;;42921:109;;42973:13;;42957:61;;-1:-1:-1;;;;;42973:13:0;42996:6;43005:12;42957:15;:61::i;:::-;43080:13;;43105:11;;;-1:-1:-1;;;;;;43105:11:0;;;;-1:-1:-1;;;;;43080:13:0;;;;;;43105:9;;:11;;;;;43043:19;;43105:11;;;;;;;43043:19;43080:13;43105:11;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;43132:12:0;;;;-1:-1:-1;43132:12:0;;-1:-1:-1;43132:12:0;-1:-1:-1;43162:4:0;;42615:559;-1:-1:-1;;;;42615:559:0:o;44382:1521::-;44465:4;44421:23;8992:18;;;;;;;;;;;44421:50;;44482:25;44552:12;;44531:18;;44510;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;44482:82;-1:-1:-1;44575:12:0;44604:20;;;:46;;-1:-1:-1;44628:22:0;;44604:46;44601:60;;;44653:7;;;44382:1521::o;44601:60::-;44695:18;;:23;;44716:2;44695:23;:::i;:::-;44677:15;:41;44674:111;;;44750:18;;:23;;44771:2;44750:23;:::i;:::-;44732:41;;44674:111;44798:23;44883:1;44863:17;44842:18;;44824:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;44798:86;-1:-1:-1;44895:26:0;44924:36;:15;44798:86;44924:19;:36::i;:::-;44895:65;-1:-1:-1;45002:21:0;45037:36;44895:65;45037:16;:36::i;:::-;45088:18;45109:44;:21;45135:17;45109:25;:44::i;:::-;45088:65;;45167:23;45193:57;45232:17;45193:34;45208:18;;45193:10;:14;;:34;;;;:::i;:57::-;45167:83;;45261:17;45281:57;45320:17;45281:34;45296:18;;45281:10;:14;;:34;;;;:::i;:57::-;45261:77;-1:-1:-1;45352:23:0;45261:77;45378:28;45391:15;45378:10;:28;:::i;:::-;:40;;;;:::i;:::-;45453:1;45432:18;:22;;;45465:18;:22;;;45498:12;:16;;;45549:7;;45541:43;;45352:66;;-1:-1:-1;;;;;;45549:7:0;;45570:9;;45541:43;45453:1;45541:43;45570:9;45549:7;45541:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45528:56:0;;-1:-1:-1;;45601:19:0;;;;;:42;;;45642:1;45624:15;:19;45601:42;45598:210;;;45659:46;45672:15;45689;45659:12;:46::i;:::-;45777:18;;45725:71;;;17480:25:1;;;17536:2;17521:18;;17514:34;;;17564:18;;;17557:34;;;;45725:71:0;;;;;;17468:2:1;45725:71:0;;;45598:210;45842:13;;45834:61;;-1:-1:-1;;;;;45842:13:0;;;;45869:21;;45834:61;;;;45869:21;45842:13;45834:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;44382:1521:0:o;19424:279::-;19510:7;19545:12;19538:5;19530:28;;;;-1:-1:-1;;;19530:28:0;;;;;;;;:::i;:::-;-1:-1:-1;19569:9:0;19581:5;19585:1;19581;:5;:::i;41646:505::-;41736:16;;;41750:1;41736:16;;;;;;;;41712:21;;41736:16;;;;;;;;;;-1:-1:-1;41736:16:0;41712:40;;41781:4;41763;41768:1;41763:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;41763:23:0;;;:7;;;;;;;;;;:23;;;;41807:15;;:22;;;-1:-1:-1;;;41807:22:0;;;;:15;;;;;:20;;:22;;;;;41763:7;;41807:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41797:4;41802:1;41797:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;41797:32:0;;;:7;;;;;;;;;:32;41875:15;;41843:62;;41860:4;;41875:15;41893:11;41843:8;:62::i;:::-;41919:15;;:224;;-1:-1:-1;;;41919:224:0;;-1:-1:-1;;;;;41919:15:0;;;;:66;;:224;;42000:11;;41919:15;;42070:4;;42097;;42117:15;;41919:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41701:450;41646:505;:::o;43952:421::-;44065:15;;44033:62;;44050:4;;-1:-1:-1;;;;;44065:15:0;44083:11;44033:8;:62::i;:::-;44109:15;;:256;;-1:-1:-1;;;44109:256:0;;-1:-1:-1;;;;;44109:15:0;;;;:31;;44148:9;;44109:256;;44181:4;;44201:11;;44109:15;;;;29696:42;;44339:15;;44109:256;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43952:421;;:::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;622:70;567:131;:::o;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;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:160::-;2992:20;;3048:13;;3041:21;3031:32;;3021:60;;3077:1;3074;3067:12;3092:316;3166:6;3174;3182;3235:2;3223:9;3214:7;3210:23;3206:32;3203:52;;;3251:1;3248;3241:12;3203:52;3287:9;3274:23;3264:33;;3344:2;3333:9;3329:18;3316:32;3306:42;;3367:35;3398:2;3387:9;3383:18;3367:35;:::i;:::-;3357:45;;3092:316;;;;;:::o;3413:315::-;3478:6;3486;3539:2;3527:9;3518:7;3514:23;3510:32;3507:52;;;3555:1;3552;3545:12;3507:52;3594:9;3581:23;3613:31;3638:5;3613:31;:::i;:::-;3663:5;-1:-1:-1;3687:35:1;3718:2;3703:18;;3687:35;:::i;:::-;3677:45;;3413:315;;;;;:::o;3733:316::-;3810:6;3818;3826;3879:2;3867:9;3858:7;3854:23;3850:32;3847:52;;;3895:1;3892;3885:12;3847:52;-1:-1:-1;;3918:23:1;;;3988:2;3973:18;;3960:32;;-1:-1:-1;4039:2:1;4024:18;;;4011:32;;3733:316;-1:-1:-1;3733:316:1:o;4054:180::-;4110:6;4163:2;4151:9;4142:7;4138:23;4134:32;4131:52;;;4179:1;4176;4169:12;4131:52;4202:26;4218:9;4202:26;:::i;4239:388::-;4307:6;4315;4368:2;4356:9;4347:7;4343:23;4339:32;4336:52;;;4384:1;4381;4374:12;4336:52;4423:9;4410:23;4442:31;4467:5;4442:31;:::i;:::-;4492:5;-1:-1:-1;4549:2:1;4534:18;;4521:32;4562:33;4521:32;4562:33;:::i;:::-;4614:7;4604:17;;;4239:388;;;;;:::o;4632:380::-;4711:1;4707:12;;;;4754;;;4775:61;;4829:4;4821:6;4817:17;4807:27;;4775:61;4882:2;4874:6;4871:14;4851:18;4848:38;4845:161;;4928:10;4923:3;4919:20;4916:1;4909:31;4963:4;4960:1;4953:15;4991:4;4988:1;4981:15;4845:161;;4632:380;;;:::o;5017:356::-;5219:2;5201:21;;;5238:18;;;5231:30;5297:34;5292:2;5277:18;;5270:62;5364:2;5349:18;;5017:356::o;5378:127::-;5439:10;5434:3;5430:20;5427:1;5420:31;5470:4;5467:1;5460:15;5494:4;5491:1;5484:15;5510:168;5583:9;;;5614;;5631:15;;;5625:22;;5611:37;5601:71;;5652:18;;:::i;5683:217::-;5723:1;5749;5739:132;;5793:10;5788:3;5784:20;5781:1;5774:31;5828:4;5825:1;5818:15;5856:4;5853:1;5846:15;5739:132;-1:-1:-1;5885:9:1;;5683:217::o;7158:125::-;7223:9;;;7244:10;;;7241:36;;;7257:18;;:::i;8834:251::-;8904:6;8957:2;8945:9;8936:7;8932:23;8928:32;8925:52;;;8973:1;8970;8963:12;8925:52;9005:9;8999:16;9024:31;9049:5;9024:31;:::i;9399:607::-;-1:-1:-1;;;;;9758:15:1;;;9740:34;;9805:2;9790:18;;9783:34;;;;9848:2;9833:18;;9826:34;;;;9891:2;9876:18;;9869:34;;;;9940:15;;;9934:3;9919:19;;9912:44;9720:3;9972:19;;9965:35;;;;9689:3;9674:19;;9399:607::o;10011:306::-;10099:6;10107;10115;10168:2;10156:9;10147:7;10143:23;10139:32;10136:52;;;10184:1;10181;10174:12;10136:52;10213:9;10207:16;10197:26;;10263:2;10252:9;10248:18;10242:25;10232:35;;10307:2;10296:9;10292:18;10286:25;10276:35;;10011:306;;;;;:::o;12344:184::-;12414:6;12467:2;12455:9;12446:7;12442:23;12438:32;12435:52;;;12483:1;12480;12473:12;12435:52;-1:-1:-1;12506:16:1;;12344:184;-1:-1:-1;12344:184:1:o;13341:401::-;13543:2;13525:21;;;13582:2;13562:18;;;13555:30;13621:34;13616:2;13601:18;;13594:62;-1:-1:-1;;;13687:2:1;13672:18;;13665:35;13732:3;13717:19;;13341:401::o;13747:399::-;13949:2;13931:21;;;13988:2;13968:18;;;13961:30;14027:34;14022:2;14007:18;;14000:62;-1:-1:-1;;;14093:2:1;14078:18;;14071:33;14136:3;14121:19;;13747:399::o;16177:128::-;16244:9;;;16265:11;;;16262:37;;;16279:18;;:::i;17734:127::-;17795:10;17790:3;17786:20;17783:1;17776:31;17826:4;17823:1;17816:15;17850:4;17847:1;17840:15;17866:980;18128:4;18176:3;18165:9;18161:19;18207:6;18196:9;18189:25;18233:2;18271:6;18266:2;18255:9;18251:18;18244:34;18314:3;18309:2;18298:9;18294:18;18287:31;18338:6;18373;18367:13;18404:6;18396;18389:22;18442:3;18431:9;18427:19;18420:26;;18481:2;18473:6;18469:15;18455:29;;18502:1;18512:195;18526:6;18523:1;18520:13;18512:195;;;18591:13;;-1:-1:-1;;;;;18587:39:1;18575:52;;18682:15;;;;18647:12;;;;18623:1;18541:9;18512:195;;;-1:-1:-1;;;;;;;18763:32:1;;;;18758:2;18743:18;;18736:60;-1:-1:-1;;;18827:3:1;18812:19;18805:35;18724:3;17866:980;-1:-1:-1;;;17866:980:1:o

Swarm Source

ipfs://542217b66ef6a4032aae890ce1e521488b2a7e0ae87e6b11aa26b5deb5a347c8
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.