Contract 0x77f6a5f1b7a2b6d6c322af8581317d6bb0a52689

 
Txn Hash
Block
From
To
Value [Txn Fee]
0x75f4571cbd0144145a1eaf003c2cd268c96828926e35d807536e3d6e34c6e63985628072021-06-24 1:37:392 hrs 25 mins ago0x5953d009299f31fac1d7b08176cc7a7a571405cb IN  Spore Engineering: SPORE Token0 BNB0.000221135
0x8e212999fd6a7ceb915a15bd4397ad7f49415e32e892a03f63af15e222665e0b85620572021-06-24 1:00:093 hrs 2 mins ago0x5953d009299f31fac1d7b08176cc7a7a571405cb IN  Spore Engineering: SPORE Token0 BNB0.000221015
0x59d1195cf1e43d6446f27f239a0916cdcf928555c012ca5e51b327a4a499884e85613222021-06-24 0:23:243 hrs 39 mins ago0x5953d009299f31fac1d7b08176cc7a7a571405cb IN  Spore Engineering: SPORE Token0 BNB0.000256585
0xa538e5b3bc3e42c63123af0e3b69ca571e0a428099e3162ce2de394402416cf185613142021-06-24 0:23:003 hrs 39 mins ago0x5953d009299f31fac1d7b08176cc7a7a571405cb IN  Spore Engineering: SPORE Token0 BNB0.000256585
0x69e95be175c8cbf6523d49eb4301bf10474021d0c8318563f3124d0d8bf2099685574012021-06-23 21:06:336 hrs 56 mins ago0xef0bb4d98745a19ef7ef5269a00ba7e2dfa67035 IN  Spore Engineering: SPORE Token0 BNB0.000256645
0xfde23ad2ab36eb10c1ced7068eb16008a8cb3c6a28a3ef9a867d4aecc62bcd7e85294472021-06-22 21:41:221 day 6 hrs ago0xa415bfc702eb2345f7a8396626379a11669497d3 IN  Spore Engineering: SPORE Token0 BNB0.0000728
0xd31bbd80c9402c5d2954e121a6f5c5c7b13dae5ed93d6523c3b57349bdec257085287472021-06-22 21:06:211 day 6 hrs ago0xa415bfc702eb2345f7a8396626379a11669497d3 IN  Spore Engineering: SPORE Token0 BNB0.000222515
0x29b994ab6d3ac2743b271e2d7e7a23bdd482bb76af2b67af4143737ce4a09f6685244512021-06-22 17:30:081 day 10 hrs ago0xafd5369241e4aa18bd86f7bfb614706a2f3017f9 IN  Spore Engineering: SPORE Token0 BNB0.000221135
0xc3a72f915fe934f48af73800e93c2d606185a97c1e30ae7607d9def0f51e88a185234262021-06-22 16:38:501 day 11 hrs ago0x084de16ff152c514bab5fc345319680afc11b2b0 IN  Spore Engineering: SPORE Token0 BNB0.000221135
0xadc845f513ff94b5b6310f23b6ff75baebd1991c65c034cad44ec44ce1ef08ef85222722021-06-22 15:39:261 day 12 hrs ago0xa4611aa84d11316c846c753f8a05f1ac68238f31 IN  Spore Engineering: SPORE Token0 BNB0.000222515
0xae167d696801a4b51d34581e4798257aa26803fa2b759183482fd2231bfcce3f85180182021-06-22 12:04:501 day 15 hrs ago0x63ca0c8709fe62d5d52e26e5db6e3fcee3d014ab IN  Spore Engineering: SPORE Token0 BNB0.000222515
0x0da20f97bb00472338ce4bf6c35d7270f66e7153d07c4a245f45ca88e28b1eb185103862021-06-22 5:41:221 day 22 hrs ago0xa415bfc702eb2345f7a8396626379a11669497d3 IN  Spore Engineering: SPORE Token0 BNB0.0000728
0xdc4e083969686b39720191852f675d8b63569bb3dfc856b0cb2a406a05ccfdca85103802021-06-22 5:41:041 day 22 hrs ago0xa415bfc702eb2345f7a8396626379a11669497d3 IN  Spore Engineering: SPORE Token0 BNB0.0000728
0x410fccf0d42743aeb761e55cffd4e78a4876aabbd8aa06cd60f80d4c308afe9885103652021-06-22 5:40:191 day 22 hrs ago0xa415bfc702eb2345f7a8396626379a11669497d3 IN  Spore Engineering: SPORE Token0 BNB0.0000728
0x4c50b20f5efc2d488112aba6fb211e87fa4a4a11149ddd532411d98fff6631cf85101892021-06-22 5:31:311 day 22 hrs ago0xa415bfc702eb2345f7a8396626379a11669497d3 IN  Spore Engineering: SPORE Token0 BNB0.000222515
0x9a78b7dc7bdc7936335369508d0084c6ee23abfb13dff6d82af5b4f1886c7cd285100132021-06-22 5:22:431 day 22 hrs ago0xa415bfc702eb2345f7a8396626379a11669497d3 IN  Spore Engineering: SPORE Token0 BNB0.000222515
0x6f484a9ac6fbba9597ff12211e72d20780fa252a90362fdf076e3ea24bcaa81d85098812021-06-22 5:16:071 day 22 hrs ago0xa415bfc702eb2345f7a8396626379a11669497d3 IN  Spore Engineering: SPORE Token0 BNB0.000221075
0xc2fa2e0d83b240d47b0ae2bf2e510061fe136ab6abf45ee79c8c86e14f56a68985098702021-06-22 5:15:341 day 22 hrs ago0x8e58dfad2bfac40ea48141a234c85c49b07cc856 IN  Spore Engineering: SPORE Token0 BNB0.000181705
0x3f2b175c5956d3d193b5248be2838897689df4428c2d557aaec39a8a0f337bdb85098432021-06-22 5:14:131 day 22 hrs ago0xa415bfc702eb2345f7a8396626379a11669497d3 IN  Spore Engineering: SPORE Token0 BNB0.000221135
0xd1fca9ba1fbc792db962e69ee800ffe21d44aa495ab9ecc0a25cd012e024811085094432021-06-22 4:54:131 day 23 hrs ago0x431c262264117e5968480701d49be8a6fc6050d9 IN  Spore Engineering: SPORE Token0 BNB0.000221075
0xd808c15670490ed8da3ab4100795b04dbc32203494e3b033fa4a78d5a44d30c285093432021-06-22 4:49:131 day 23 hrs ago0x8e58dfad2bfac40ea48141a234c85c49b07cc856 IN  Spore Engineering: SPORE Token0 BNB0.000222515
0x4f65754a495f83e77af422787a2b0bf7b12a218958c4bf44103f29f6184e9d1085093152021-06-22 4:47:491 day 23 hrs ago0x431c262264117e5968480701d49be8a6fc6050d9 IN  Spore Engineering: SPORE Token0 BNB0.000222515
0x9b5298463c7f3339500d15bd6e1a6c974fbb343b4dc7b63823b05f64d045a37b85090852021-06-22 4:36:191 day 23 hrs ago0x2b4cb199534712ec1d43a5ac02d60e7e863f474e IN  Spore Engineering: SPORE Token0 BNB0.000222515
0x5b3e8f98c63e35c2e5e045a9527e1269c5b9c835aaf34fe024436a34138d014685034322021-06-21 23:51:492 days 4 hrs ago0xa79254041b01fa8a5dbed8d3a52d5b4394a8ecc8 IN  Spore Engineering: SPORE Token0 BNB0.000222515
0xa14f83f0cae5bcc682ec762e41fb2c8eaba4f03ea1ddc2a812056ae176e5314085021892021-06-21 22:48:402 days 5 hrs ago0xe667b040a8d8027678fdf3b07a696d79ff390d7d IN  Spore Engineering: SPORE Token0 BNB0.000222515
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb67e472bfd05721de9a02c498a80c0cc975b04efbf7bb889f3c1416d660a2e9854712262021-03-07 11:54:15108 days 16 hrs ago PancakeSwap: BUSD-T-SPORE Spore Engineering: SPORE Token0 BNB
0xb67e472bfd05721de9a02c498a80c0cc975b04efbf7bb889f3c1416d660a2e9854712262021-03-07 11:54:15108 days 16 hrs ago PancakeSwap: Router Spore Engineering: SPORE Token0 BNB
0x90a58dbbc25fab83b7aa7e3361e80800d05523f14efd1a922440466c000cb16654710872021-03-07 11:47:18108 days 16 hrs ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
0x90a58dbbc25fab83b7aa7e3361e80800d05523f14efd1a922440466c000cb16654710872021-03-07 11:47:18108 days 16 hrs ago PancakeSwap: Router Spore Engineering: SPORE Token0 BNB
0x2df91e694f77bdef37093db67c01664e7036a1e5eba9266aa8ee97b0915580c054710742021-03-07 11:46:39108 days 16 hrs ago Spore Engineering: USDT Farm Spore Engineering: SPORE Token0 BNB
0x8761c649ee75b31305851d00ce4fea0df668de00382d7eacaff70d5a3fad86e554707922021-03-07 11:32:33108 days 16 hrs ago Spore Engineering: Staking Contract Spore Engineering: SPORE Token0 BNB
0xcf00fe140e25d5163515b2d2f7df4799c536a227ff2388e7c42962bcb60d701754707852021-03-07 11:32:12108 days 16 hrs ago Spore Engineering: USDT Farm Spore Engineering: SPORE Token0 BNB
0x8e8b24b892776fe526f091d2e77f644daa23f1e9039fbfc6459ae7a3c2d6b2e754701692021-03-07 11:01:24108 days 17 hrs ago Spore Engineering: Staking Contract Spore Engineering: SPORE Token0 BNB
0x81228025e33496dda72c00f8b37a331e5cd5705740d9544984cfd96948342a8954701602021-03-07 11:00:57108 days 17 hrs ago Spore Engineering: BUSD Farm Spore Engineering: SPORE Token0 BNB
0x72b8d58fc9dbf4d4aee21e7a36ebfbf070be5024e2411d21f0d280a9c7cdec5c54700922021-03-07 10:57:33108 days 17 hrs ago PancakeSwap: SPORE-BUSD Spore Engineering: SPORE Token0 BNB
0x72b8d58fc9dbf4d4aee21e7a36ebfbf070be5024e2411d21f0d280a9c7cdec5c54700922021-03-07 10:57:33108 days 17 hrs ago PancakeSwap: Cake-SPORE Spore Engineering: SPORE Token0 BNB
0x72b8d58fc9dbf4d4aee21e7a36ebfbf070be5024e2411d21f0d280a9c7cdec5c54700922021-03-07 10:57:33108 days 17 hrs ago 0xc0b8cfa2e472619ee4b025604a3af7ce4fcac1ad Spore Engineering: SPORE Token0 BNB
0x72b8d58fc9dbf4d4aee21e7a36ebfbf070be5024e2411d21f0d280a9c7cdec5c54700922021-03-07 10:57:33108 days 17 hrs ago PancakeSwap: SPORE-BUSD Spore Engineering: SPORE Token0 BNB
0xd3807af9ced7e314d0e07968ee765b44b6b80c0ab147b7a748e218db0fa3d42254698212021-03-07 10:44:00108 days 17 hrs ago PancakeSwap: SPORE-BUSD Spore Engineering: SPORE Token0 BNB
0xd3807af9ced7e314d0e07968ee765b44b6b80c0ab147b7a748e218db0fa3d42254698212021-03-07 10:44:00108 days 17 hrs ago PancakeSwap: Cake-SPORE Spore Engineering: SPORE Token0 BNB
0xd3807af9ced7e314d0e07968ee765b44b6b80c0ab147b7a748e218db0fa3d42254698212021-03-07 10:44:00108 days 17 hrs ago PancakeSwap: Cake-SPORE Spore Engineering: SPORE Token0 BNB
0xd80396378fec7613652c526ebba33bdf3ed256983e2d1b5cae001f84f80fd7f454698202021-03-07 10:43:57108 days 17 hrs ago PancakeSwap: SPORE-BUSD Spore Engineering: SPORE Token0 BNB
0xd80396378fec7613652c526ebba33bdf3ed256983e2d1b5cae001f84f80fd7f454698202021-03-07 10:43:57108 days 17 hrs ago 0x0c5362f7c80ff3124843df2510b9e7368e237ea6 Spore Engineering: SPORE Token0 BNB
0xd80396378fec7613652c526ebba33bdf3ed256983e2d1b5cae001f84f80fd7f454698202021-03-07 10:43:57108 days 17 hrs ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
0xd80396378fec7613652c526ebba33bdf3ed256983e2d1b5cae001f84f80fd7f454698202021-03-07 10:43:57108 days 17 hrs ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
0x5b6428cf899f22a50024f9532b23d836bf45eb26ed1f27548a0bfc599fec250354697782021-03-07 10:41:51108 days 17 hrs ago Spore Engineering: Staking Contract Spore Engineering: SPORE Token0 BNB
0xf0a6ac2990d845c61c33eac9f5ca768ab4ae6f55406c7315a080e0e1241077d054697722021-03-07 10:41:33108 days 17 hrs ago Spore Engineering: WBNB Farm Spore Engineering: SPORE Token0 BNB
0x2668ea7a1985447b30f82536d255d90f38e94fd84ca91c6fd31f25640e077b8f54697442021-03-07 10:40:09108 days 17 hrs ago PancakeSwap: BUSD-T-SPORE Spore Engineering: SPORE Token0 BNB
0x2668ea7a1985447b30f82536d255d90f38e94fd84ca91c6fd31f25640e077b8f54697442021-03-07 10:40:09108 days 17 hrs ago 0x0c5362f7c80ff3124843df2510b9e7368e237ea6 Spore Engineering: SPORE Token0 BNB
0x2668ea7a1985447b30f82536d255d90f38e94fd84ca91c6fd31f25640e077b8f54697442021-03-07 10:40:09108 days 17 hrs ago PancakeSwap: SPORE Spore Engineering: SPORE Token0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SporeToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-01-26
*/

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity >=0.7.6 <0.8.0;

