Contract 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d6

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x5875df92546c7e7c8c7ace9a9790374c2c47e5c39ed688f4c07a45142aa5f605Set Shogun Base ...130217002022-05-26 23:55:106 mins ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000362247204 ETH
0x0923fe917f16d56aa90c4bebe353f291c4475abda0035d4e4fb4bfeb4059cf42Set Shogun Base ...130072762022-05-26 17:02:046 hrs 59 mins ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.0003983983 ETH
0xc69f264ec57e4de7a01c4a4f1ef612e80daef6c292a4be983ac191c3d887a0a3Set Shogun Base ...130035142022-05-26 15:46:028 hrs 15 mins ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000381379358 ETH
0xf67fca6579dffef48ddca3e2c7c2873d9512f4e2e4b3a53c6f0885345f6feb13Set Shogun Base ...130034992022-05-26 15:46:028 hrs 15 mins ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000380689244 ETH
0x2abe0194eb4326fda845b635355830feb45f518e262354d6ccb837510007152dSet Shogun Base ...129991462022-05-26 14:21:419 hrs 39 mins ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.00038068301 ETH
0x044f2992b3363875aeec6c8fcc4f3b2a79542f83745df06bb264aa7eb8abfe36Set Shogun Base ...129986532022-05-26 14:13:429 hrs 47 mins ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000381376237 ETH
0x0b9731e64a7e0543304143c44be2b622cb24b4ad203cd8bfefd6e479c0529729Set Shogun Base ...129887512022-05-26 11:28:0912 hrs 33 mins ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000341466982 ETH
0xc4a99b06c0aa7a5599f045041cb56b798565c945b81ea5e7d1cd1eb66791f7afSet Shogun Base ...129819212022-05-26 9:23:1714 hrs 37 mins ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000352488324 ETH
0x3435c23f3d839bd3a32fd87db75774cf96967ca6c700bbe0066d8937bbf6e884Set Shogun Base ...129676942022-05-26 5:02:1118 hrs 58 mins ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000268107385 ETH
0xf8c5f4291e257c39bfcbbaf98f70c7d33b360aa54b3db2a9ee39944900da5398Set Shogun Base ...129676832022-05-26 5:02:1118 hrs 58 mins ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.00026811908 ETH
0x346346eb96e0231477b8ff2941bce9fa01acaf9780dd463ed9e8ac7bd6b48fa2Set Shogun Base ...129567402022-05-25 23:59:401 day 1 min ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.0002863411 ETH
0x95022512eee6c7296342d20477b21774e3669dde4ff7dc35f85004fa9aa74b31Set Shogun Base ...129560032022-05-25 23:30:511 day 30 mins ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000286340343 ETH
0xf39732905e9477bc951fc975746f17465bde092e894c3e3b9efd4d9510f2fcaeSet Shogun Base ...129544002022-05-25 22:27:021 day 1 hr ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000285814256 ETH
0xebf362f933b5c942d7cf9d5bc3c93224aa2a8853ff584131cd87b0db41adf0f8Set Shogun Base ...129530972022-05-25 21:47:261 day 2 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000292007189 ETH
0x3d42f8a66b04b3a46697a776ffb71d6319f805dc13474dd9c68c4e47413b079aSet Shogun Base ...129516632022-05-25 20:53:251 day 3 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000292526672 ETH
0x28f9370fef00197c07bd7f5fe6c189bbb4b0be4285fd7376d31fd958abd82500Set Shogun Base ...129480602022-05-25 19:01:511 day 4 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000231534771 ETH
0xd3ade0aaa59983663a22791635d06de8478b9e5c7bfc7f7f86c0fd4b6ba781acSet Shogun Base ...129473502022-05-25 18:44:401 day 5 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000231121616 ETH
0x8686937466b19d528a58c82a9e9b4d24e57cc19277cde469e4c390d9fb4b5abfSet Shogun Base ...129465032022-05-25 18:24:021 day 5 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000230690712 ETH
0x18cf9bd9997634d9d06754bd75d191307e3f970bc2fcc6196c7c50b7eec6bfadSet Shogun Base ...129463822022-05-25 18:19:391 day 5 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000231532935 ETH
0x471b5ea6657f76e8fe2266ef946789ed73e6dcb1084e1d4771a5afe10ade5ab1Set Shogun Base ...129449872022-05-25 17:57:421 day 6 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000231535383 ETH
0x2b8137647404287b5146133683f52200edf956c54dc0e550aaa8f42d39124dd9Set Shogun Base ...129415602022-05-25 16:24:141 day 7 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000173145739 ETH
0x8879e7c0640aabd394d73737d0e472ca4454aed31ff5c3866bc2294f86ac609bSet Shogun Base ...129415492022-05-25 16:23:471 day 7 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000173141834 ETH
0x6947812fc8152cbaad8b11b2541d42fcd160b89514d09426217f9eaf09a7121cSet Shogun Base ...129415352022-05-25 16:23:471 day 7 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000173794411 ETH
0x0dfad5595714abd6ca7f1332c37c09c6b1c25523afa97504321df995d3c26a42Set Shogun Base ...129385672022-05-25 15:19:091 day 8 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.00017345836 ETH
0xfee1a681ffad32247ee27b597d4422c66af6a7cb7cbd56f5c6adc83828e91647Set Shogun Base ...129385552022-05-25 15:19:091 day 8 hrs ago0xb5034ff8051110b51dc3fcd778c461b5eb1d9b4d IN  0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH0.000173467318 ETH
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x18b693e472a67e863c74f0abd306bda4597d1fdb86ea5c02185281c09b3c9d1a130216982022-05-26 23:55:106 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x16233a2e886dd449d655d7e2eebe71ce14a70e56067e6c62b99cadfdcef182d5130186702022-05-26 22:23:391 hr 37 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0xaa696a29058c2c323b9af0e987ec4f1a5662fb80d537e19a7244c30ffbf85a29130186662022-05-26 22:23:391 hr 37 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0xaa696a29058c2c323b9af0e987ec4f1a5662fb80d537e19a7244c30ffbf85a29130186662022-05-26 22:23:391 hr 37 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x3c6614f4f5d4110a4fe6f44323ce366c659dfabb5200ea7c898544f1e779dedf130186602022-05-26 22:23:391 hr 37 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x3c6614f4f5d4110a4fe6f44323ce366c659dfabb5200ea7c898544f1e779dedf130186602022-05-26 22:23:391 hr 37 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x3c6614f4f5d4110a4fe6f44323ce366c659dfabb5200ea7c898544f1e779dedf130186602022-05-26 22:23:391 hr 37 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x3c6614f4f5d4110a4fe6f44323ce366c659dfabb5200ea7c898544f1e779dedf130186602022-05-26 22:23:391 hr 37 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x4a0913bef47a279f6a8ca75fb96108f5d42bcc03ee067b2be450895f76789827130166562022-05-26 21:11:472 hrs 49 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x4a0913bef47a279f6a8ca75fb96108f5d42bcc03ee067b2be450895f76789827130166562022-05-26 21:11:472 hrs 49 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x4a0913bef47a279f6a8ca75fb96108f5d42bcc03ee067b2be450895f76789827130166562022-05-26 21:11:472 hrs 49 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x4a0913bef47a279f6a8ca75fb96108f5d42bcc03ee067b2be450895f76789827130166562022-05-26 21:11:472 hrs 49 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0xfd72d6c62427d90563dfeffb697b5c989a7fe6ff7acadabcbbaa4906422735a6130151872022-05-26 20:33:153 hrs 27 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x0c93df8d2ff4a7b403fc796b627c1307760b69e963169ea33174ebbbcb3f4309130151802022-05-26 20:33:153 hrs 27 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x0c93df8d2ff4a7b403fc796b627c1307760b69e963169ea33174ebbbcb3f4309130151802022-05-26 20:33:153 hrs 27 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0xc937315306e929155fb39eba8ed45c0931b155983ba0fed005280a821a0e0629130099402022-05-26 18:15:505 hrs 45 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0xaa82f9f13012aaa8faf7096af88a70392322388de98fd9d575d775204f6018d3130099342022-05-26 18:15:505 hrs 45 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0xaa82f9f13012aaa8faf7096af88a70392322388de98fd9d575d775204f6018d3130099342022-05-26 18:15:505 hrs 45 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x55b584722e74ad60c1a3d1383d70de3d8ac689a8ffc8daac44cb4b7e2beff4bf130072662022-05-26 17:02:046 hrs 59 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x5be5246aa50032585348186ddc29ebaba7bcbbff52b8e54ca1ad3a29176ad3eb130037952022-05-26 15:53:098 hrs 8 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0xa12e058f2fe1c9c1c491387951a4cac769c97cc40061276a309618318c76aab8130037902022-05-26 15:53:098 hrs 8 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0xa12e058f2fe1c9c1c491387951a4cac769c97cc40061276a309618318c76aab8130037902022-05-26 15:53:098 hrs 8 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x5b9b89226fd8a7bc530d55bd864ee884dd7a249d67e65223989c7bc3a7b814df130035102022-05-26 15:46:028 hrs 15 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0x1290084e0e027f723c73606340c0327b939a2a53b94012130881ebb8ee546b28130034912022-05-26 15:45:558 hrs 15 mins ago 0xdf90be8484989685feadef1c6e4c9948a681cb6a 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
0xa31f8118355aa8863e10a90b3fa6809d7c8bd8f115df983f09ffa8bd876e1fd0130002902022-05-26 14:39:359 hrs 21 mins ago 0xcd24787c45ea8571975c9172052cdd78bd0a61fc 0x9d13a34bfd6ac40716cc9840f65da01cd8c9d7d60 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ShogunStats

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 100 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan on 2022-05-09
*/

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

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

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)

