ETH Price: $2,965.81 (+3.52%)
Gas: 1 Gwei

Token

Wyverns Breath ($BREATH)
 

Overview

Max Total Supply

10,000,000 $BREATH

Holders

795

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5 $BREATH

Value
$0.00
0x55b79a71db5ae061f68df88258d61e731f8cf4ca
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:
WYVERNSBREATH

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-19
*/

/**
 *Submitted for verification at Etherscan.io on 2021-11-02
*/

/**
 *Submitted for verification at BscScan.com on 2021-10-18
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.7;

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

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

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

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

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @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);
}

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
  // Empty internal constructor, to prevent people from mistakenly deploying
  // an instance of this contract, which should be used via inheritance.
  constructor ()  { }

  function _msgSender() internal view returns (address payable) {
    return payable (msg.sender);
  }

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

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
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) {
    // Solidity only automatically asserts when dividing by 0
    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;
  }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
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 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 onlyOwner {
    _transferOwnership(newOwner);
  }

  /**
   * @dev Transfers ownership of the contract to a new account (`newOwner`).
   */
  function _transferOwnership(address newOwner) internal {
    require(newOwner != address(0), "Ownable: new owner is the zero address");
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
}
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash =
            0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) =
            target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}
contract WYVERNSBREATH is Context, IERC20, Ownable {
  using Address for address;
  using SafeMath for uint256;

  mapping (uint => uint) public lastUpdate;
  mapping (address => uint256) private _balances;
  mapping (address => mapping (address => uint256)) private _allowances;
  
  uint256 private _totalSupply;
  uint8 public _decimals;
  string public _symbol;
  string public _name;
  IERC721 private nft;
  uint public START;

  constructor()  {
    _name = "Wyverns Breath";
    _symbol = "$BREATH";
    _decimals = 18;
    _totalSupply = 10000000 * 10**18;
    _balances[msg.sender] = _totalSupply;
     nft=IERC721(0x01fE2358CC2CA3379cb5eD11442e85881997F22C);
     START=block.timestamp;

    emit Transfer(address(0), msg.sender, _totalSupply);
  }

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external override view returns (address) {
    return owner();
  }

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external override view returns (uint8) {
    return _decimals;
  }

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external override view returns (string memory) {
    return _symbol;
  }

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

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

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

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

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

  /**
   * @dev See {BEP20-approve}.
   *
   * Requirements:
   *
   * - `spender` cannot be the zero address.
   */
  function approve(address spender, uint256 amount) external override returns (bool) {
    _approve(_msgSender(), spender, amount);
    return true;
  }

  /**
   * @dev See {BEP20-transferFrom}.
   *
   * Emits an {Approval} event indicating the updated allowance. This is not
   * required by the EIP. See the note at the beginning of {BEP20};
   *
   * 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) external override returns (bool) {
    _transfer(sender, recipient, amount);
    _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: 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 {BEP20-approve}.
   *
   * Emits an {Approval} event indicating the updated allowance.
   *
   * Requirements:
   *
   * - `spender` cannot be the zero address.
   */
  function increaseAllowance(address spender, uint256 addedValue) public 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 {BEP20-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 returns (bool) {
    _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero"));
    return true;
  }

  /**
   * @dev Creates `amount` tokens and assigns them to `msg.sender`, increasing
   * the total supply.
   *
   * Requirements
   *
   * - `msg.sender` must be the token owner
   */

  /**
   * @dev Burn `amount` tokens and decreasing the total supply.
   */
  function burn(uint256 amount) public returns (bool) {
    _burn(_msgSender(), amount);
    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 {
    require(sender != address(0), "BEP20: transfer from the zero address");
    require(recipient != address(0), "BEP20: transfer to the zero address");

    _balances[sender] = _balances[sender].sub(amount, "BEP20: 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
   *
   * - `to` cannot be the zero address.
   */
  function _mint(address account, uint256 amount) internal {
    require(account != address(0), "BEP20: mint to the zero address");

    _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 {
    require(account != address(0), "BEP20: burn from the zero address");

    _balances[account] = _balances[account].sub(amount, "BEP20: 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 is internal function is equivalent to `approve`, and can be used to
   * e.g. set aumatic 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 {
    require(owner != address(0), "BEP20: approve fromm the zero address");
    require(spender != address(0), "BEP20: approvee to the zero address");

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

  /**
   * @dev Destroys `amount` tokens from `account`.`amount` is then deducted
   * from the caller's allowance.
   *
   * See {_burn} and {_approve}.
   */
  function _burnFrom(address account, uint256 amount) internal {
    _burn(account, amount);
    _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "BEP20: burn amount exceeds allowance"));
  }
  function claimToken(uint tokenid) public
    {
        require(nft.ownerOf(tokenid) == msg.sender, "Caller not the owner");
        uint today_count = block.timestamp / (24*60*60); 
        uint amount = uint(getPendingReward(tokenid, today_count));
        lastUpdate[tokenid] = today_count;
        _transfer(owner(), msg.sender, amount);

    }

    function getPendingReward(uint tokenId, uint todayCount) public view returns (int)
    {
        if (lastUpdate[tokenId] == 0)
        {
            return 5 * 10 ** 18;
        }
        else
        {
            require(todayCount - lastUpdate[tokenId] >= 1, "user claim token , come after 24 hours");
            int count = int(todayCount - lastUpdate[tokenId]);
            
            return count * (5 * 10 ** 18);
        }
    }
}

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":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"START","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenid","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"todayCount","type":"uint256"}],"name":"getPendingReward","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506000620000246200029e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600e81526020017f57797665726e7320427265617468000000000000000000000000000000000000815250600790805190602001906200010f929190620002a6565b506040518060400160405280600781526020017f2442524541544800000000000000000000000000000000000000000000000000815250600690805190602001906200015d929190620002a6565b506012600560006101000a81548160ff021916908360ff1602179055506a084595161401484a000000600481905550600454600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507301fe2358cc2ca3379cb5ed11442e85881997f22c600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426009819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000290919062000367565b60405180910390a3620003f3565b600033905090565b828054620002b4906200038e565b90600052602060002090601f016020900481019282620002d8576000855562000324565b82601f10620002f357805160ff191683800117855562000324565b8280016001018555821562000324579182015b828111156200032357825182559160200191906001019062000306565b5b50905062000333919062000337565b5090565b5b808211156200035257600081600090555060010162000338565b5090565b620003618162000384565b82525050565b60006020820190506200037e600083018462000356565b92915050565b6000819050919050565b60006002820490506001821680620003a757607f821691505b60208210811415620003be57620003bd620003c4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6123ea80620004036000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063893d20e8116100c3578063b09f12661161007c578063b09f1266146103ca578063b64fe5c3146103e8578063ba9a061a14610418578063d28d885214610436578063dd62ed3e14610454578063f2fde38b146104845761014d565b8063893d20e8146102f45780638da5cb5b1461031257806395d89b4114610330578063a457c2d71461034e578063a9059cbb1461037e578063a9e7c2e5146103ae5761014d565b8063313ce56711610115578063313ce5671461021e57806332424aa31461023c578063395093511461025a57806342966c681461028a57806370a08231146102ba578063715018a6146102ea5761014d565b806306fdde0314610152578063095ea7b3146101705780630bc5dec4146101a057806318160ddd146101d057806323b872dd146101ee575b600080fd5b61015a6104a0565b6040516101679190611b60565b60405180910390f35b61018a60048036038101906101859190611880565b610532565b6040516101979190611b2a565b60405180910390f35b6101ba60048036038101906101b591906118c0565b610550565b6040516101c79190611cc2565b60405180910390f35b6101d8610568565b6040516101e59190611cc2565b60405180910390f35b6102086004803603810190610203919061182d565b610572565b6040516102159190611b2a565b60405180910390f35b61022661064b565b6040516102339190611cdd565b60405180910390f35b610244610662565b6040516102519190611cdd565b60405180910390f35b610274600480360381019061026f9190611880565b610675565b6040516102819190611b2a565b60405180910390f35b6102a4600480360381019061029f91906118c0565b610728565b6040516102b19190611b2a565b60405180910390f35b6102d460048036038101906102cf9190611793565b610744565b6040516102e19190611cc2565b60405180910390f35b6102f261078d565b005b6102fc6108e0565b6040516103099190611b0f565b60405180910390f35b61031a6108ef565b6040516103279190611b0f565b60405180910390f35b610338610918565b6040516103459190611b60565b60405180910390f35b61036860048036038101906103639190611880565b6109aa565b6040516103759190611b2a565b60405180910390f35b61039860048036038101906103939190611880565b610a77565b6040516103a59190611b2a565b60405180910390f35b6103c860048036038101906103c391906118c0565b610a95565b005b6103d2610bfd565b6040516103df9190611b60565b60405180910390f35b61040260048036038101906103fd91906118ed565b610c8b565b60405161040f9190611b45565b60405180910390f35b610420610d5a565b60405161042d9190611cc2565b60405180910390f35b61043e610d60565b60405161044b9190611b60565b60405180910390f35b61046e600480360381019061046991906117ed565b610dee565b60405161047b9190611cc2565b60405180910390f35b61049e60048036038101906104999190611793565b610e75565b005b6060600780546104af90611f78565b80601f01602080910402602001604051908101604052809291908181526020018280546104db90611f78565b80156105285780601f106104fd57610100808354040283529160200191610528565b820191906000526020600020905b81548152906001019060200180831161050b57829003601f168201915b5050505050905090565b600061054661053f610f16565b8484610f1e565b6001905092915050565b60016020528060005260406000206000915090505481565b6000600454905090565b600061057f8484846110e9565b6106408461058b610f16565b61063b8560405180606001604052806028815260200161232060289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f1610f16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113779092919063ffffffff16565b610f1e565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600560009054906101000a900460ff1681565b600061071e610682610f16565b846107198560036000610693610f16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113db90919063ffffffff16565b610f1e565b6001905092915050565b600061073b610735610f16565b83611439565b60019050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610795610f16565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990611c22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006108ea6108ef565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461092790611f78565b80601f016020809104026020016040519081016040528092919081815260200182805461095390611f78565b80156109a05780601f10610975576101008083540402835291602001916109a0565b820191906000526020600020905b81548152906001019060200180831161098357829003601f168201915b5050505050905090565b6000610a6d6109b7610f16565b84610a688560405180606001604052806025815260200161236e60259139600360006109e1610f16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113779092919063ffffffff16565b610f1e565b6001905092915050565b6000610a8b610a84610f16565b84846110e9565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610b079190611cc2565b60206040518083038186803b158015610b1f57600080fd5b505afa158015610b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5791906117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba490611ba2565b60405180910390fd5b60006201518042610bbe9190611d6a565b90506000610bcc8383610c8b565b9050816001600085815260200190815260200160002081905550610bf8610bf16108ef565b33836110e9565b505050565b60068054610c0a90611f78565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3690611f78565b8015610c835780601f10610c5857610100808354040283529160200191610c83565b820191906000526020600020905b815481529060010190602001808311610c6657829003601f168201915b505050505081565b60008060016000858152602001908152602001600020541415610cb857674563918244f400009050610d54565b60018060008581526020019081526020016000205483610cd89190611eb2565b1015610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090611ca2565b60405180910390fd5b6000600160008581526020019081526020016000205483610d3a9190611eb2565b9050674563918244f4000081610d509190611d9b565b9150505b92915050565b60095481565b60078054610d6d90611f78565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9990611f78565b8015610de65780601f10610dbb57610100808354040283529160200191610de6565b820191906000526020600020905b815481529060010190602001808311610dc957829003601f168201915b505050505081565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e7d610f16565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0190611c22565b60405180910390fd5b610f13816115dd565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590611c02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff590611c42565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110dc9190611cc2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115090611b82565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c090611c62565b60405180910390fd5b6112358160405180606001604052806026815260200161234860269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113779092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112ca81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113db90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161136a9190611cc2565b60405180910390a3505050565b60008383111582906113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b69190611b60565b60405180910390fd5b50600083856113ce9190611eb2565b9050809150509392505050565b60008082846113ea9190611d14565b90508381101561142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690611be2565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a090611c82565b60405180910390fd5b6115158160405180606001604052806022815260200161239360229139600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113779092919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061156d8160045461170a90919063ffffffff16565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115d19190611cc2565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490611bc2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061174c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611377565b905092915050565b600081359050611763816122f1565b92915050565b600081519050611778816122f1565b92915050565b60008135905061178d81612308565b92915050565b6000602082840312156117a9576117a8612037565b5b60006117b784828501611754565b91505092915050565b6000602082840312156117d6576117d5612037565b5b60006117e484828501611769565b91505092915050565b6000806040838503121561180457611803612037565b5b600061181285828601611754565b925050602061182385828601611754565b9150509250929050565b60008060006060848603121561184657611845612037565b5b600061185486828701611754565b935050602061186586828701611754565b92505060406118768682870161177e565b9150509250925092565b6000806040838503121561189757611896612037565b5b60006118a585828601611754565b92505060206118b68582860161177e565b9150509250929050565b6000602082840312156118d6576118d5612037565b5b60006118e48482850161177e565b91505092915050565b6000806040838503121561190457611903612037565b5b60006119128582860161177e565b92505060206119238582860161177e565b9150509250929050565b61193681611ee6565b82525050565b61194581611ef8565b82525050565b61195481611f04565b82525050565b600061196582611cf8565b61196f8185611d03565b935061197f818560208601611f45565b6119888161203c565b840191505092915050565b60006119a0602583611d03565b91506119ab8261204d565b604082019050919050565b60006119c3601483611d03565b91506119ce8261209c565b602082019050919050565b60006119e6602683611d03565b91506119f1826120c5565b604082019050919050565b6000611a09601b83611d03565b9150611a1482612114565b602082019050919050565b6000611a2c602583611d03565b9150611a378261213d565b604082019050919050565b6000611a4f602083611d03565b9150611a5a8261218c565b602082019050919050565b6000611a72602383611d03565b9150611a7d826121b5565b604082019050919050565b6000611a95602383611d03565b9150611aa082612204565b604082019050919050565b6000611ab8602183611d03565b9150611ac382612253565b604082019050919050565b6000611adb602683611d03565b9150611ae6826122a2565b604082019050919050565b611afa81611f2e565b82525050565b611b0981611f38565b82525050565b6000602082019050611b24600083018461192d565b92915050565b6000602082019050611b3f600083018461193c565b92915050565b6000602082019050611b5a600083018461194b565b92915050565b60006020820190508181036000830152611b7a818461195a565b905092915050565b60006020820190508181036000830152611b9b81611993565b9050919050565b60006020820190508181036000830152611bbb816119b6565b9050919050565b60006020820190508181036000830152611bdb816119d9565b9050919050565b60006020820190508181036000830152611bfb816119fc565b9050919050565b60006020820190508181036000830152611c1b81611a1f565b9050919050565b60006020820190508181036000830152611c3b81611a42565b9050919050565b60006020820190508181036000830152611c5b81611a65565b9050919050565b60006020820190508181036000830152611c7b81611a88565b9050919050565b60006020820190508181036000830152611c9b81611aab565b9050919050565b60006020820190508181036000830152611cbb81611ace565b9050919050565b6000602082019050611cd76000830184611af1565b92915050565b6000602082019050611cf26000830184611b00565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611d1f82611f2e565b9150611d2a83611f2e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d5f57611d5e611faa565b5b828201905092915050565b6000611d7582611f2e565b9150611d8083611f2e565b925082611d9057611d8f611fd9565b5b828204905092915050565b6000611da682611f04565b9150611db183611f04565b9250827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482116000841360008413161615611df057611def611faa565b5b817f80000000000000000000000000000000000000000000000000000000000000000583126000841260008413161615611e2d57611e2c611faa565b5b827f80000000000000000000000000000000000000000000000000000000000000000582126000841360008412161615611e6a57611e69611faa565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0582126000841260008412161615611ea757611ea6611faa565b5b828202905092915050565b6000611ebd82611f2e565b9150611ec883611f2e565b925082821015611edb57611eda611faa565b5b828203905092915050565b6000611ef182611f0e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611f63578082015181840152602081019050611f48565b83811115611f72576000848401525b50505050565b60006002820490506001821680611f9057607f821691505b60208210811415611fa457611fa3612008565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f43616c6c6572206e6f7420746865206f776e6572000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f42455032303a20617070726f76652066726f6d6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f42455032303a20617070726f76656520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f7573657220636c61696d20746f6b656e202c20636f6d6520616674657220323460008201527f20686f7572730000000000000000000000000000000000000000000000000000602082015250565b6122fa81611ee6565b811461230557600080fd5b50565b61231181611f2e565b811461231c57600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f42455032303a206275726e20616d6f756e7420657863656564732062616c616e6365a26469706673582212200c14759c0c5c8753a5e12f2c9309900bb1bedb2982f62bac526f7627bcd64b6364736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063893d20e8116100c3578063b09f12661161007c578063b09f1266146103ca578063b64fe5c3146103e8578063ba9a061a14610418578063d28d885214610436578063dd62ed3e14610454578063f2fde38b146104845761014d565b8063893d20e8146102f45780638da5cb5b1461031257806395d89b4114610330578063a457c2d71461034e578063a9059cbb1461037e578063a9e7c2e5146103ae5761014d565b8063313ce56711610115578063313ce5671461021e57806332424aa31461023c578063395093511461025a57806342966c681461028a57806370a08231146102ba578063715018a6146102ea5761014d565b806306fdde0314610152578063095ea7b3146101705780630bc5dec4146101a057806318160ddd146101d057806323b872dd146101ee575b600080fd5b61015a6104a0565b6040516101679190611b60565b60405180910390f35b61018a60048036038101906101859190611880565b610532565b6040516101979190611b2a565b60405180910390f35b6101ba60048036038101906101b591906118c0565b610550565b6040516101c79190611cc2565b60405180910390f35b6101d8610568565b6040516101e59190611cc2565b60405180910390f35b6102086004803603810190610203919061182d565b610572565b6040516102159190611b2a565b60405180910390f35b61022661064b565b6040516102339190611cdd565b60405180910390f35b610244610662565b6040516102519190611cdd565b60405180910390f35b610274600480360381019061026f9190611880565b610675565b6040516102819190611b2a565b60405180910390f35b6102a4600480360381019061029f91906118c0565b610728565b6040516102b19190611b2a565b60405180910390f35b6102d460048036038101906102cf9190611793565b610744565b6040516102e19190611cc2565b60405180910390f35b6102f261078d565b005b6102fc6108e0565b6040516103099190611b0f565b60405180910390f35b61031a6108ef565b6040516103279190611b0f565b60405180910390f35b610338610918565b6040516103459190611b60565b60405180910390f35b61036860048036038101906103639190611880565b6109aa565b6040516103759190611b2a565b60405180910390f35b61039860048036038101906103939190611880565b610a77565b6040516103a59190611b2a565b60405180910390f35b6103c860048036038101906103c391906118c0565b610a95565b005b6103d2610bfd565b6040516103df9190611b60565b60405180910390f35b61040260048036038101906103fd91906118ed565b610c8b565b60405161040f9190611b45565b60405180910390f35b610420610d5a565b60405161042d9190611cc2565b60405180910390f35b61043e610d60565b60405161044b9190611b60565b60405180910390f35b61046e600480360381019061046991906117ed565b610dee565b60405161047b9190611cc2565b60405180910390f35b61049e60048036038101906104999190611793565b610e75565b005b6060600780546104af90611f78565b80601f01602080910402602001604051908101604052809291908181526020018280546104db90611f78565b80156105285780601f106104fd57610100808354040283529160200191610528565b820191906000526020600020905b81548152906001019060200180831161050b57829003601f168201915b5050505050905090565b600061054661053f610f16565b8484610f1e565b6001905092915050565b60016020528060005260406000206000915090505481565b6000600454905090565b600061057f8484846110e9565b6106408461058b610f16565b61063b8560405180606001604052806028815260200161232060289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f1610f16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113779092919063ffffffff16565b610f1e565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600560009054906101000a900460ff1681565b600061071e610682610f16565b846107198560036000610693610f16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113db90919063ffffffff16565b610f1e565b6001905092915050565b600061073b610735610f16565b83611439565b60019050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610795610f16565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990611c22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006108ea6108ef565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461092790611f78565b80601f016020809104026020016040519081016040528092919081815260200182805461095390611f78565b80156109a05780601f10610975576101008083540402835291602001916109a0565b820191906000526020600020905b81548152906001019060200180831161098357829003601f168201915b5050505050905090565b6000610a6d6109b7610f16565b84610a688560405180606001604052806025815260200161236e60259139600360006109e1610f16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113779092919063ffffffff16565b610f1e565b6001905092915050565b6000610a8b610a84610f16565b84846110e9565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610b079190611cc2565b60206040518083038186803b158015610b1f57600080fd5b505afa158015610b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5791906117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba490611ba2565b60405180910390fd5b60006201518042610bbe9190611d6a565b90506000610bcc8383610c8b565b9050816001600085815260200190815260200160002081905550610bf8610bf16108ef565b33836110e9565b505050565b60068054610c0a90611f78565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3690611f78565b8015610c835780601f10610c5857610100808354040283529160200191610c83565b820191906000526020600020905b815481529060010190602001808311610c6657829003601f168201915b505050505081565b60008060016000858152602001908152602001600020541415610cb857674563918244f400009050610d54565b60018060008581526020019081526020016000205483610cd89190611eb2565b1015610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090611ca2565b60405180910390fd5b6000600160008581526020019081526020016000205483610d3a9190611eb2565b9050674563918244f4000081610d509190611d9b565b9150505b92915050565b60095481565b60078054610d6d90611f78565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9990611f78565b8015610de65780601f10610dbb57610100808354040283529160200191610de6565b820191906000526020600020905b815481529060010190602001808311610dc957829003601f168201915b505050505081565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e7d610f16565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0190611c22565b60405180910390fd5b610f13816115dd565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590611c02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff590611c42565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110dc9190611cc2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115090611b82565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c090611c62565b60405180910390fd5b6112358160405180606001604052806026815260200161234860269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113779092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112ca81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113db90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161136a9190611cc2565b60405180910390a3505050565b60008383111582906113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b69190611b60565b60405180910390fd5b50600083856113ce9190611eb2565b9050809150509392505050565b60008082846113ea9190611d14565b90508381101561142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690611be2565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a090611c82565b60405180910390fd5b6115158160405180606001604052806022815260200161239360229139600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113779092919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061156d8160045461170a90919063ffffffff16565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115d19190611cc2565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164490611bc2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061174c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611377565b905092915050565b600081359050611763816122f1565b92915050565b600081519050611778816122f1565b92915050565b60008135905061178d81612308565b92915050565b6000602082840312156117a9576117a8612037565b5b60006117b784828501611754565b91505092915050565b6000602082840312156117d6576117d5612037565b5b60006117e484828501611769565b91505092915050565b6000806040838503121561180457611803612037565b5b600061181285828601611754565b925050602061182385828601611754565b9150509250929050565b60008060006060848603121561184657611845612037565b5b600061185486828701611754565b935050602061186586828701611754565b92505060406118768682870161177e565b9150509250925092565b6000806040838503121561189757611896612037565b5b60006118a585828601611754565b92505060206118b68582860161177e565b9150509250929050565b6000602082840312156118d6576118d5612037565b5b60006118e48482850161177e565b91505092915050565b6000806040838503121561190457611903612037565b5b60006119128582860161177e565b92505060206119238582860161177e565b9150509250929050565b61193681611ee6565b82525050565b61194581611ef8565b82525050565b61195481611f04565b82525050565b600061196582611cf8565b61196f8185611d03565b935061197f818560208601611f45565b6119888161203c565b840191505092915050565b60006119a0602583611d03565b91506119ab8261204d565b604082019050919050565b60006119c3601483611d03565b91506119ce8261209c565b602082019050919050565b60006119e6602683611d03565b91506119f1826120c5565b604082019050919050565b6000611a09601b83611d03565b9150611a1482612114565b602082019050919050565b6000611a2c602583611d03565b9150611a378261213d565b604082019050919050565b6000611a4f602083611d03565b9150611a5a8261218c565b602082019050919050565b6000611a72602383611d03565b9150611a7d826121b5565b604082019050919050565b6000611a95602383611d03565b9150611aa082612204565b604082019050919050565b6000611ab8602183611d03565b9150611ac382612253565b604082019050919050565b6000611adb602683611d03565b9150611ae6826122a2565b604082019050919050565b611afa81611f2e565b82525050565b611b0981611f38565b82525050565b6000602082019050611b24600083018461192d565b92915050565b6000602082019050611b3f600083018461193c565b92915050565b6000602082019050611b5a600083018461194b565b92915050565b60006020820190508181036000830152611b7a818461195a565b905092915050565b60006020820190508181036000830152611b9b81611993565b9050919050565b60006020820190508181036000830152611bbb816119b6565b9050919050565b60006020820190508181036000830152611bdb816119d9565b9050919050565b60006020820190508181036000830152611bfb816119fc565b9050919050565b60006020820190508181036000830152611c1b81611a1f565b9050919050565b60006020820190508181036000830152611c3b81611a42565b9050919050565b60006020820190508181036000830152611c5b81611a65565b9050919050565b60006020820190508181036000830152611c7b81611a88565b9050919050565b60006020820190508181036000830152611c9b81611aab565b9050919050565b60006020820190508181036000830152611cbb81611ace565b9050919050565b6000602082019050611cd76000830184611af1565b92915050565b6000602082019050611cf26000830184611b00565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611d1f82611f2e565b9150611d2a83611f2e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d5f57611d5e611faa565b5b828201905092915050565b6000611d7582611f2e565b9150611d8083611f2e565b925082611d9057611d8f611fd9565b5b828204905092915050565b6000611da682611f04565b9150611db183611f04565b9250827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482116000841360008413161615611df057611def611faa565b5b817f80000000000000000000000000000000000000000000000000000000000000000583126000841260008413161615611e2d57611e2c611faa565b5b827f80000000000000000000000000000000000000000000000000000000000000000582126000841360008412161615611e6a57611e69611faa565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0582126000841260008412161615611ea757611ea6611faa565b5b828202905092915050565b6000611ebd82611f2e565b9150611ec883611f2e565b925082821015611edb57611eda611faa565b5b828203905092915050565b6000611ef182611f0e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611f63578082015181840152602081019050611f48565b83811115611f72576000848401525b50505050565b60006002820490506001821680611f9057607f821691505b60208210811415611fa457611fa3612008565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f43616c6c6572206e6f7420746865206f776e6572000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f42455032303a20617070726f76652066726f6d6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f42455032303a20617070726f76656520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f7573657220636c61696d20746f6b656e202c20636f6d6520616674657220323460008201527f20686f7572730000000000000000000000000000000000000000000000000000602082015250565b6122fa81611ee6565b811461230557600080fd5b50565b61231181611f2e565b811461231c57600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f42455032303a206275726e20616d6f756e7420657863656564732062616c616e6365a26469706673582212200c14759c0c5c8753a5e12f2c9309900bb1bedb2982f62bac526f7627bcd64b6364736f6c63430008070033

Deployed Bytecode Sourcemap

23082:9005:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24363:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25446:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23201:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24507:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26044:301;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24073:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23408:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26727:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27931:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24655:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10777:130;;;:::i;:::-;;23926:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10175:73;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24218:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27399:251;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24964:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31269:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23435:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31632:452;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23509:17;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23461:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25177:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11052:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24363:88;24411:13;24440:5;24433:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24363:88;:::o;25446:153::-;25523:4;25536:39;25545:12;:10;:12::i;:::-;25559:7;25568:6;25536:8;:39::i;:::-;25589:4;25582:11;;25446:153;;;;:::o;23201:40::-;;;;;;;;;;;;;;;;;:::o;24507:94::-;24560:7;24583:12;;24576:19;;24507:94;:::o;26044:301::-;26144:4;26157:36;26167:6;26175:9;26186:6;26157:9;:36::i;:::-;26200:121;26209:6;26217:12;:10;:12::i;:::-;26231:89;26269:6;26231:89;;;;;;;;;;;;;;;;;:11;:19;26243:6;26231:19;;;;;;;;;;;;;;;:33;26251:12;:10;:12::i;:::-;26231:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;26200:8;:121::i;:::-;26335:4;26328:11;;26044:301;;;;;:::o;24073:88::-;24125:5;24146:9;;;;;;;;;;;24139:16;;24073:88;:::o;23408:22::-;;;;;;;;;;;;;:::o;26727:200::-;26807:4;26820:83;26829:12;:10;:12::i;:::-;26843:7;26852:50;26891:10;26852:11;:25;26864:12;:10;:12::i;:::-;26852:25;;;;;;;;;;;;;;;:34;26878:7;26852:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;26820:8;:83::i;:::-;26917:4;26910:11;;26727:200;;;;:::o;27931:110::-;27977:4;27990:27;27996:12;:10;:12::i;:::-;28010:6;27990:5;:27::i;:::-;28031:4;28024:11;;27931:110;;;:::o;24655:115::-;24723:7;24746:9;:18;24756:7;24746:18;;;;;;;;;;;;;;;;24739:25;;24655:115;;;:::o;10777:130::-;10379:12;:10;:12::i;:::-;10369:22;;:6;;;;;;;;;;:22;;;10361:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10872:1:::1;10835:40;;10856:6;::::0;::::1;;;;;;;;10835:40;;;;;;;;;;;;10899:1;10882:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10777:130::o:0;23926:88::-;23978:7;24001;:5;:7::i;:::-;23994:14;;23926:88;:::o;10175:73::-;10213:7;10236:6;;;;;;;;;;;10229:13;;10175:73;:::o;24218:92::-;24268:13;24297:7;24290:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24218:92;:::o;27399:251::-;27484:4;27497:129;27506:12;:10;:12::i;:::-;27520:7;27529:96;27568:15;27529:96;;;;;;;;;;;;;;;;;:11;:25;27541:12;:10;:12::i;:::-;27529:25;;;;;;;;;;;;;;;:34;27555:7;27529:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;27497:8;:129::i;:::-;27640:4;27633:11;;27399:251;;;;:::o;24964:159::-;25044:4;25057:42;25067:12;:10;:12::i;:::-;25081:9;25092:6;25057:9;:42::i;:::-;25113:4;25106:11;;24964:159;;;;:::o;31269:355::-;31358:10;31334:34;;:3;;;;;;;;;;;:11;;;31346:7;31334:20;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;31326:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31404:16;31442:8;31423:15;:28;;;;:::i;:::-;31404:47;;31463:11;31482:38;31499:7;31508:11;31482:16;:38::i;:::-;31463:58;;31554:11;31532:10;:19;31543:7;31532:19;;;;;;;;;;;:33;;;;31576:38;31586:7;:5;:7::i;:::-;31595:10;31607:6;31576:9;:38::i;:::-;31315:309;;31269:355;:::o;23435:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31632:452::-;31710:3;31758:1;31735:10;:19;31746:7;31735:19;;;;;;;;;;;;:24;31731:346;;;31792:12;31785:19;;;;31731:346;31899:1;31876:10;:19;31887:7;31876:19;;;;;;;;;;;;31863:10;:32;;;;:::i;:::-;:37;;31855:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;31958:9;31987:10;:19;31998:7;31987:19;;;;;;;;;;;;31974:10;:32;;;;:::i;:::-;31958:49;;32052:12;32043:5;:22;;;;:::i;:::-;32036:29;;;31632:452;;;;;:::o;23509:17::-;;;;:::o;23461:19::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25177:139::-;25260:7;25283:11;:18;25295:5;25283:18;;;;;;;;;;;;;;;:27;25302:7;25283:27;;;;;;;;;;;;;;;;25276:34;;25177:139;;;;:::o;11052:103::-;10379:12;:10;:12::i;:::-;10369:22;;:6;;;;;;;;;;:22;;;10361:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11121:28:::1;11140:8;11121:18;:28::i;:::-;11052:103:::0;:::o;3870:102::-;3915:15;3955:10;3939:27;;3870:102;:::o;30549:322::-;30656:1;30639:19;;:5;:19;;;;30631:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;30734:1;30715:21;;:7;:21;;;;30707:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;30815:6;30785:11;:18;30797:5;30785:18;;;;;;;;;;;;;;;:27;30804:7;30785:27;;;;;;;;;;;;;;;:36;;;;30849:7;30833:32;;30842:5;30833:32;;;30858:6;30833:32;;;;;;:::i;:::-;;;;;;;;30549:322;;;:::o;28501:449::-;28613:1;28595:20;;:6;:20;;;;28587:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;28693:1;28672:23;;:9;:23;;;;28664:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28764;28786:6;28764:71;;;;;;;;;;;;;;;;;:9;:17;28774:6;28764:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;28744:9;:17;28754:6;28744:17;;;;;;;;;;;;;;;:91;;;;28865:32;28890:6;28865:9;:20;28875:9;28865:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;28842:9;:20;28852:9;28842:20;;;;;;;;;;;;;;;:55;;;;28926:9;28909:35;;28918:6;28909:35;;;28937:6;28909:35;;;;;;:::i;:::-;;;;;;;;28501:449;;;:::o;5839:178::-;5925:7;5954:1;5949;:6;;5957:12;5941:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5977:9;5993:1;5989;:5;;;;:::i;:::-;5977:17;;6010:1;6003:8;;;5839:178;;;;;:::o;5012:167::-;5070:7;5086:9;5102:1;5098;:5;;;;:::i;:::-;5086:17;;5123:1;5118;:6;;5110:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5172:1;5165:8;;;5012:167;;;;:::o;29809:330::-;29900:1;29881:21;;:7;:21;;;;29873:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29970:68;29993:6;29970:68;;;;;;;;;;;;;;;;;:9;:18;29980:7;29970:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;29949:9;:18;29959:7;29949:18;;;;;;;;;;;;;;;:89;;;;30060:24;30077:6;30060:12;;:16;;:24;;;;:::i;:::-;30045:12;:39;;;;30122:1;30096:37;;30105:7;30096:37;;;30126:6;30096:37;;;;;;:::i;:::-;;;;;;;;29809:330;;:::o;11253:215::-;11343:1;11323:22;;:8;:22;;;;11315:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11429:8;11400:38;;11421:6;;;;;;;;;;11400:38;;;;;;;;;;;;11454:8;11445:6;;:17;;;;;;;;;;;;;;;;;;11253:215;:::o;5434:130::-;5492:7;5515:43;5519:1;5522;5515:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5508:50;;5434:130;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:139::-;347:5;385:6;372:20;363:29;;401:33;428:5;401:33;:::i;:::-;301:139;;;;:::o;446:329::-;505:6;554:2;542:9;533:7;529:23;525:32;522:119;;;560:79;;:::i;:::-;522:119;680:1;705:53;750:7;741:6;730:9;726:22;705:53;:::i;:::-;695:63;;651:117;446:329;;;;:::o;781:351::-;851:6;900:2;888:9;879:7;875:23;871:32;868:119;;;906:79;;:::i;:::-;868:119;1026:1;1051:64;1107:7;1098:6;1087:9;1083:22;1051:64;:::i;:::-;1041:74;;997:128;781:351;;;;:::o;1138:474::-;1206:6;1214;1263:2;1251:9;1242:7;1238:23;1234:32;1231:119;;;1269:79;;:::i;:::-;1231:119;1389:1;1414:53;1459:7;1450:6;1439:9;1435:22;1414:53;:::i;:::-;1404:63;;1360:117;1516:2;1542:53;1587:7;1578:6;1567:9;1563:22;1542:53;:::i;:::-;1532:63;;1487:118;1138:474;;;;;:::o;1618:619::-;1695:6;1703;1711;1760:2;1748:9;1739:7;1735:23;1731:32;1728:119;;;1766:79;;:::i;:::-;1728:119;1886:1;1911:53;1956:7;1947:6;1936:9;1932:22;1911:53;:::i;:::-;1901:63;;1857:117;2013:2;2039:53;2084:7;2075:6;2064:9;2060:22;2039:53;:::i;:::-;2029:63;;1984:118;2141:2;2167:53;2212:7;2203:6;2192:9;2188:22;2167:53;:::i;:::-;2157:63;;2112:118;1618:619;;;;;:::o;2243:474::-;2311:6;2319;2368:2;2356:9;2347:7;2343:23;2339:32;2336:119;;;2374:79;;:::i;:::-;2336:119;2494:1;2519:53;2564:7;2555:6;2544:9;2540:22;2519:53;:::i;:::-;2509:63;;2465:117;2621:2;2647:53;2692:7;2683:6;2672:9;2668:22;2647:53;:::i;:::-;2637:63;;2592:118;2243:474;;;;;:::o;2723:329::-;2782:6;2831:2;2819:9;2810:7;2806:23;2802:32;2799:119;;;2837:79;;:::i;:::-;2799:119;2957:1;2982:53;3027:7;3018:6;3007:9;3003:22;2982:53;:::i;:::-;2972:63;;2928:117;2723:329;;;;:::o;3058:474::-;3126:6;3134;3183:2;3171:9;3162:7;3158:23;3154:32;3151:119;;;3189:79;;:::i;:::-;3151:119;3309:1;3334:53;3379:7;3370:6;3359:9;3355:22;3334:53;:::i;:::-;3324:63;;3280:117;3436:2;3462:53;3507:7;3498:6;3487:9;3483:22;3462:53;:::i;:::-;3452:63;;3407:118;3058:474;;;;;:::o;3538:118::-;3625:24;3643:5;3625:24;:::i;:::-;3620:3;3613:37;3538:118;;:::o;3662:109::-;3743:21;3758:5;3743:21;:::i;:::-;3738:3;3731:34;3662:109;;:::o;3777:115::-;3862:23;3879:5;3862:23;:::i;:::-;3857:3;3850:36;3777:115;;:::o;3898:364::-;3986:3;4014:39;4047:5;4014:39;:::i;:::-;4069:71;4133:6;4128:3;4069:71;:::i;:::-;4062:78;;4149:52;4194:6;4189:3;4182:4;4175:5;4171:16;4149:52;:::i;:::-;4226:29;4248:6;4226:29;:::i;:::-;4221:3;4217:39;4210:46;;3990:272;3898:364;;;;:::o;4268:366::-;4410:3;4431:67;4495:2;4490:3;4431:67;:::i;:::-;4424:74;;4507:93;4596:3;4507:93;:::i;:::-;4625:2;4620:3;4616:12;4609:19;;4268:366;;;:::o;4640:::-;4782:3;4803:67;4867:2;4862:3;4803:67;:::i;:::-;4796:74;;4879:93;4968:3;4879:93;:::i;:::-;4997:2;4992:3;4988:12;4981:19;;4640:366;;;:::o;5012:::-;5154:3;5175:67;5239:2;5234:3;5175:67;:::i;:::-;5168:74;;5251:93;5340:3;5251:93;:::i;:::-;5369:2;5364:3;5360:12;5353:19;;5012:366;;;:::o;5384:::-;5526:3;5547:67;5611:2;5606:3;5547:67;:::i;:::-;5540:74;;5623:93;5712:3;5623:93;:::i;:::-;5741:2;5736:3;5732:12;5725:19;;5384:366;;;:::o;5756:::-;5898:3;5919:67;5983:2;5978:3;5919:67;:::i;:::-;5912:74;;5995:93;6084:3;5995:93;:::i;:::-;6113:2;6108:3;6104:12;6097:19;;5756:366;;;:::o;6128:::-;6270:3;6291:67;6355:2;6350:3;6291:67;:::i;:::-;6284:74;;6367:93;6456:3;6367:93;:::i;:::-;6485:2;6480:3;6476:12;6469:19;;6128:366;;;:::o;6500:::-;6642:3;6663:67;6727:2;6722:3;6663:67;:::i;:::-;6656:74;;6739:93;6828:3;6739:93;:::i;:::-;6857:2;6852:3;6848:12;6841:19;;6500:366;;;:::o;6872:::-;7014:3;7035:67;7099:2;7094:3;7035:67;:::i;:::-;7028:74;;7111:93;7200:3;7111:93;:::i;:::-;7229:2;7224:3;7220:12;7213:19;;6872:366;;;:::o;7244:::-;7386:3;7407:67;7471:2;7466:3;7407:67;:::i;:::-;7400:74;;7483:93;7572:3;7483:93;:::i;:::-;7601:2;7596:3;7592:12;7585:19;;7244:366;;;:::o;7616:::-;7758:3;7779:67;7843:2;7838:3;7779:67;:::i;:::-;7772:74;;7855:93;7944:3;7855:93;:::i;:::-;7973:2;7968:3;7964:12;7957:19;;7616:366;;;:::o;7988:118::-;8075:24;8093:5;8075:24;:::i;:::-;8070:3;8063:37;7988:118;;:::o;8112:112::-;8195:22;8211:5;8195:22;:::i;:::-;8190:3;8183:35;8112:112;;:::o;8230:222::-;8323:4;8361:2;8350:9;8346:18;8338:26;;8374:71;8442:1;8431:9;8427:17;8418:6;8374:71;:::i;:::-;8230:222;;;;:::o;8458:210::-;8545:4;8583:2;8572:9;8568:18;8560:26;;8596:65;8658:1;8647:9;8643:17;8634:6;8596:65;:::i;:::-;8458:210;;;;:::o;8674:218::-;8765:4;8803:2;8792:9;8788:18;8780:26;;8816:69;8882:1;8871:9;8867:17;8858:6;8816:69;:::i;:::-;8674:218;;;;:::o;8898:313::-;9011:4;9049:2;9038:9;9034:18;9026:26;;9098:9;9092:4;9088:20;9084:1;9073:9;9069:17;9062:47;9126:78;9199:4;9190:6;9126:78;:::i;:::-;9118:86;;8898:313;;;;:::o;9217:419::-;9383:4;9421:2;9410:9;9406:18;9398:26;;9470:9;9464:4;9460:20;9456:1;9445:9;9441:17;9434:47;9498:131;9624:4;9498:131;:::i;:::-;9490:139;;9217:419;;;:::o;9642:::-;9808:4;9846:2;9835:9;9831:18;9823:26;;9895:9;9889:4;9885:20;9881:1;9870:9;9866:17;9859:47;9923:131;10049:4;9923:131;:::i;:::-;9915:139;;9642:419;;;:::o;10067:::-;10233:4;10271:2;10260:9;10256:18;10248:26;;10320:9;10314:4;10310:20;10306:1;10295:9;10291:17;10284:47;10348:131;10474:4;10348:131;:::i;:::-;10340:139;;10067:419;;;:::o;10492:::-;10658:4;10696:2;10685:9;10681:18;10673:26;;10745:9;10739:4;10735:20;10731:1;10720:9;10716:17;10709:47;10773:131;10899:4;10773:131;:::i;:::-;10765:139;;10492:419;;;:::o;10917:::-;11083:4;11121:2;11110:9;11106:18;11098:26;;11170:9;11164:4;11160:20;11156:1;11145:9;11141:17;11134:47;11198:131;11324:4;11198:131;:::i;:::-;11190:139;;10917:419;;;:::o;11342:::-;11508:4;11546:2;11535:9;11531:18;11523:26;;11595:9;11589:4;11585:20;11581:1;11570:9;11566:17;11559:47;11623:131;11749:4;11623:131;:::i;:::-;11615:139;;11342:419;;;:::o;11767:::-;11933:4;11971:2;11960:9;11956:18;11948:26;;12020:9;12014:4;12010:20;12006:1;11995:9;11991:17;11984:47;12048:131;12174:4;12048:131;:::i;:::-;12040:139;;11767:419;;;:::o;12192:::-;12358:4;12396:2;12385:9;12381:18;12373:26;;12445:9;12439:4;12435:20;12431:1;12420:9;12416:17;12409:47;12473:131;12599:4;12473:131;:::i;:::-;12465:139;;12192:419;;;:::o;12617:::-;12783:4;12821:2;12810:9;12806:18;12798:26;;12870:9;12864:4;12860:20;12856:1;12845:9;12841:17;12834:47;12898:131;13024:4;12898:131;:::i;:::-;12890:139;;12617:419;;;:::o;13042:::-;13208:4;13246:2;13235:9;13231:18;13223:26;;13295:9;13289:4;13285:20;13281:1;13270:9;13266:17;13259:47;13323:131;13449:4;13323:131;:::i;:::-;13315:139;;13042:419;;;:::o;13467:222::-;13560:4;13598:2;13587:9;13583:18;13575:26;;13611:71;13679:1;13668:9;13664:17;13655:6;13611:71;:::i;:::-;13467:222;;;;:::o;13695:214::-;13784:4;13822:2;13811:9;13807:18;13799:26;;13835:67;13899:1;13888:9;13884:17;13875:6;13835:67;:::i;:::-;13695:214;;;;:::o;13996:99::-;14048:6;14082:5;14076:12;14066:22;;13996:99;;;:::o;14101:169::-;14185:11;14219:6;14214:3;14207:19;14259:4;14254:3;14250:14;14235:29;;14101:169;;;;:::o;14276:305::-;14316:3;14335:20;14353:1;14335:20;:::i;:::-;14330:25;;14369:20;14387:1;14369:20;:::i;:::-;14364:25;;14523:1;14455:66;14451:74;14448:1;14445:81;14442:107;;;14529:18;;:::i;:::-;14442:107;14573:1;14570;14566:9;14559:16;;14276:305;;;;:::o;14587:185::-;14627:1;14644:20;14662:1;14644:20;:::i;:::-;14639:25;;14678:20;14696:1;14678:20;:::i;:::-;14673:25;;14717:1;14707:35;;14722:18;;:::i;:::-;14707:35;14764:1;14761;14757:9;14752:14;;14587:185;;;;:::o;14778:991::-;14817:7;14840:19;14857:1;14840:19;:::i;:::-;14835:24;;14873:19;14890:1;14873:19;:::i;:::-;14868:24;;15074:1;15006:66;15002:74;14999:1;14996:81;14991:1;14988;14984:9;14980:1;14977;14973:9;14969:25;14965:113;14962:139;;;15081:18;;:::i;:::-;14962:139;15285:1;15217:66;15212:75;15209:1;15205:83;15200:1;15197;15193:9;15189:1;15186;15182:9;15178:25;15174:115;15171:141;;;15292:18;;:::i;:::-;15171:141;15496:1;15428:66;15423:75;15420:1;15416:83;15411:1;15408;15404:9;15400:1;15397;15393:9;15389:25;15385:115;15382:141;;;15503:18;;:::i;:::-;15382:141;15706:1;15638:66;15633:75;15630:1;15626:83;15621:1;15618;15614:9;15610:1;15607;15603:9;15599:25;15595:115;15592:141;;;15713:18;;:::i;:::-;15592:141;15761:1;15758;15754:9;15743:20;;14778:991;;;;:::o;15775:191::-;15815:4;15835:20;15853:1;15835:20;:::i;:::-;15830:25;;15869:20;15887:1;15869:20;:::i;:::-;15864:25;;15908:1;15905;15902:8;15899:34;;;15913:18;;:::i;:::-;15899:34;15958:1;15955;15951:9;15943:17;;15775:191;;;;:::o;15972:96::-;16009:7;16038:24;16056:5;16038:24;:::i;:::-;16027:35;;15972:96;;;:::o;16074:90::-;16108:7;16151:5;16144:13;16137:21;16126:32;;16074:90;;;:::o;16170:76::-;16206:7;16235:5;16224:16;;16170:76;;;:::o;16252:126::-;16289:7;16329:42;16322:5;16318:54;16307:65;;16252:126;;;:::o;16384:77::-;16421:7;16450:5;16439:16;;16384:77;;;:::o;16467:86::-;16502:7;16542:4;16535:5;16531:16;16520:27;;16467:86;;;:::o;16559:307::-;16627:1;16637:113;16651:6;16648:1;16645:13;16637:113;;;16736:1;16731:3;16727:11;16721:18;16717:1;16712:3;16708:11;16701:39;16673:2;16670:1;16666:10;16661:15;;16637:113;;;16768:6;16765:1;16762:13;16759:101;;;16848:1;16839:6;16834:3;16830:16;16823:27;16759:101;16608:258;16559:307;;;:::o;16872:320::-;16916:6;16953:1;16947:4;16943:12;16933:22;;17000:1;16994:4;16990:12;17021:18;17011:81;;17077:4;17069:6;17065:17;17055:27;;17011:81;17139:2;17131:6;17128:14;17108:18;17105:38;17102:84;;;17158:18;;:::i;:::-;17102:84;16923:269;16872:320;;;:::o;17198:180::-;17246:77;17243:1;17236:88;17343:4;17340:1;17333:15;17367:4;17364:1;17357:15;17384:180;17432:77;17429:1;17422:88;17529:4;17526:1;17519:15;17553:4;17550:1;17543:15;17570:180;17618:77;17615:1;17608:88;17715:4;17712:1;17705:15;17739:4;17736:1;17729:15;17879:117;17988:1;17985;17978:12;18002:102;18043:6;18094:2;18090:7;18085:2;18078:5;18074:14;18070:28;18060:38;;18002:102;;;:::o;18110:224::-;18250:34;18246:1;18238:6;18234:14;18227:58;18319:7;18314:2;18306:6;18302:15;18295:32;18110:224;:::o;18340:170::-;18480:22;18476:1;18468:6;18464:14;18457:46;18340:170;:::o;18516:225::-;18656:34;18652:1;18644:6;18640:14;18633:58;18725:8;18720:2;18712:6;18708:15;18701:33;18516:225;:::o;18747:177::-;18887:29;18883:1;18875:6;18871:14;18864:53;18747:177;:::o;18930:224::-;19070:34;19066:1;19058:6;19054:14;19047:58;19139:7;19134:2;19126:6;19122:15;19115:32;18930:224;:::o;19160:182::-;19300:34;19296:1;19288:6;19284:14;19277:58;19160:182;:::o;19348:222::-;19488:34;19484:1;19476:6;19472:14;19465:58;19557:5;19552:2;19544:6;19540:15;19533:30;19348:222;:::o;19576:::-;19716:34;19712:1;19704:6;19700:14;19693:58;19785:5;19780:2;19772:6;19768:15;19761:30;19576:222;:::o;19804:220::-;19944:34;19940:1;19932:6;19928:14;19921:58;20013:3;20008:2;20000:6;19996:15;19989:28;19804:220;:::o;20030:225::-;20170:34;20166:1;20158:6;20154:14;20147:58;20239:8;20234:2;20226:6;20222:15;20215:33;20030:225;:::o;20261:122::-;20334:24;20352:5;20334:24;:::i;:::-;20327:5;20324:35;20314:63;;20373:1;20370;20363:12;20314:63;20261:122;:::o;20389:::-;20462:24;20480:5;20462:24;:::i;:::-;20455:5;20452:35;20442:63;;20501:1;20498;20491:12;20442:63;20389:122;:::o

Swarm Source

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