Contract 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d

Contract Overview

Balance:
0 DEV
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x95c771d846045de535be50f879a0743cb2ff1dc7be718d80e46730b8b4544a66Approve44301812023-05-27 19:19:485 days 19 hrs ago0xee93261912f499205fcf8007a847ec3c75b2cdc9 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.000040477125
0x41740834b1965ef27a8efc43587191f5959f5e3df5a6a344b885d661452f3100Approve43728052023-05-18 16:04:1814 days 23 hrs ago0x46da8e13b8b8c6b3e753e1e5307f6821e88f2b42 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0024909
0xf908ef14567cdd38474c0a323fd6646bc64c00aabcdc69da0089fc9c08b6774fApprove41865422023-04-20 13:52:0043 days 1 hr ago0x45a0fd8dc06fd1215f595ccc5806b8270a0ac45a IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.000040477125
0x8382aa74f0ab9ca5a883f6e4b96caaf4714efd7536d79416ab086ddbfb396f9cApprove41104202023-04-09 12:41:1254 days 2 hrs ago0xd952a60942b9ad93df69035bce255e0a09016015 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.000040477125
0xeb28c1bf784b802edc03fe7c3a4c9551c586f89b1115ebfe09fe785cb6b92f35Approve41099822023-04-09 11:07:3054 days 4 hrs ago0xdc1858abbecbb9ec4bf22fa8c1cff014a575f9cb IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.000040477125
0x1ad5e61929ea5497e6a26ddf805c8e1ab6b17fa028ddfbe03a8181451fd579f7Approve40331542023-03-28 18:56:2465 days 20 hrs ago0x51a9a3df0b784eb45f32de3bd266444b0dcbf062 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.000040477125
0xc4ab0d1cc304e2e00efa125f84e0c724a7a48e610b405203a953bd78241e049bApprove40245782023-03-27 12:31:1867 days 2 hrs ago0x1ece5100927550f86e494f77cf3e7a600e1b9365 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.000040477125
0x486ae02ad14234964d2c62f8efd072f6822e4083d7a4e3cf2ad1b85ba16e9214Approve40176002023-03-26 11:28:4868 days 3 hrs ago0x1332d99e6ea44c2904009cdcbf8ce215477ce102 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.000040479818
0x33a98943911f67e8b7cb280ec76d9a86e8a35f4d34eb062bda02a1f8491987edApprove39858202023-03-21 19:00:2472 days 20 hrs ago0xd7613b407a9eb751f7e391aa2588063ee4e883d1 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.000040478026
0x1806aed2dee698cfb79854ebc22c212360311e21a49db416484c1c24f54d55acApprove39747632023-03-20 3:25:3674 days 11 hrs ago0xb090a8850d641087a017e65b9ed3dc9bce96fbde IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.000040477125
0xce6cdf3ded98bf635086c851646781bf050dc51a78251e38877b5854ef554afbApprove39638202023-03-18 12:14:1876 days 3 hrs ago0xa9c96d71e9c2d499f424b2a490006e8d92225222 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.000040477125
0xd81a6509b0b09cccef28433ec97c4f059c725b43cb9d520a715a4587430de4ebApprove38332532023-02-26 21:16:1295 days 17 hrs ago0x965ec2820727148b8b4bd5da4a7b23efa03d95cd IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.000037394636
0xd8b20d2e2b369223f5f0e447d31cc3e988db517da55bd8ec23757865641612d8Approve28390222022-09-15 3:10:54260 days 12 hrs ago0x65aaeec60c6149bf18753f5d2c361ecbba22651a IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0001179825
0x6a4afefbf8932d96c4af420c64a19f425889c90ef0cb04fbe1e6a1b26c63c319Approve27611592022-09-01 19:25:18273 days 19 hrs ago0x147c1cff9251a27b2bf505c42df13a8905a8f9b8 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0001179825
0xf1c7ba4cd378667b6fa1e72692eb8617072fe01c11b2af57511895d643f25444Approve26930492022-08-20 12:15:00286 days 2 hrs ago0x2c9fb99808964dcede14111e1ef4a83a5bc352e9 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0001179825
0x90be2586e3a3b3633c5993342148b20a0c729d66c266c58750f4a55de9069723Approve26702682022-08-16 11:00:30290 days 4 hrs ago0x76104a3777793c923ea61691a4e382db900d2594 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0001179825
0x932827941a5e6c94313fb7055f60b4e730e8a1f52b83e1a984d921849cbce339Approve25035552022-07-17 10:41:36320 days 4 hrs ago0x2586c93f212b70dbb8045604584bb44929d7fd67 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0000672725
0xa9540142ea2cdb26a3dcbfa256a2ff661f2d798f367783a957fc844f2a5e2b18Approve25035532022-07-17 10:41:12320 days 4 hrs ago0x2586c93f212b70dbb8045604584bb44929d7fd67 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.00005382
0xbf34ee83f0b19aa82ff0be452b660541a43b45d52d80b025e2583b8f473307acApprove24938322022-07-15 21:23:24321 days 17 hrs ago0x8d48c5f32467b0440ab08ac197ca40825faeefbd IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0001179825
0xa8598bb092f23d728da220888e8092dd8bc6d95e0c2fa624ee6d040baa500e8fApprove24925442022-07-15 16:27:36321 days 22 hrs ago0x88092758b19f330234cfc851ab4ef2b974665476 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0001179825
0xc828f6dd3587e5267c96750997ec3b257ebfb38d43ae4dd365a1c105268f620aApprove24923212022-07-15 15:37:06321 days 23 hrs ago0x53d25a99e798cff0a0929ae85b49fdbe3813e157 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0001179825
0xf44a2373d195bdea3953091b7ab8ae218df656b1e38d58c7cf854361710bea8dApprove24922332022-07-15 15:17:42321 days 23 hrs ago0x243f84a1e4cd40dbccefdae399621282548c5a58 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0000682325
0xf6f7c6c0a8f0f4ae46adbfa984923a41328812703f2d4ffb060eae9544f20188Approve24922332022-07-15 15:17:42321 days 23 hrs ago0x243f84a1e4cd40dbccefdae399621282548c5a58 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0001179825
0x4abd2f4786c94442c2471499129e8f8e49882dca556c983004e95e6452897634Approve24745232022-07-12 19:27:30324 days 19 hrs ago0x8c2d56fceda0bd2d96ab3be986599bb067efe402 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0001179825
0x39dbdd442933e6dd91e5af1188efc7e1312edd6de877b43a344895dfd75cd4ecApprove24624832022-07-10 22:25:30326 days 16 hrs ago0x3abbb98e1184fea4ba78063dfee63e957fd885f6 IN 0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV0.0001179825
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x4b02bde82cf07755db54f83ab2f9a3ffc5579e25ba14747514746009d5b70e4835664162023-01-17 11:54:18136 days 3 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x4b02bde82cf07755db54f83ab2f9a3ffc5579e25ba14747514746009d5b70e4835664162023-01-17 11:54:18136 days 3 hrs ago 0x46ab221ac1e51968f4c05e57137011c27696d1370x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x9a860608168f142cb5f5c8d6f9dadaea8bea6119382f9f7b43b34f32f029477c35664152023-01-17 11:54:00136 days 3 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x9a860608168f142cb5f5c8d6f9dadaea8bea6119382f9f7b43b34f32f029477c35664152023-01-17 11:54:00136 days 3 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x16a059c3973757ac151fb3d22e9ec5f96264fe2fb08bf0b3dd8422113d73b96732809882022-12-01 14:50:48183 days 24 mins ago 0xa638c1aefb24956759b39add52b17c4364bd4f1e0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x16a059c3973757ac151fb3d22e9ec5f96264fe2fb08bf0b3dd8422113d73b96732809882022-12-01 14:50:48183 days 24 mins ago 0x46ab221ac1e51968f4c05e57137011c27696d1370x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x74a2bf8a8cbbd2e760e1fdfbf359c237e5185d2176ad557e25dd632b0b3f64ea32809782022-12-01 14:48:30183 days 26 mins ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x74a2bf8a8cbbd2e760e1fdfbf359c237e5185d2176ad557e25dd632b0b3f64ea32809782022-12-01 14:48:30183 days 26 mins ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0xc3f24a1c50d7ec9f3886d17c8efcdaa27a56deb1ef0d1e5be520ab9220465fd532809762022-12-01 14:47:42183 days 27 mins ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0xc3f24a1c50d7ec9f3886d17c8efcdaa27a56deb1ef0d1e5be520ab9220465fd532809762022-12-01 14:47:42183 days 27 mins ago 0x46ab221ac1e51968f4c05e57137011c27696d1370x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0xbbcdb797b00067030b06813635a183bb488872123472e89bc097968f0d52659e31294232022-11-06 9:28:48208 days 5 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0xbbcdb797b00067030b06813635a183bb488872123472e89bc097968f0d52659e31294232022-11-06 9:28:48208 days 5 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x5c4d131f157514db71943f8a4ff925b2a717edffb6a153b9bf2bcd72046feb0231293822022-11-06 9:18:30208 days 5 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x5c4d131f157514db71943f8a4ff925b2a717edffb6a153b9bf2bcd72046feb0231293822022-11-06 9:18:30208 days 5 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0xc886b6c943ee91ce38ce0c9c52a3f412b66232d011d688606284339b955d29ee30665512022-10-25 8:12:00220 days 7 hrs ago 0xa638c1aefb24956759b39add52b17c4364bd4f1e0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0xc886b6c943ee91ce38ce0c9c52a3f412b66232d011d688606284339b955d29ee30665512022-10-25 8:12:00220 days 7 hrs ago 0x46ab221ac1e51968f4c05e57137011c27696d1370x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0xf5372dbb794982a88805d226756f0ed9c44ecb6c41fb1141eaa2fef594f08b6530665452022-10-25 8:10:06220 days 7 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0xf5372dbb794982a88805d226756f0ed9c44ecb6c41fb1141eaa2fef594f08b6530665452022-10-25 8:10:06220 days 7 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x6c4fc2e4347e8ad517080afe48afc17d13ef6cf84243117761809418e4e7e59030665412022-10-25 8:09:12220 days 7 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x6c4fc2e4347e8ad517080afe48afc17d13ef6cf84243117761809418e4e7e59030665412022-10-25 8:09:12220 days 7 hrs ago 0x46ab221ac1e51968f4c05e57137011c27696d1370x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x3104d06800cd09e1859232aa26bbab7ecc820d58a8d3e6b4bd3aa8792636787a30665372022-10-25 8:08:12220 days 7 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x3104d06800cd09e1859232aa26bbab7ecc820d58a8d3e6b4bd3aa8792636787a30665372022-10-25 8:08:12220 days 7 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x1eb0cf47b653c0c9f47afce9a831e53acfec92f4945bd1d13d2761cf18f8358428932472022-09-24 8:30:18251 days 6 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x1eb0cf47b653c0c9f47afce9a831e53acfec92f4945bd1d13d2761cf18f8358428932472022-09-24 8:30:18251 days 6 hrs ago 0x46ab221ac1e51968f4c05e57137011c27696d1370x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
0x3e669774ecab65ff2420f227e1e33facf554c886c4636455f05beef09998c76d28932432022-09-24 8:29:12251 days 6 hrs ago 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0x81eeaf8f98e9dfb48923cab9d234013fcd8c4b8d0 DEV
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GoldToken

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 moonbase.moonscan.io on 2022-04-25
*/