pragma solidity ^0.8.0;

/**
 * @dev External interface of AccessControl declared to support ERC165 detection.
 */
interface IAccessControl {
    /**
     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
     *
     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
     * {RoleAdminChanged} not being emitted signaling this.
     *
     * _Available since v3.1._
     */
    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

    /**
     * @dev Emitted when `account` is granted `role`.
     *
     * `sender` is the account that originated the contract call, an admin role
     * bearer except when using {AccessControl-_setupRole}.
     */
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Emitted when `account` is revoked `role`.
     *
     * `sender` is the account that originated the contract call:
     *   - if using `revokeRole`, it is the admin role bearer
     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)
     */
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) external view returns (bool);

    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {AccessControl-_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) external view returns (bytes32);

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function grantRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function revokeRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been granted `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `account`.
     */
    function renounceRole(bytes32 role, address account) external;
}


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


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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 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) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


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


// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}


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


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


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


// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}


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


// OpenZeppelin Contracts v4.4.1 (access/AccessControl.sol)

pragma solidity ^0.8.0;




/**
 * @dev Contract module that allows children to implement role-based access
 * control mechanisms. This is a lightweight version that doesn't allow enumerating role
 * members except through off-chain means by accessing the contract event logs. Some
 * applications may benefit from on-chain enumerability, for those cases see
 * {AccessControlEnumerable}.
 *
 * Roles are referred to by their `bytes32` identifier. These should be exposed
 * in the external API and be unique. The best way to achieve this is by
 * using `public constant` hash digests:
 *
 * ```
 * bytes32 public constant MY_ROLE = keccak256("MY_ROLE");
 * ```
 *
 * Roles can be used to represent a set of permissions. To restrict access to a
 * function call, use {hasRole}:
 *
 * ```
 * function foo() public {
 *     require(hasRole(MY_ROLE, msg.sender));
 *     ...
 * }
 * ```
 *
 * Roles can be granted and revoked dynamically via the {grantRole} and
 * {revokeRole} functions. Each role has an associated admin role, and only
 * accounts that have a role's admin role can call {grantRole} and {revokeRole}.
 *
 * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means
 * that only accounts with this role will be able to grant or revoke other
 * roles. More complex role relationships can be created by using
 * {_setRoleAdmin}.
 *
 * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to
 * grant and revoke this role. Extra precautions should be taken to secure
 * accounts that have been granted it.
 */
abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {
        mapping(address => bool) members;
        bytes32 adminRole;
    }

    mapping(bytes32 => RoleData) private _roles;

    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    /**
     * @dev Modifier that checks that an account has a specific role. Reverts
     * with a standardized message including the required role.
     *
     * The format of the revert reason is given by the following regular expression:
     *
     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
     *
     * _Available since v4.1._
     */
    modifier onlyRole(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
    }

    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].members[account];
    }

    /**
     * @dev Revert with a standard message if `account` is missing `role`.
     *
     * The format of the revert reason is given by the following regular expression:
     *
     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
     */
    function _checkRole(bytes32 role, address account) internal view {
        if (!hasRole(role, account)) {
            revert(
                string(
                    abi.encodePacked(
                        "AccessControl: account ",
                        Strings.toHexString(uint160(account), 20),
                        " is missing role ",
                        Strings.toHexString(uint256(role), 32)
                    )
                )
            );
        }
    }

    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {
        return _roles[role].adminRole;
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _grantRole(role, account);
    }

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _revokeRole(role, account);
    }

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been revoked `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `account`.
     */
    function renounceRole(bytes32 role, address account) public virtual override {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event. Note that unlike {grantRole}, this function doesn't perform any
     * checks on the calling account.
     *
     * [WARNING]
     * ====
     * This function should only be called from the constructor when setting
     * up the initial roles for the system.
     *
     * Using this function in any other way is effectively circumventing the admin
     * system imposed by {AccessControl}.
     * ====
     *
     * NOTE: This function is deprecated in favor of {_grantRole}.
     */
    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    /**
     * @dev Sets `adminRole` as ``role``'s admin role.
     *
     * Emits a {RoleAdminChanged} event.
     */
    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        bytes32 previousAdminRole = getRoleAdmin(role);
        _roles[role].adminRole = adminRole;
        emit RoleAdminChanged(role, previousAdminRole, adminRole);
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * Internal function without access restriction.
     */
    function _grantRole(bytes32 role, address account) internal virtual {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    /**
     * @dev Revokes `role` from `account`.
     *
     * Internal function without access restriction.
     */
    function _revokeRole(bytes32 role, address account) internal virtual {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}


// File contracts/ClansClasses/Control.sol


pragma solidity 0.8.7;

abstract contract Control is AccessControl {
    bytes32 public constant SHOGUN_OWNER_ROLE = keccak256("SHOGUN_OWNER_ROLE");

    modifier onlyOwner() {
        require(hasRole(SHOGUN_OWNER_ROLE, _msgSender()), "MinterControl: not a SHOGUN_OWNER_ROLE");
        _;
    }

    constructor() {
        _setRoleAdmin(SHOGUN_OWNER_ROLE, SHOGUN_OWNER_ROLE);
        _setupRole(SHOGUN_OWNER_ROLE, _msgSender());
    }

    function grantOwner(address _owner) external {
        grantRole(SHOGUN_OWNER_ROLE, _owner);
    }

    function isOwner(address _owner) public view returns (bool) {
        return hasRole(SHOGUN_OWNER_ROLE, _owner);
    }
}


// File contracts/ShogunStats/ShogunStats.sol


pragma solidity 0.8.7;

contract ShogunStats is Control {

    // health tracking
    mapping(uint256 => uint256) public shogunMaxHealth;
    mapping(uint256 => uint256) public shogunCurrentHealth;

    // attack tracking
    mapping(uint256 => uint256) public shogunAttack;

    mapping(uint256 => uint256) public shogunAttackBuff;
    mapping(uint256 => uint256) public shogunAttackExpiry;

    // defense tracking
    mapping(uint256 => uint256) public shogunDefense;

    mapping(uint256 => uint256) public shogunDefenseBuff;
    mapping(uint256 => uint256) public shogunDefenseExpiry;

    // shogun initated
    mapping(uint256 => bool) public shogunInitiated;

    event ShogunBaseStats(uint256 tokenId, uint256 maxHealth, uint256 health, uint256 attack, uint256 defense);
    event ShogunHealthUpdate(uint256 tokenId, uint256 health);

    event ShogunAttackBuffUpdate(uint256 tokenId, uint256 attackBuff, uint256 buffExpiry);
    event ShogunDefenseBuffUpdate(uint256 tokenId, uint256 defenseBuff, uint256 buffExpiry);

    function setShogunBaseStats(uint256 tokenId, uint256 maxHealth, uint256 health, uint256 attack, uint256 defense) external onlyOwner {
        // set max health
        shogunMaxHealth[tokenId] = maxHealth;
        // set current health
        shogunCurrentHealth[tokenId] = health;
        // set attack power
        shogunAttack[tokenId] = attack;
        // set defense power
        shogunDefense[tokenId] = defense;

        shogunInitiated[tokenId] = true;

        emit ShogunBaseStats(tokenId, maxHealth, health, attack, defense);
    }

    function setShogunHealth(uint256 tokenId, uint256 health) external onlyOwner {
        // update current health
        shogunCurrentHealth[tokenId] = health;

        emit ShogunHealthUpdate(tokenId, health);
    }

    function setShogunAttackBuff(uint256 tokenId, uint256 attackBuff, uint256 buffExpiry) external onlyOwner {
        shogunAttackBuff[tokenId] = attackBuff;
        shogunAttackExpiry[tokenId] = buffExpiry;

        emit ShogunAttackBuffUpdate(tokenId, attackBuff, buffExpiry);
    }

    function setShogunDefenseBuff(uint256 tokenId, uint256 defenseBuff, uint256 buffExpiry) external onlyOwner {
        shogunDefenseBuff[tokenId] = defenseBuff;
        shogunDefenseExpiry[tokenId] = buffExpiry;

        emit ShogunDefenseBuffUpdate(tokenId, defenseBuff, buffExpiry);
    }

    function getShogunAttackBuff(uint256 shogunId) public view returns (uint256) {
        if (block.timestamp > shogunAttackExpiry[shogunId]) {
            return 0;
        }

        return shogunAttackBuff[shogunId];
    }

    function getShogunDefenseBuff(uint256 shogunId) public view returns (uint256) {
        if (block.timestamp > shogunDefenseExpiry[shogunId]) {
            return 0;
        }

        return shogunDefenseBuff[shogunId];
    }
}

Contract ABI

[{"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":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"attackBuff","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buffExpiry","type":"uint256"}],"name":"ShogunAttackBuffUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxHealth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"health","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"attack","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"defense","type":"uint256"}],"name":"ShogunBaseStats","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"defenseBuff","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buffExpiry","type":"uint256"}],"name":"ShogunDefenseBuffUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"health","type":"uint256"}],"name":"ShogunHealthUpdate","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SHOGUN_OWNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shogunId","type":"uint256"}],"name":"getShogunAttackBuff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shogunId","type":"uint256"}],"name":"getShogunDefenseBuff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"grantOwner","outputs":[],"stateMutability":"nonpayable","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":"_owner","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"attackBuff","type":"uint256"},{"internalType":"uint256","name":"buffExpiry","type":"uint256"}],"name":"setShogunAttackBuff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"maxHealth","type":"uint256"},{"internalType":"uint256","name":"health","type":"uint256"},{"internalType":"uint256","name":"attack","type":"uint256"},{"internalType":"uint256","name":"defense","type":"uint256"}],"name":"setShogunBaseStats","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"defenseBuff","type":"uint256"},{"internalType":"uint256","name":"buffExpiry","type":"uint256"}],"name":"setShogunDefenseBuff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"health","type":"uint256"}],"name":"setShogunHealth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shogunAttack","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shogunAttackBuff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shogunAttackExpiry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shogunCurrentHealth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shogunDefense","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shogunDefenseBuff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shogunDefenseExpiry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shogunInitiated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shogunMaxHealth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50610029600080516020610f9483398151915280610046565b610041600080516020610f9483398151915233610091565b61013d565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b61009b828261009f565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661009b576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556100f93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610e488061014c6000396000f3fe608060405234801561001057600080fd5b50600436106101635760003560e01c80635c0b364b116100ce578063a217fddf11610087578063a217fddf14610346578063a4d36b021461034e578063b4b661591461036e578063c0f262501461038e578063d547741f146103a1578063dc978059146103b4578063fccf81da146103c757600080fd5b80635c0b364b14610290578063626b8e1f146102b05780636c27bc0c146102d05780636efaaed2146102f357806391d14854146103135780639ac610fa1461032657600080fd5b80632f54bf6e116101205780632f54bf6e1461021c57806336568abe1461022f578063489773451461024257806348a8d08d1461025557806349ab216c1461026857806356e24e831461027d57600080fd5b806301ffc9a714610168578063127084ea146101905780631565fce0146101a5578063248a9ca3146101d35780632c3c916a146101f65780632f2ff15d14610209575b600080fd5b61017b610176366004610b97565b6103e7565b60405190151581526020015b60405180910390f35b6101a361019e366004610c0f565b61041e565b005b6101c56101b3366004610b52565b60026020526000908152604090205481565b604051908152602001610187565b6101c56101e1366004610b52565b60009081526020819052604090206001015490565b6101a3610204366004610bc1565b6104f4565b6101a3610217366004610b6b565b610577565b61017b61022a366004610b37565b6105a2565b6101a361023d366004610b6b565b6105bc565b6101a3610250366004610be3565b61063a565b6101a3610263366004610be3565b6106d1565b6101c5600080516020610df383398151915281565b6101c561028b366004610b52565b61075f565b6101c561029e366004610b52565b60016020526000908152604090205481565b6101c56102be366004610b52565b60076020526000908152604090205481565b61017b6102de366004610b52565b60096020526000908152604090205460ff1681565b6101c5610301366004610b52565b60066020526000908152604090205481565b61017b610321366004610b6b565b610790565b6101c5610334366004610b52565b60046020526000908152604090205481565b6101c5600081565b6101c561035c366004610b52565b60056020526000908152604090205481565b6101c561037c366004610b52565b60036020526000908152604090205481565b6101c561039c366004610b52565b6107b9565b6101a36103af366004610b6b565b6107ea565b6101a36103c2366004610b37565b610810565b6101c56103d5366004610b52565b60086020526000908152604090205481565b60006001600160e01b03198216637965db0b60e01b148061041857506301ffc9a760e01b6001600160e01b03198316145b92915050565b610436600080516020610df383398151915233610790565b61045b5760405162461bcd60e51b815260040161045290610cec565b60405180910390fd5b60008581526001602081815260408084208890556002825280842087905560038252808420869055600682528084208590556009825292839020805460ff1916909217909155815187815290810186905290810184905260608101839052608081018290527f8fea9023f0d81258665d413a635fa09dd3390cdce9183c26daf715df66836ff09060a00160405180910390a15050505050565b61050c600080516020610df383398151915233610790565b6105285760405162461bcd60e51b815260040161045290610cec565b60008281526002602090815260409182902083905581518481529081018390527fc936750d6378e3636c40e16fe79fb1b6269872961dcaeb98572ebf33e84321ec910160405180910390a15050565b600082815260208190526040902060010154610593813361082b565b61059d838361088f565b505050565b6000610418600080516020610df383398151915283610790565b6001600160a01b038116331461062c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610452565b6106368282610913565b5050565b610652600080516020610df383398151915233610790565b61066e5760405162461bcd60e51b815260040161045290610cec565b6000838152600760209081526040808320859055600882529182902083905581518581529081018490529081018290527f92bb75318b5029257e2e8068271a057321a9986bec830eef277a605dedd93549906060015b60405180910390a1505050565b6106e9600080516020610df383398151915233610790565b6107055760405162461bcd60e51b815260040161045290610cec565b6000838152600460209081526040808320859055600582529182902083905581518581529081018490529081018290527fce88a1261c70694213f02209ea85da291c0dc126bb6a66cfad2576b5ac4c07b3906060016106c4565b60008181526005602052604081205442111561077d57506000919050565b5060009081526004602052604090205490565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6000818152600860205260408120544211156107d757506000919050565b5060009081526007602052604090205490565b600082815260208190526040902060010154610806813361082b565b61059d8383610913565b610828600080516020610df383398151915282610577565b50565b6108358282610790565b6106365761084d816001600160a01b03166014610978565b610858836020610978565b604051602001610869929190610c4a565b60408051601f198184030181529082905262461bcd60e51b825261045291600401610cb9565b6108998282610790565b610636576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556108cf3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61091d8282610790565b15610636576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606000610987836002610d4a565b610992906002610d32565b67ffffffffffffffff8111156109aa576109aa610ddc565b6040519080825280601f01601f1916602001820160405280156109d4576020820181803683370190505b509050600360fc1b816000815181106109ef576109ef610dc6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610a1e57610a1e610dc6565b60200101906001600160f81b031916908160001a9053506000610a42846002610d4a565b610a4d906001610d32565b90505b6001811115610ac5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610a8157610a81610dc6565b1a60f81b828281518110610a9757610a97610dc6565b60200101906001600160f81b031916908160001a90535060049490941c93610abe81610d99565b9050610a50565b508315610b145760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610452565b9392505050565b80356001600160a01b0381168114610b3257600080fd5b919050565b600060208284031215610b4957600080fd5b610b1482610b1b565b600060208284031215610b6457600080fd5b5035919050565b60008060408385031215610b7e57600080fd5b82359150610b8e60208401610b1b565b90509250929050565b600060208284031215610ba957600080fd5b81356001600160e01b031981168114610b1457600080fd5b60008060408385031215610bd457600080fd5b50508035926020909101359150565b600080600060608486031215610bf857600080fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215610c2757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351610c7c816017850160208801610d69565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351610cad816028840160208801610d69565b01602801949350505050565b6020815260008251806020840152610cd8816040850160208701610d69565b601f01601f19169190910160400192915050565b60208082526026908201527f4d696e746572436f6e74726f6c3a206e6f7420612053484f47554e5f4f574e45604082015265525f524f4c4560d01b606082015260800190565b60008219821115610d4557610d45610db0565b500190565b6000816000190483118215151615610d6457610d64610db0565b500290565b60005b83811015610d84578181015183820152602001610d6c565b83811115610d93576000848401525b50505050565b600081610da857610da8610db0565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfef786c657c1afc7b60c0316a9881b42c6c8b080b437e91b362ae43d19e14911b5a264697066735822122097ed7b503cc1b49c2bca36d580e759bfe5991842aafc8f273cb08bc10307053364736f6c63430008070033f786c657c1afc7b60c0316a9881b42c6c8b080b437e91b362ae43d19e14911b5

Deployed ByteCode Sourcemap

16498:2895:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10717:204;;;;;;:::i;:::-;;:::i;:::-;;;3292:14:1;;3285:22;3267:41;;3255:2;3240:18;10717:204:0;;;;;;;;17534:558;;;;;;:::i;:::-;;:::i;:::-;;16620:54;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;3465:25:1;;;3453:2;3438:18;16620:54:0;3319:177:1;12128:123:0;;;;;;:::i;:::-;12194:7;12221:12;;;;;;;;;;:22;;;;12128:123;18100:220;;;;;;:::i;:::-;;:::i;12513:147::-;;;;;;:::i;:::-;;:::i;16292:120::-;;;;;;:::i;:::-;;:::i;13561:218::-;;;;;;:::i;:::-;;:::i;18622:293::-;;;;;;:::i;:::-;;:::i;18328:286::-;;;;;;:::i;:::-;;:::i;15804:74::-;;-1:-1:-1;;;;;;;;;;;15804:74:0;;18923:228;;;;;;:::i;:::-;;:::i;16563:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;16965:52;;;;;;:::i;:::-;;;;;;;;;;;;;;17111:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16908:48;;;;;;:::i;:::-;;;;;;;;;;;;;;11013:139;;;;;;:::i;:::-;;:::i;16763:51::-;;;;;;:::i;:::-;;;;;;;;;;;;;;10104:49;;10149:4;10104:49;;16821:53;;;;;;:::i;:::-;;;;;;;;;;;;;;16707:47;;;;;;:::i;:::-;;;;;;;;;;;;;;19159:231;;;;;;:::i;:::-;;:::i;12905:149::-;;;;;;:::i;:::-;;:::i;16184:100::-;;;;;;:::i;:::-;;:::i;17024:54::-;;;;;;:::i;:::-;;;;;;;;;;;;;;10717:204;10802:4;-1:-1:-1;;;;;;10826:47:0;;-1:-1:-1;;;10826:47:0;;:87;;-1:-1:-1;;;;;;;;;;8080:40:0;;;10877:36;10819:94;10717:204;-1:-1:-1;;10717:204:0:o;17534:558::-;15927:40;-1:-1:-1;;;;;;;;;;;3909:10:0;11013:139;:::i;15927:40::-;15919:91;;;;-1:-1:-1;;;15919:91:0;;;;;;;:::i;:::-;;;;;;;;;17704:24:::1;::::0;;;:15:::1;:24;::::0;;;;;;;:36;;;17782:19:::1;:28:::0;;;;;:37;;;17859:12:::1;:21:::0;;;;;:30;;;17930:13:::1;:22:::0;;;;;:32;;;17975:15:::1;:24:::0;;;;;;:31;;-1:-1:-1;;17975:31:0::1;::::0;;::::1;::::0;;;18024:60;;6091:25:1;;;6132:18;;;6125:34;;;6175:18;;;6168:34;;;6233:2;6218:18;;6211:34;;;6276:3;6261:19;;6254:35;;;18024:60:0::1;::::0;6078:3:1;6063:19;18024:60:0::1;;;;;;;17534:558:::0;;;;;:::o;18100:220::-;15927:40;-1:-1:-1;;;;;;;;;;;3909:10:0;11013:139;:::i;15927:40::-;15919:91;;;;-1:-1:-1;;;15919:91:0;;;;;;;:::i;:::-;18222:28:::1;::::0;;;:19:::1;:28;::::0;;;;;;;;:37;;;18277:35;;5429:25:1;;;5470:18;;;5463:34;;;18277:35:0::1;::::0;5402:18:1;18277:35:0::1;;;;;;;18100:220:::0;;:::o;12513:147::-;12194:7;12221:12;;;;;;;;;;:22;;;10595:30;10606:4;3909:10;10595;:30::i;:::-;12627:25:::1;12638:4;12644:7;12627:10;:25::i;:::-;12513:147:::0;;;:::o;16292:120::-;16346:4;16370:34;-1:-1:-1;;;;;;;;;;;16397:6:0;16370:7;:34::i;13561:218::-;-1:-1:-1;;;;;13657:23:0;;3909:10;13657:23;13649:83;;;;-1:-1:-1;;;13649:83:0;;4859:2:1;13649:83:0;;;4841:21:1;4898:2;4878:18;;;4871:30;4937:34;4917:18;;;4910:62;-1:-1:-1;;;4988:18:1;;;4981:45;5043:19;;13649:83:0;4657:411:1;13649:83:0;13745:26;13757:4;13763:7;13745:11;:26::i;:::-;13561:218;;:::o;18622:293::-;15927:40;-1:-1:-1;;;;;;;;;;;3909:10:0;11013:139;:::i;15927:40::-;15919:91;;;;-1:-1:-1;;;15919:91:0;;;;;;;:::i;:::-;18740:26:::1;::::0;;;:17:::1;:26;::::0;;;;;;;:40;;;18791:19:::1;:28:::0;;;;;;:41;;;18850:57;;5710:25:1;;;5751:18;;;5744:34;;;5794:18;;;5787:34;;;18850:57:0::1;::::0;5698:2:1;5683:18;18850:57:0::1;;;;;;;;18622:293:::0;;;:::o;18328:286::-;15927:40;-1:-1:-1;;;;;;;;;;;3909:10:0;11013:139;:::i;15927:40::-;15919:91;;;;-1:-1:-1;;;15919:91:0;;;;;;;:::i;:::-;18444:25:::1;::::0;;;:16:::1;:25;::::0;;;;;;;:38;;;18493:18:::1;:27:::0;;;;;;:40;;;18551:55;;5710:25:1;;;5751:18;;;5744:34;;;5794:18;;;5787:34;;;18551:55:0::1;::::0;5698:2:1;5683:18;18551:55:0::1;5508:319:1::0;18923:228:0;18991:7;19033:28;;;:18;:28;;;;;;19015:15;:46;19011:87;;;-1:-1:-1;19085:1:0;;18923:228;-1:-1:-1;18923:228:0:o;19011:87::-;-1:-1:-1;19117:26:0;;;;:16;:26;;;;;;;18923:228::o;11013:139::-;11091:4;11115:12;;;;;;;;;;;-1:-1:-1;;;;;11115:29:0;;;;;;;;;;;;;;;11013:139::o;19159:231::-;19228:7;19270:29;;;:19;:29;;;;;;19252:15;:47;19248:88;;;-1:-1:-1;19323:1:0;;19159:231;-1:-1:-1;19159:231:0:o;19248:88::-;-1:-1:-1;19355:27:0;;;;:17;:27;;;;;;;19159:231::o;12905:149::-;12194:7;12221:12;;;;;;;;;;:22;;;10595:30;10606:4;3909:10;10595;:30::i;:::-;13020:26:::1;13032:4;13038:7;13020:11;:26::i;16184:100::-:0;16240:36;-1:-1:-1;;;;;;;;;;;16269:6:0;16240:9;:36::i;:::-;16184:100;:::o;11442:497::-;11523:22;11531:4;11537:7;11523;:22::i;:::-;11518:414;;11711:41;11739:7;-1:-1:-1;;;;;11711:41:0;11749:2;11711:19;:41::i;:::-;11825:38;11853:4;11860:2;11825:19;:38::i;:::-;11616:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11616:270:0;;;;;;;;;;-1:-1:-1;;;11562:358:0;;;;;;;:::i;15062:238::-;15146:22;15154:4;15160:7;15146;:22::i;:::-;15141:152;;15185:6;:12;;;;;;;;;;;-1:-1:-1;;;;;15185:29:0;;;;;;;;;:36;;-1:-1:-1;;15185:36:0;15217:4;15185:36;;;15268:12;3909:10;;3829:98;15268:12;-1:-1:-1;;;;;15241:40:0;15259:7;-1:-1:-1;;;;;15241:40:0;15253:4;15241:40;;;;;;;;;;15062:238;;:::o;15432:239::-;15516:22;15524:4;15530:7;15516;:22::i;:::-;15512:152;;;15587:5;15555:12;;;;;;;;;;;-1:-1:-1;;;;;15555:29:0;;;;;;;;;;:37;;-1:-1:-1;;15555:37:0;;;15612:40;3909:10;;15555:12;;15612:40;;15587:5;15612:40;15432:239;;:::o;5717:451::-;5792:13;5818:19;5850:10;5854:6;5850:1;:10;:::i;:::-;:14;;5863:1;5850:14;:::i;:::-;5840:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5840:25:0;;5818:47;;-1:-1:-1;;;5876:6:0;5883:1;5876:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;5876:15:0;;;;;;;;;-1:-1:-1;;;5902:6:0;5909:1;5902:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;5902:15:0;;;;;;;;-1:-1:-1;5933:9:0;5945:10;5949:6;5945:1;:10;:::i;:::-;:14;;5958:1;5945:14;:::i;:::-;5933:26;;5928:135;5965:1;5961;:5;5928:135;;;-1:-1:-1;;;6013:5:0;6021:3;6013:11;6000:25;;;;;;;:::i;:::-;;;;5988:6;5995:1;5988:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;5988:37:0;;;;;;;;-1:-1:-1;6050:1:0;6040:11;;;;;5968:3;;;:::i;:::-;;;5928:135;;;-1:-1:-1;6081:10:0;;6073:55;;;;-1:-1:-1;;;6073:55:0;;4091:2:1;6073:55:0;;;4073:21:1;;;4110:18;;;4103:30;4169:34;4149:18;;;4142:62;4221:18;;6073:55:0;3889:356:1;6073:55:0;6153:6;5717:451;-1:-1:-1;;;5717:451:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:180::-;442:6;495:2;483:9;474:7;470:23;466:32;463:52;;;511:1;508;501:12;463:52;-1:-1:-1;534:23:1;;383:180;-1:-1:-1;383:180:1:o;568:254::-;636:6;644;697:2;685:9;676:7;672:23;668:32;665:52;;;713:1;710;703:12;665:52;749:9;736:23;726:33;;778:38;812:2;801:9;797:18;778:38;:::i;:::-;768:48;;568:254;;;;;:::o;827:286::-;885:6;938:2;926:9;917:7;913:23;909:32;906:52;;;954:1;951;944:12;906:52;980:23;;-1:-1:-1;;;;;;1032:32:1;;1022:43;;1012:71;;1079:1;1076;1069:12;1303:248;1371:6;1379;1432:2;1420:9;1411:7;1407:23;1403:32;1400:52;;;1448:1;1445;1438:12;1400:52;-1:-1:-1;;1471:23:1;;;1541:2;1526:18;;;1513:32;;-1:-1:-1;1303:248:1:o;1556:316::-;1633:6;1641;1649;1702:2;1690:9;1681:7;1677:23;1673:32;1670:52;;;1718:1;1715;1708:12;1670:52;-1:-1:-1;;1741:23:1;;;1811:2;1796:18;;1783:32;;-1:-1:-1;1862:2:1;1847:18;;;1834:32;;1556:316;-1:-1:-1;1556:316:1:o;1877:454::-;1972:6;1980;1988;1996;2004;2057:3;2045:9;2036:7;2032:23;2028:33;2025:53;;;2074:1;2071;2064:12;2025:53;-1:-1:-1;;2097:23:1;;;2167:2;2152:18;;2139:32;;-1:-1:-1;2218:2:1;2203:18;;2190:32;;2269:2;2254:18;;2241:32;;-1:-1:-1;2320:3:1;2305:19;2292:33;;-1:-1:-1;1877:454:1;-1:-1:-1;1877:454:1:o;2336:786::-;-1:-1:-1;;;2742:3:1;2735:38;2717:3;2802:6;2796:13;2818:62;2873:6;2868:2;2863:3;2859:12;2852:4;2844:6;2840:17;2818:62;:::i;:::-;-1:-1:-1;;;2939:2:1;2899:16;;;2931:11;;;2924:40;2989:13;;3011:63;2989:13;3060:2;3052:11;;3045:4;3033:17;;3011:63;:::i;:::-;3094:17;3113:2;3090:26;;2336:786;-1:-1:-1;;;;2336:786:1:o;3501:383::-;3650:2;3639:9;3632:21;3613:4;3682:6;3676:13;3725:6;3720:2;3709:9;3705:18;3698:34;3741:66;3800:6;3795:2;3784:9;3780:18;3775:2;3767:6;3763:15;3741:66;:::i;:::-;3868:2;3847:15;-1:-1:-1;;3843:29:1;3828:45;;;;3875:2;3824:54;;3501:383;-1:-1:-1;;3501:383:1:o;4250:402::-;4452:2;4434:21;;;4491:2;4471:18;;;4464:30;4530:34;4525:2;4510:18;;4503:62;-1:-1:-1;;;4596:2:1;4581:18;;4574:36;4642:3;4627:19;;4250:402::o;6300:128::-;6340:3;6371:1;6367:6;6364:1;6361:13;6358:39;;;6377:18;;:::i;:::-;-1:-1:-1;6413:9:1;;6300:128::o;6433:168::-;6473:7;6539:1;6535;6531:6;6527:14;6524:1;6521:21;6516:1;6509:9;6502:17;6498:45;6495:71;;;6546:18;;:::i;:::-;-1:-1:-1;6586:9:1;;6433:168::o;6606:258::-;6678:1;6688:113;6702:6;6699:1;6696:13;6688:113;;;6778:11;;;6772:18;6759:11;;;6752:39;6724:2;6717:10;6688:113;;;6819:6;6816:1;6813:13;6810:48;;;6854:1;6845:6;6840:3;6836:16;6829:27;6810:48;;6606:258;;;:::o;6869:136::-;6908:3;6936:5;6926:39;;6945:18;;:::i;:::-;-1:-1:-1;;;6981:18:1;;6869:136::o;7010:127::-;7071:10;7066:3;7062:20;7059:1;7052:31;7102:4;7099:1;7092:15;7126:4;7123:1;7116:15;7142:127;7203:10;7198:3;7194:20;7191:1;7184:31;7234:4;7231:1;7224:15;7258:4;7255:1;7248:15;7274:127;7335:10;7330:3;7326:20;7323:1;7316:31;7366:4;7363:1;7356:15;7390:4;7387:1;7380:15

Swarm Source

ipfs://97ed7b503cc1b49c2bca36d580e759bfe5991842aafc8f273cb08bc103070533
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.