library EnumerableSet {

    struct Set {
        bytes32[] _values;

        mapping (bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            bytes32 lastvalue = set._values[lastIndex];

            set._values[toDeleteIndex] = lastvalue;
            set._indexes[lastvalue] = toDeleteIndex + 1;

            set._values.pop();

            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }
    
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }

    struct Bytes32Set {
        Set _inner;
    }

    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _add(set._inner, value);
    }

    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _remove(set._inner, value);
    }

    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(value)));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(value)));
    }
    
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(value)));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint256(_at(set._inner, index)));
    }

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    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");
    }

    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");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    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;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

abstract contract AccessControl is Context {
    using EnumerableSet for EnumerableSet.AddressSet;
    using Address for address;

    struct RoleData {
        EnumerableSet.AddressSet members;
        bytes32 adminRole;
    }

    mapping (bytes32 => RoleData) private _roles;

    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    function hasRole(bytes32 role, address account) public view returns (bool) {
        return _roles[role].members.contains(account);
    }

    function getRoleMemberCount(bytes32 role) public view returns (uint256) {
        return _roles[role].members.length();
    }

    function getRoleMember(bytes32 role, uint256 index) public view returns (address) {
        return _roles[role].members.at(index);
    }

    function getRoleAdmin(bytes32 role) public view returns (bytes32) {
        return _roles[role].adminRole;
    }

    function grantRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to grant");

        _grantRole(role, account);
    }

    function revokeRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to revoke");

        _revokeRole(role, account);
    }

    function renounceRole(bytes32 role, address account) public virtual {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);
        _roles[role].adminRole = adminRole;
    }

    function _grantRole(bytes32 role, address account) private {
        if (_roles[role].members.add(account)) {
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) private {
        if (_roles[role].members.remove(account)) {
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

interface IBEP20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ERC20 is Context, IBEP20 {
    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;

    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    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;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    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;
    }

    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);
    }

    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);
    }

    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);
    }

    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);
    }

    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

contract SporeToken is ERC20, AccessControl {
    
    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
    
    constructor() ERC20("Spore Token", "SPORE") {
        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
        _setupRole(MINTER_ROLE, _msgSender());
    }
    
    function mint(address to, uint256 amount) public virtual {
        require(hasRole(MINTER_ROLE, _msgSender()), "must have minter role to mint");
        _mint(to, amount);
    }
    
    function burn(address to, uint256 amount) public virtual {
        require(hasRole(MINTER_ROLE, _msgSender()), "must have minter role to mint");
        _burn(to, amount);
    }
}

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":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","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"}]

60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f53706f726520546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f53504f5245000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620002d0565b508060049080519060200190620000af929190620002d0565b506012600560006101000a81548160ff021916908360ff1602179055505050620000f26000801b620000e66200013960201b60201c565b6200014160201b60201c565b620001337f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6620001276200013960201b60201c565b6200014160201b60201c565b62000386565b600033905090565b6200015382826200015760201b60201c565b5050565b620001868160066000858152602001908152602001600020600001620001fb60201b6200112a1790919060201c565b15620001f7576200019c6200013960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006200022b836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200023360201b60201c565b905092915050565b6000620002478383620002ad60201b60201c565b620002a2578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620002a7565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000308576000855562000354565b82601f106200032357805160ff191683800117855562000354565b8280016001018555821562000354579182015b828111156200035357825182559160200191906001019062000336565b5b50905062000363919062000367565b5090565b5b808211156200038257600081600090555060010162000368565b5090565b61212c80620003966000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80639010d07c116100b8578063a457c2d71161007c578063a457c2d71461068e578063a9059cbb146106f2578063ca15c87314610756578063d539139314610798578063d547741f146107b6578063dd62ed3e1461080457610142565b80639010d07c146104d957806391d148541461053b57806395d89b411461059f5780639dc29fac14610622578063a217fddf1461067057610142565b80632f2ff15d1161010a5780632f2ff15d14610312578063313ce5671461036057806336568abe1461038157806339509351146103cf57806340c10f191461043357806370a082311461048157610142565b806306fdde0314610147578063095ea7b3146101ca57806318160ddd1461022e57806323b872dd1461024c578063248a9ca3146102d0575b600080fd5b61014f61087c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018f578082015181840152602081019050610174565b50505050905090810190601f1680156101bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610216600480360360408110156101e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061091e565b60405180821515815260200191505060405180910390f35b61023661093c565b6040518082815260200191505060405180910390f35b6102b86004803603606081101561026257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610946565b60405180821515815260200191505060405180910390f35b6102fc600480360360208110156102e657600080fd5b8101908080359060200190929190505050610a1f565b6040518082815260200191505060405180910390f35b61035e6004803603604081101561032857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a3f565b005b610368610ac9565b604051808260ff16815260200191505060405180910390f35b6103cd6004803603604081101561039757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae0565b005b61041b600480360360408110156103e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b79565b60405180821515815260200191505060405180910390f35b61047f6004803603604081101561044957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c2c565b005b6104c36004803603602081101561049757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cdd565b6040518082815260200191505060405180910390f35b61050f600480360360408110156104ef57600080fd5b810190808035906020019092919080359060200190929190505050610d25565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105876004803603604081101561055157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d57565b60405180821515815260200191505060405180910390f35b6105a7610d89565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e75780820151818401526020810190506105cc565b50505050905090810190601f1680156106145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066e6004803603604081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e2b565b005b610678610edc565b6040518082815260200191505060405180910390f35b6106da600480360360408110156106a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b60405180821515815260200191505060405180910390f35b61073e6004803603604081101561070857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fb0565b60405180821515815260200191505060405180910390f35b6107826004803603602081101561076c57600080fd5b8101908080359060200190929190505050610fce565b6040518082815260200191505060405180910390f35b6107a0610ff5565b6040518082815260200191505060405180910390f35b610802600480360360408110156107cc57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611019565b005b6108666004803603604081101561081a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a3565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109145780601f106108e957610100808354040283529160200191610914565b820191906000526020600020905b8154815290600101906020018083116108f757829003601f168201915b5050505050905090565b600061093261092b61115a565b8484611162565b6001905092915050565b6000600254905090565b6000610953848484611359565b610a148461095f61115a565b610a0f8560405180606001604052806028815260200161201160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109c561115a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161a9092919063ffffffff16565b611162565b600190509392505050565b600060066000838152602001908152602001600020600201549050919050565b610a666006600084815260200190815260200160002060020154610a6161115a565b610d57565b610abb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611f48602f913960400191505060405180910390fd5b610ac582826116da565b5050565b6000600560009054906101000a900460ff16905090565b610ae861115a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806120c8602f913960400191505060405180910390fd5b610b75828261176e565b5050565b6000610c22610b8661115a565b84610c1d8560016000610b9761115a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461180290919063ffffffff16565b611162565b6001905092915050565b610c5d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610c5861115a565b610d57565b610ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000081525060200191505060405180910390fd5b610cd9828261188a565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610d4f8260066000868152602001908152602001600020600001611a5190919063ffffffff16565b905092915050565b6000610d818260066000868152602001908152602001600020600001611a6b90919063ffffffff16565b905092915050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e215780601f10610df657610100808354040283529160200191610e21565b820191906000526020600020905b815481529060010190602001808311610e0457829003601f168201915b5050505050905090565b610e5c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610e5761115a565b610d57565b610ece576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000081525060200191505060405180910390fd5b610ed88282611a9b565b5050565b6000801b81565b6000610fa6610ef061115a565b84610fa1856040518060600160405280602581526020016120a36025913960016000610f1a61115a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161a9092919063ffffffff16565b611162565b6001905092915050565b6000610fc4610fbd61115a565b8484611359565b6001905092915050565b6000610fee60066000848152602001908152602001600020600001611c5f565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b611040600660008481526020019081526020016000206002015461103b61115a565b610d57565b611095576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611fe16030913960400191505060405180910390fd5b61109f828261176e565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000611152836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611c74565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061207f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561126e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611f996022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061205a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611465576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611f256023913960400191505060405180910390fd5b611470838383611ce4565b6114db81604051806060016040528060268152602001611fbb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061156e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461180290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561168c578082015181840152602081019050611671565b50505050905090810190601f1680156116b95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b611702816006600085815260200190815260200160002060000161112a90919063ffffffff16565b1561176a5761170f61115a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6117968160066000858152602001908152602001600020600001611ce990919063ffffffff16565b156117fe576117a361115a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080828401905083811015611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561192d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61193960008383611ce4565b61194e8160025461180290919063ffffffff16565b6002819055506119a5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461180290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611a608360000183611d19565b60001c905092915050565b6000611a93836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611d9c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120396021913960400191505060405180910390fd5b611b2d82600083611ce4565b611b9881604051806060016040528060228152602001611f77602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bef81600254611dbf90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611c6d82600001611e09565b9050919050565b6000611c808383611d9c565b611cd9578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611cde565b600090505b92915050565b505050565b6000611d11836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611e1a565b905092915050565b600081836000018054905011611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611f036022913960400191505060405180910390fd5b826000018281548110611d8957fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000611e0183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061161a565b905092915050565b600081600001805490509050919050565b60008083600101600084815260200190815260200160002054905060008114611ef65760006001820390506000600186600001805490500390506000866000018281548110611e6557fe5b9060005260206000200154905080876000018481548110611e8257fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480611eba57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611efc565b60009150505b9291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220a3971de797ad1fb303f73787f2d6e3b4974d2b8e40aa1ada06a49e027b1df24864736f6c63430007060033

Deployed ByteCode Sourcemap

16846:674:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13073:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13927:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13350:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14104:321;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10370:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10492:227;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13259:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10965:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14433:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17145:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13458:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10224:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9942:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13164:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17337:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9576:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14659:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13585:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10089:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16903:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10727:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13768:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13073:83;13110:13;13143:5;13136:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13073:83;:::o;13927:169::-;14010:4;14027:39;14036:12;:10;:12::i;:::-;14050:7;14059:6;14027:8;:39::i;:::-;14084:4;14077:11;;13927:169;;;;:::o;13350:100::-;13403:7;13430:12;;13423:19;;13350:100;:::o;14104:321::-;14210:4;14227:36;14237:6;14245:9;14256:6;14227:9;:36::i;:::-;14274:121;14283:6;14291:12;:10;:12::i;:::-;14305:89;14343:6;14305:89;;;;;;;;;;;;;;;;;:11;:19;14317:6;14305:19;;;;;;;;;;;;;;;:33;14325:12;:10;:12::i;:::-;14305:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14274:8;:121::i;:::-;14413:4;14406:11;;14104:321;;;;;:::o;10370:114::-;10427:7;10454:6;:12;10461:4;10454:12;;;;;;;;;;;:22;;;10447:29;;10370:114;;;:::o;10492:227::-;10576:45;10584:6;:12;10591:4;10584:12;;;;;;;;;;;:22;;;10608:12;:10;:12::i;:::-;10576:7;:45::i;:::-;10568:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10686:25;10697:4;10703:7;10686:10;:25::i;:::-;10492:227;;:::o;13259:83::-;13300:5;13325:9;;;;;;;;;;;13318:16;;13259:83;:::o;10965:209::-;11063:12;:10;:12::i;:::-;11052:23;;:7;:23;;;11044:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11140:26;11152:4;11158:7;11140:11;:26::i;:::-;10965:209;;:::o;14433:218::-;14521:4;14538:83;14547:12;:10;:12::i;:::-;14561:7;14570:50;14609:10;14570:11;:25;14582:12;:10;:12::i;:::-;14570:25;;;;;;;;;;;;;;;:34;14596:7;14570:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;14538:8;:83::i;:::-;14639:4;14632:11;;14433:218;;;;:::o;17145:180::-;17221:34;16941:24;17242:12;:10;:12::i;:::-;17221:7;:34::i;:::-;17213:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17300:17;17306:2;17310:6;17300:5;:17::i;:::-;17145:180;;:::o;13458:119::-;13524:7;13551:9;:18;13561:7;13551:18;;;;;;;;;;;;;;;;13544:25;;13458:119;;;:::o;10224:138::-;10297:7;10324:30;10348:5;10324:6;:12;10331:4;10324:12;;;;;;;;;;;:20;;:23;;:30;;;;:::i;:::-;10317:37;;10224:138;;;;:::o;9942:139::-;10011:4;10035:38;10065:7;10035:6;:12;10042:4;10035:12;;;;;;;;;;;:20;;:29;;:38;;;;:::i;:::-;10028:45;;9942:139;;;;:::o;13164:87::-;13203:13;13236:7;13229:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13164:87;:::o;17337:180::-;17413:34;16941:24;17434:12;:10;:12::i;:::-;17413:7;:34::i;:::-;17405:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17492:17;17498:2;17502:6;17492:5;:17::i;:::-;17337:180;;:::o;9576:49::-;9621:4;9576:49;;;:::o;14659:269::-;14752:4;14769:129;14778:12;:10;:12::i;:::-;14792:7;14801:96;14840:15;14801:96;;;;;;;;;;;;;;;;;:11;:25;14813:12;:10;:12::i;:::-;14801:25;;;;;;;;;;;;;;;:34;14827:7;14801:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;14769:8;:129::i;:::-;14916:4;14909:11;;14659:269;;;;:::o;13585:175::-;13671:4;13688:42;13698:12;:10;:12::i;:::-;13712:9;13723:6;13688:9;:42::i;:::-;13748:4;13741:11;;13585:175;;;;:::o;10089:127::-;10152:7;10179:29;:6;:12;10186:4;10179:12;;;;;;;;;;;:20;;:27;:29::i;:::-;10172:36;;10089:127;;;:::o;16903:62::-;16941:24;16903:62;:::o;10727:230::-;10812:45;10820:6;:12;10827:4;10820:12;;;;;;;;;;;:22;;;10844:12;:10;:12::i;:::-;10812:7;:45::i;:::-;10804:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10923:26;10935:4;10941:7;10923:11;:26::i;:::-;10727:230;;:::o;13768:151::-;13857:7;13884:11;:18;13896:5;13884:18;;;;;;;;;;;;;;;:27;13903:7;13884:27;;;;;;;;;;;;;;;;13877:34;;13768:151;;;;:::o;2396:143::-;2466:4;2490:41;2495:3;:10;;2523:5;2515:14;;2507:23;;2490:4;:41::i;:::-;2483:48;;2396:143;;;;:::o;8927:106::-;8980:15;9015:10;9008:17;;8927:106;:::o;16295:346::-;16414:1;16397:19;;:5;:19;;;;16389:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16495:1;16476:21;;:7;:21;;;;16468:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16579:6;16549:11;:18;16561:5;16549:18;;;;;;;;;;;;;;;:27;16568:7;16549:27;;;;;;;;;;;;;;;:36;;;;16617:7;16601:32;;16610:5;16601:32;;;16626:6;16601:32;;;;;;;;;;;;;;;;;;16295:346;;;:::o;14936:539::-;15060:1;15042:20;;:6;:20;;;;15034:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15144:1;15123:23;;:9;:23;;;;15115:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15199:47;15220:6;15228:9;15239:6;15199:20;:47::i;:::-;15279:71;15301:6;15279:71;;;;;;;;;;;;;;;;;:9;:17;15289:6;15279:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;15259:9;:17;15269:6;15259:17;;;;;;;;;;;;;;;:91;;;;15384:32;15409:6;15384:9;:20;15394:9;15384:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15361:9;:20;15371:9;15361:20;;;;;;;;;;;;;;;:55;;;;15449:9;15432:35;;15441:6;15432:35;;;15460:6;15432:35;;;;;;;;;;;;;;;;;;14936:539;;;:::o;7699:192::-;7785:7;7818:1;7813;:6;;7821:12;7805:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7845:9;7861:1;7857;:5;7845:17;;7882:1;7875:8;;;7699:192;;;;;:::o;11509:188::-;11583:33;11608:7;11583:6;:12;11590:4;11583:12;;;;;;;;;;;:20;;:24;;:33;;;;:::i;:::-;11579:111;;;11665:12;:10;:12::i;:::-;11638:40;;11656:7;11638:40;;11650:4;11638:40;;;;;;;;;;11579:111;11509:188;;:::o;11705:192::-;11780:36;11808:7;11780:6;:12;11787:4;11780:12;;;;;;;;;;;:20;;:27;;:36;;;;:::i;:::-;11776:114;;;11865:12;:10;:12::i;:::-;11838:40;;11856:7;11838:40;;11850:4;11838:40;;;;;;;;;;11776:114;11705:192;;:::o;7366:181::-;7424:7;7444:9;7460:1;7456;:5;7444:17;;7485:1;7480;:6;;7472:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7538:1;7531:8;;;7366:181;;;;:::o;15483:378::-;15586:1;15567:21;;:7;:21;;;;15559:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15637:49;15666:1;15670:7;15679:6;15637:20;:49::i;:::-;15714:24;15731:6;15714:12;;:16;;:24;;;;:::i;:::-;15699:12;:39;;;;15770:30;15793:6;15770:9;:18;15780:7;15770:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;15749:9;:18;15759:7;15749:18;;;;;;;;;;;;;;;:51;;;;15837:7;15816:37;;15833:1;15816:37;;;15846:6;15816:37;;;;;;;;;;;;;;;;;;15483:378;;:::o;2999:149::-;3073:7;3116:22;3120:3;:10;;3132:5;3116:3;:22::i;:::-;3108:31;;3093:47;;2999:149;;;;:::o;2708:158::-;2788:4;2812:46;2822:3;:10;;2850:5;2842:14;;2834:23;;2812:9;:46::i;:::-;2805:53;;2708:158;;;;:::o;15869:418::-;15972:1;15953:21;;:7;:21;;;;15945:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16025:49;16046:7;16063:1;16067:6;16025:20;:49::i;:::-;16108:68;16131:6;16108:68;;;;;;;;;;;;;;;;;:9;:18;16118:7;16108:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;16087:9;:18;16097:7;16087:18;;;;;;;;;;;;;;;:89;;;;16202:24;16219:6;16202:12;;:16;;:24;;;;:::i;:::-;16187:12;:39;;;;16268:1;16242:37;;16251:7;16242:37;;;16272:6;16242:37;;;;;;;;;;;;;;;;;;15869:418;;:::o;2874:117::-;2937:7;2964:19;2972:3;:10;;2964:7;:19::i;:::-;2957:26;;2874:117;;;:::o;217:291::-;280:4;302:21;312:3;317:5;302:9;:21::i;:::-;297:204;;340:3;:11;;357:5;340:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:3;:11;;:18;;;;378:3;:12;;:19;391:5;378:19;;;;;;;;;;;:40;;;;440:4;433:11;;;;297:204;484:5;477:12;;217:291;;;;;:::o;16747:92::-;;;;:::o;2547:149::-;2620:4;2644:44;2652:3;:10;;2680:5;2672:14;;2664:23;;2644:7;:44::i;:::-;2637:51;;2547:149;;;;:::o;1390:204::-;1457:7;1506:5;1485:3;:11;;:18;;;;:26;1477:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:3;:11;;1580:5;1568:18;;;;;;;;;;;;;;;;1561:25;;1390:204;;;;:::o;1132:129::-;1205:4;1252:1;1229:3;:12;;:19;1242:5;1229:19;;;;;;;;;;;;:24;;1222:31;;1132:129;;;;:::o;7555:136::-;7613:7;7640:43;7644:1;7647;7640:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7633:50;;7555:136;;;;:::o;1273:109::-;1329:7;1356:3;:11;;:18;;;;1349:25;;1273:109;;;:::o;516:608::-;582:4;599:18;620:3;:12;;:19;633:5;620:19;;;;;;;;;;;;599:40;;670:1;656:10;:15;652:465;;688:21;725:1;712:10;:14;688:38;;741:17;782:1;761:3;:11;;:18;;;;:22;741:42;;800:17;820:3;:11;;832:9;820:22;;;;;;;;;;;;;;;;800:42;;888:9;859:3;:11;;871:13;859:26;;;;;;;;;;;;;;;:38;;;;954:1;938:13;:17;912:3;:12;;:23;925:9;912:23;;;;;;;;;;;:43;;;;972:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;1013:3;:12;;:19;1026:5;1013:19;;;;;;;;;;;1006:26;;;1056:4;1049:11;;;;;;;;652:465;1100:5;1093:12;;;516:608;;;;;:::o

Swarm Source

ipfs://a3971de797ad1fb303f73787f2d6e3b4974d2b8e40aa1ada06a49e027b1df248
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.