// Sources flattened with hardhat v2.6.8 https://hardhat.org

// File @openzeppelin/contracts/utils/[email protected]

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

/*
 * @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.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

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


// File @openzeppelin/contracts/token/ERC20/[email protected]



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

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

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

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

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

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

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

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


// File @openzeppelin/contracts/math/[email protected]




/**
 * @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, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @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) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @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) {
        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, reverting 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) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * 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);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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;
    }
}


// File @openzeppelin/contracts/token/ERC20/[email protected]




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) public {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

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

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal virtual {
        _decimals = decimals_;
    }

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


// File contracts/twc.sol

// contracts/GLDToken.sol

pragma solidity ^0.8.0;

contract GoldToken is ERC20 {
    constructor() ERC20("Gold", "GLD") {
        _mint(msg.sender,40000000000000000000000000);
    }
}

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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[],"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600481526020017f476f6c64000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f474c44000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000308565b508060049080519060200190620000af92919062000308565b506012600560006101000a81548160ff021916908360ff1602179055505050620000eb336a2116545850052128000000620000f160201b60201c565b620005d6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000164576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015b9062000439565b60405180910390fd5b6200017860008383620002a060201b60201c565b6200019481600254620002a560201b6200071f1790919060201c565b600281905550620001f2816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002a560201b6200071f1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200029491906200045b565b60405180910390a35050565b505050565b6000808284620002b6919062000489565b905083811015620002fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f59062000417565b60405180910390fd5b8091505092915050565b8280546200031690620004f0565b90600052602060002090601f0160209004810192826200033a576000855562000386565b82601f106200035557805160ff191683800117855562000386565b8280016001018555821562000386579182015b828111156200038557825182559160200191906001019062000368565b5b50905062000395919062000399565b5090565b5b80821115620003b45760008160009055506001016200039a565b5090565b6000620003c7601b8362000478565b9150620003d48262000584565b602082019050919050565b6000620003ee601f8362000478565b9150620003fb82620005ad565b602082019050919050565b6200041181620004e6565b82525050565b600060208201905081810360008301526200043281620003b8565b9050919050565b600060208201905081810360008301526200045481620003df565b9050919050565b600060208201905062000472600083018462000406565b92915050565b600082825260208201905092915050565b60006200049682620004e6565b9150620004a383620004e6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004db57620004da62000526565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200050957607f821691505b6020821081141562000520576200051f62000555565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113aa80620005e66000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610ea2565b60405180910390f35b6100e660048036038101906100e19190610d32565b610308565b6040516100f39190610e87565b60405180910390f35b610104610326565b6040516101119190610f64565b60405180910390f35b610134600480360381019061012f9190610cdf565b610330565b6040516101419190610e87565b60405180910390f35b610152610409565b60405161015f9190610f7f565b60405180910390f35b610182600480360381019061017d9190610d32565b610420565b60405161018f9190610e87565b60405180910390f35b6101b260048036038101906101ad9190610c72565b6104d3565b6040516101bf9190610f64565b60405180910390f35b6101d061051b565b6040516101dd9190610ea2565b60405180910390f35b61020060048036038101906101fb9190610d32565b6105ad565b60405161020d9190610e87565b60405180910390f35b610230600480360381019061022b9190610d32565b61067a565b60405161023d9190610e87565b60405180910390f35b610260600480360381019061025b9190610c9f565b610698565b60405161026d9190610f64565b60405180910390f35b606060038054610285906110c8565b80601f01602080910402602001604051908101604052809291908181526020018280546102b1906110c8565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c61031561077d565b8484610785565b6001905092915050565b6000600254905090565b600061033d848484610950565b6103fe8461034961077d565b6103f98560405180606001604052806028815260200161132860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103af61077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b610785565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006104c961042d61077d565b846104c4856001600061043e61077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461071f90919063ffffffff16565b610785565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461052a906110c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610556906110c8565b80156105a35780601f10610578576101008083540402835291602001916105a3565b820191906000526020600020905b81548152906001019060200180831161058657829003601f168201915b5050505050905090565b60006106706105ba61077d565b8461066b8560405180606001604052806025815260200161135060259139600160006105e461077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b610785565b6001905092915050565b600061068e61068761077d565b8484610950565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828461072e9190610fb6565b905083811015610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076a90610f04565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90610f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c90610ee4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109439190610f64565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b790610f24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790610ec4565b60405180910390fd5b610a3b838383610c43565b610aa681604051806060016040528060268152602001611302602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b39816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461071f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bd89190610f64565b60405180910390a3505050565b6000838311158290610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c249190610ea2565b60405180910390fd5b508284610c3a919061100c565b90509392505050565b505050565b600081359050610c57816112d3565b92915050565b600081359050610c6c816112ea565b92915050565b600060208284031215610c8857610c87611158565b5b6000610c9684828501610c48565b91505092915050565b60008060408385031215610cb657610cb5611158565b5b6000610cc485828601610c48565b9250506020610cd585828601610c48565b9150509250929050565b600080600060608486031215610cf857610cf7611158565b5b6000610d0686828701610c48565b9350506020610d1786828701610c48565b9250506040610d2886828701610c5d565b9150509250925092565b60008060408385031215610d4957610d48611158565b5b6000610d5785828601610c48565b9250506020610d6885828601610c5d565b9150509250929050565b610d7b81611052565b82525050565b6000610d8c82610f9a565b610d968185610fa5565b9350610da6818560208601611095565b610daf8161115d565b840191505092915050565b6000610dc7602383610fa5565b9150610dd28261116e565b604082019050919050565b6000610dea602283610fa5565b9150610df5826111bd565b604082019050919050565b6000610e0d601b83610fa5565b9150610e188261120c565b602082019050919050565b6000610e30602583610fa5565b9150610e3b82611235565b604082019050919050565b6000610e53602483610fa5565b9150610e5e82611284565b604082019050919050565b610e728161107e565b82525050565b610e8181611088565b82525050565b6000602082019050610e9c6000830184610d72565b92915050565b60006020820190508181036000830152610ebc8184610d81565b905092915050565b60006020820190508181036000830152610edd81610dba565b9050919050565b60006020820190508181036000830152610efd81610ddd565b9050919050565b60006020820190508181036000830152610f1d81610e00565b9050919050565b60006020820190508181036000830152610f3d81610e23565b9050919050565b60006020820190508181036000830152610f5d81610e46565b9050919050565b6000602082019050610f796000830184610e69565b92915050565b6000602082019050610f946000830184610e78565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610fc18261107e565b9150610fcc8361107e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611001576110006110fa565b5b828201905092915050565b60006110178261107e565b91506110228361107e565b925082821015611035576110346110fa565b5b828203905092915050565b600061104b8261105e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156110b3578082015181840152602081019050611098565b838111156110c2576000848401525b50505050565b600060028204905060018216806110e057607f821691505b602082108114156110f4576110f3611129565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6112dc81611040565b81146112e757600080fd5b50565b6112f38161107e565b81146112fe57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f73270d70ea1065aa75f3b5762fc42b94c525ebd9c6a2c2d28dc61c23f93cd5c64736f6c63430008070033

Deployed ByteCode Sourcemap

22410:136:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13450:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15596:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14549:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16247:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14393:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16977:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14720:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13660:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17698:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15060:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15298:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13450:91;13495:13;13528:5;13521:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13450:91;:::o;15596:169::-;15679:4;15696:39;15705:12;:10;:12::i;:::-;15719:7;15728:6;15696:8;:39::i;:::-;15753:4;15746:11;;15596:169;;;;:::o;14549:108::-;14610:7;14637:12;;14630:19;;14549:108;:::o;16247:321::-;16353:4;16370:36;16380:6;16388:9;16399:6;16370:9;:36::i;:::-;16417:121;16426:6;16434:12;:10;:12::i;:::-;16448:89;16486:6;16448:89;;;;;;;;;;;;;;;;;:11;:19;16460:6;16448:19;;;;;;;;;;;;;;;:33;16468:12;:10;:12::i;:::-;16448:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;16417:8;:121::i;:::-;16556:4;16549:11;;16247:321;;;;;:::o;14393:91::-;14442:5;14467:9;;;;;;;;;;;14460:16;;14393:91;:::o;16977:218::-;17065:4;17082:83;17091:12;:10;:12::i;:::-;17105:7;17114:50;17153:10;17114:11;:25;17126:12;:10;:12::i;:::-;17114:25;;;;;;;;;;;;;;;:34;17140:7;17114:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17082:8;:83::i;:::-;17183:4;17176:11;;16977:218;;;;:::o;14720:127::-;14794:7;14821:9;:18;14831:7;14821:18;;;;;;;;;;;;;;;;14814:25;;14720:127;;;:::o;13660:95::-;13707:13;13740:7;13733:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13660:95;:::o;17698:269::-;17791:4;17808:129;17817:12;:10;:12::i;:::-;17831:7;17840:96;17879:15;17840:96;;;;;;;;;;;;;;;;;:11;:25;17852:12;:10;:12::i;:::-;17840:25;;;;;;;;;;;;;;;:34;17866:7;17840:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17808:8;:129::i;:::-;17955:4;17948:11;;17698:269;;;;:::o;15060:175::-;15146:4;15163:42;15173:12;:10;:12::i;:::-;15187:9;15198:6;15163:9;:42::i;:::-;15223:4;15216:11;;15060:175;;;;:::o;15298:151::-;15387:7;15414:11;:18;15426:5;15414:18;;;;;;;;;;;;;;;:27;15433:7;15414:27;;;;;;;;;;;;;;;;15407:34;;15298:151;;;;:::o;6646:179::-;6704:7;6724:9;6740:1;6736;:5;;;;:::i;:::-;6724:17;;6765:1;6760;:6;;6752:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6816:1;6809:8;;;6646:179;;;;:::o;727:115::-;780:15;823:10;808:26;;727:115;:::o;20845:346::-;20964:1;20947:19;;:5;:19;;;;20939:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21045:1;21026:21;;:7;:21;;;;21018:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21129:6;21099:11;:18;21111:5;21099:18;;;;;;;;;;;;;;;:27;21118:7;21099:27;;;;;;;;;;;;;;;:36;;;;21167:7;21151:32;;21160:5;21151:32;;;21176:6;21151:32;;;;;;:::i;:::-;;;;;;;;20845:346;;;:::o;18457:539::-;18581:1;18563:20;;:6;:20;;;;18555:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18665:1;18644:23;;:9;:23;;;;18636:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18720:47;18741:6;18749:9;18760:6;18720:20;:47::i;:::-;18800:71;18822:6;18800:71;;;;;;;;;;;;;;;;;:9;:17;18810:6;18800:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;18780:9;:17;18790:6;18780:17;;;;;;;;;;;;;;;:91;;;;18905:32;18930:6;18905:9;:20;18915:9;18905:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18882:9;:20;18892:9;18882:20;;;;;;;;;;;;;;;:55;;;;18970:9;18953:35;;18962:6;18953:35;;;18981:6;18953:35;;;;;;:::i;:::-;;;;;;;;18457:539;;;:::o;9473:166::-;9559:7;9592:1;9587;:6;;9595:12;9579:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9630:1;9626;:5;;;;:::i;:::-;9619:12;;9473:166;;;;;:::o;22224:92::-;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;152:139;;;;:::o;297:329::-;356:6;405:2;393:9;384:7;380:23;376:32;373:119;;;411:79;;:::i;:::-;373:119;531:1;556:53;601:7;592:6;581:9;577:22;556:53;:::i;:::-;546:63;;502:117;297:329;;;;:::o;632:474::-;700:6;708;757:2;745:9;736:7;732:23;728:32;725:119;;;763:79;;:::i;:::-;725:119;883:1;908:53;953:7;944:6;933:9;929:22;908:53;:::i;:::-;898:63;;854:117;1010:2;1036:53;1081:7;1072:6;1061:9;1057:22;1036:53;:::i;:::-;1026:63;;981:118;632:474;;;;;:::o;1112:619::-;1189:6;1197;1205;1254:2;1242:9;1233:7;1229:23;1225:32;1222:119;;;1260:79;;:::i;:::-;1222:119;1380:1;1405:53;1450:7;1441:6;1430:9;1426:22;1405:53;:::i;:::-;1395:63;;1351:117;1507:2;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1478:118;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1112:619;;;;;:::o;1737:474::-;1805:6;1813;1862:2;1850:9;1841:7;1837:23;1833:32;1830:119;;;1868:79;;:::i;:::-;1830:119;1988:1;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1959:117;2115:2;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2086:118;1737:474;;;;;:::o;2217:109::-;2298:21;2313:5;2298:21;:::i;:::-;2293:3;2286:34;2217:109;;:::o;2332:364::-;2420:3;2448:39;2481:5;2448:39;:::i;:::-;2503:71;2567:6;2562:3;2503:71;:::i;:::-;2496:78;;2583:52;2628:6;2623:3;2616:4;2609:5;2605:16;2583:52;:::i;:::-;2660:29;2682:6;2660:29;:::i;:::-;2655:3;2651:39;2644:46;;2424:272;2332:364;;;;:::o;2702:366::-;2844:3;2865:67;2929:2;2924:3;2865:67;:::i;:::-;2858:74;;2941:93;3030:3;2941:93;:::i;:::-;3059:2;3054:3;3050:12;3043:19;;2702:366;;;:::o;3074:::-;3216:3;3237:67;3301:2;3296:3;3237:67;:::i;:::-;3230:74;;3313:93;3402:3;3313:93;:::i;:::-;3431:2;3426:3;3422:12;3415:19;;3074:366;;;:::o;3446:::-;3588:3;3609:67;3673:2;3668:3;3609:67;:::i;:::-;3602:74;;3685:93;3774:3;3685:93;:::i;:::-;3803:2;3798:3;3794:12;3787:19;;3446:366;;;:::o;3818:::-;3960:3;3981:67;4045:2;4040:3;3981:67;:::i;:::-;3974:74;;4057:93;4146:3;4057:93;:::i;:::-;4175:2;4170:3;4166:12;4159:19;;3818:366;;;:::o;4190:::-;4332:3;4353:67;4417:2;4412:3;4353:67;:::i;:::-;4346:74;;4429:93;4518:3;4429:93;:::i;:::-;4547:2;4542:3;4538:12;4531:19;;4190:366;;;:::o;4562:118::-;4649:24;4667:5;4649:24;:::i;:::-;4644:3;4637:37;4562:118;;:::o;4686:112::-;4769:22;4785:5;4769:22;:::i;:::-;4764:3;4757:35;4686:112;;:::o;4804:210::-;4891:4;4929:2;4918:9;4914:18;4906:26;;4942:65;5004:1;4993:9;4989:17;4980:6;4942:65;:::i;:::-;4804:210;;;;:::o;5020:313::-;5133:4;5171:2;5160:9;5156:18;5148:26;;5220:9;5214:4;5210:20;5206:1;5195:9;5191:17;5184:47;5248:78;5321:4;5312:6;5248:78;:::i;:::-;5240:86;;5020:313;;;;:::o;5339:419::-;5505:4;5543:2;5532:9;5528:18;5520:26;;5592:9;5586:4;5582:20;5578:1;5567:9;5563:17;5556:47;5620:131;5746:4;5620:131;:::i;:::-;5612:139;;5339:419;;;:::o;5764:::-;5930:4;5968:2;5957:9;5953:18;5945:26;;6017:9;6011:4;6007:20;6003:1;5992:9;5988:17;5981:47;6045:131;6171:4;6045:131;:::i;:::-;6037:139;;5764:419;;;:::o;6189:::-;6355:4;6393:2;6382:9;6378:18;6370:26;;6442:9;6436:4;6432:20;6428:1;6417:9;6413:17;6406:47;6470:131;6596:4;6470:131;:::i;:::-;6462:139;;6189:419;;;:::o;6614:::-;6780:4;6818:2;6807:9;6803:18;6795:26;;6867:9;6861:4;6857:20;6853:1;6842:9;6838:17;6831:47;6895:131;7021:4;6895:131;:::i;:::-;6887:139;;6614:419;;;:::o;7039:::-;7205:4;7243:2;7232:9;7228:18;7220:26;;7292:9;7286:4;7282:20;7278:1;7267:9;7263:17;7256:47;7320:131;7446:4;7320:131;:::i;:::-;7312:139;;7039:419;;;:::o;7464:222::-;7557:4;7595:2;7584:9;7580:18;7572:26;;7608:71;7676:1;7665:9;7661:17;7652:6;7608:71;:::i;:::-;7464:222;;;;:::o;7692:214::-;7781:4;7819:2;7808:9;7804:18;7796:26;;7832:67;7896:1;7885:9;7881:17;7872:6;7832:67;:::i;:::-;7692:214;;;;:::o;7993:99::-;8045:6;8079:5;8073:12;8063:22;;7993:99;;;:::o;8098:169::-;8182:11;8216:6;8211:3;8204:19;8256:4;8251:3;8247:14;8232:29;;8098:169;;;;:::o;8273:305::-;8313:3;8332:20;8350:1;8332:20;:::i;:::-;8327:25;;8366:20;8384:1;8366:20;:::i;:::-;8361:25;;8520:1;8452:66;8448:74;8445:1;8442:81;8439:107;;;8526:18;;:::i;:::-;8439:107;8570:1;8567;8563:9;8556:16;;8273:305;;;;:::o;8584:191::-;8624:4;8644:20;8662:1;8644:20;:::i;:::-;8639:25;;8678:20;8696:1;8678:20;:::i;:::-;8673:25;;8717:1;8714;8711:8;8708:34;;;8722:18;;:::i;:::-;8708:34;8767:1;8764;8760:9;8752:17;;8584:191;;;;:::o;8781:96::-;8818:7;8847:24;8865:5;8847:24;:::i;:::-;8836:35;;8781:96;;;:::o;8883:90::-;8917:7;8960:5;8953:13;8946:21;8935:32;;8883:90;;;:::o;8979:126::-;9016:7;9056:42;9049:5;9045:54;9034:65;;8979:126;;;:::o;9111:77::-;9148:7;9177:5;9166:16;;9111:77;;;:::o;9194:86::-;9229:7;9269:4;9262:5;9258:16;9247:27;;9194:86;;;:::o;9286:307::-;9354:1;9364:113;9378:6;9375:1;9372:13;9364:113;;;9463:1;9458:3;9454:11;9448:18;9444:1;9439:3;9435:11;9428:39;9400:2;9397:1;9393:10;9388:15;;9364:113;;;9495:6;9492:1;9489:13;9486:101;;;9575:1;9566:6;9561:3;9557:16;9550:27;9486:101;9335:258;9286:307;;;:::o;9599:320::-;9643:6;9680:1;9674:4;9670:12;9660:22;;9727:1;9721:4;9717:12;9748:18;9738:81;;9804:4;9796:6;9792:17;9782:27;;9738:81;9866:2;9858:6;9855:14;9835:18;9832:38;9829:84;;;9885:18;;:::i;:::-;9829:84;9650:269;9599:320;;;:::o;9925:180::-;9973:77;9970:1;9963:88;10070:4;10067:1;10060:15;10094:4;10091:1;10084:15;10111:180;10159:77;10156:1;10149:88;10256:4;10253:1;10246:15;10280:4;10277:1;10270:15;10420:117;10529:1;10526;10519:12;10543:102;10584:6;10635:2;10631:7;10626:2;10619:5;10615:14;10611:28;10601:38;;10543:102;;;:::o;10651:222::-;10791:34;10787:1;10779:6;10775:14;10768:58;10860:5;10855:2;10847:6;10843:15;10836:30;10651:222;:::o;10879:221::-;11019:34;11015:1;11007:6;11003:14;10996:58;11088:4;11083:2;11075:6;11071:15;11064:29;10879:221;:::o;11106:177::-;11246:29;11242:1;11234:6;11230:14;11223:53;11106:177;:::o;11289:224::-;11429:34;11425:1;11417:6;11413:14;11406:58;11498:7;11493:2;11485:6;11481:15;11474:32;11289:224;:::o;11519:223::-;11659:34;11655:1;11647:6;11643:14;11636:58;11728:6;11723:2;11715:6;11711:15;11704:31;11519:223;:::o;11748:122::-;11821:24;11839:5;11821:24;:::i;:::-;11814:5;11811:35;11801:63;;11860:1;11857;11850:12;11801:63;11748:122;:::o;11876:::-;11949:24;11967:5;11949:24;:::i;:::-;11942:5;11939:35;11929:63;;11988:1;11985;11978:12;11929:63;11876:122;:::o

Swarm Source

ipfs://f73270d70ea1065aa75f3b5762fc42b94c525ebd9c6a2c2d28dc61c23f93cd5c
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading