Contract 0x55c97492b62cbbc8b62c6756cacd9d4580d11de7

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xfe5fb0b0644cdc908682eb7b77d9b2e822ec091b87dbbef168532d112b2be509Zap In Token52145822023-09-29 9:26:2411 hrs 35 mins ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000419865
0x4e32c72f2ab43208ac93d6275cfb0007b4fbe09aabd0ec62611aa9d296bbe134Zap In Token52109922023-09-28 21:22:1223 hrs 39 mins ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000419865
0xb5db8e9f8c74b5cea4a78a1b213d889761b465a251d899d27170ea34ce7c1a63Zap In Token52073892023-09-28 9:17:241 day 11 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000419865
0xc42150fa852e4d7393b2c6f4a733c106df0351f4bd599a95e880b9fa5615f464Zap In Token52035522023-09-27 20:25:182 days 36 mins ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000419865
0x3fae8b49ece10c6101e1b6762f62e6fd51074a2991a9846dede8c69bdcf5660fZap In Token51974262023-09-26 23:56:182 days 21 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000419865
0x890fde70c524c56a5bdbd0cf46d2c1ed0069cbefc3bad0b30cb4ce68bdbcb4dcZap In Token51942812023-09-26 13:22:483 days 7 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000419865
0x05a09881fe1ddf026f10fc28d209c977188eb10c5fa114e9b8fc4dfde007c3bfZap In51906912023-09-26 1:21:063 days 19 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.1 MOVR0.000420155
0x3235a84798b3dcce6e37287b69183fc6e829fbba58e8e77f83717c534927f631Zap In Token51906872023-09-26 1:20:183 days 19 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000419865
0x864fcd1a2eee106371c609715d53cfa980bff7553070bc7705d2ca5864675e58Zap In Token51867712023-09-25 12:12:064 days 8 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000419865
0xf216c8feb4a4ec5b202d0de2b54a05edb94a84b76e812f32087621db7cbdc6fcZap In Token51835582023-09-25 1:21:244 days 19 hrs ago0x6fce66cec282cefaf2ce8daf7b819bc5a0e616b1 IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000419865
0x3f28886d160688b0ffc9efbd1e4eb66830384a0049e61790953fcf13bda855bfZap In Token51828292023-09-24 22:55:064 days 22 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000419865
0x4d1b1a8dfcd8aa22e727e780a54952c98fe32499a90eb5cd580c0e24e9245cc7Zap In Token51787772023-09-24 9:18:065 days 11 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000419865
0x59d4b1cef76dc1f9f40cb831a0630066306531f9c478812b4112e20e94b8ddb8Zap In Token51759692023-09-23 23:53:305 days 21 hrs ago0x1205e860bfff779443140b7e039f6ed7c84dad80 IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000443225
0x6d5d3862e657f993367e4a961d0a4789ceb5ee317987dd9147f8e99d09f9502bZap In Token51759522023-09-23 23:50:045 days 21 hrs ago0x1205e860bfff779443140b7e039f6ed7c84dad80 IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000443225
0x64bb6b35d9a4a0f5fa82f469dfb021fcc54d99a64c48469108a15231eb5c00a8Zap In Token51757642023-09-23 23:12:125 days 21 hrs ago0x1205e860bfff779443140b7e039f6ed7c84dad80 IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.00044351333
0x44a0e6cf508431af2afdbe6f4bece9242d7867110e0e222e6341dd639d897a1cZap In Token51757512023-09-23 23:09:365 days 21 hrs ago0x1205e860bfff779443140b7e039f6ed7c84dad80 IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.00044351333
0xc4bb5d3b63fcf326ac7e23110e9a9356e8f9830a5e45e18f3149876636ebc170Zap In Token51751832023-09-23 21:13:305 days 23 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.00041405
0x23c7f41d4d36c64bbd1bd3dc3cfc8075b21b72302155e925741a6f7a4c6b5beaZap In Token51712872023-09-23 8:10:006 days 12 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.00041405
0xa8761bd1ba01c3f02a4897535f5809be81bd21529918678844369d43cfc516dcZap In Token51681742023-09-22 21:42:546 days 23 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000415062869
0x4982aff966bc7aa690593106fda1a808b2dec211799f5f5a1a2c45ac82b0c5f8Zap In Token51645752023-09-22 9:39:547 days 11 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.00041405
0x1bcc329c87207533f77b0521e64a45547802961dd118fe389905c2805f5271f1Zap In Token51609662023-09-21 21:34:187 days 23 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.000417606049
0x90027d45fe918246d251365e77a97af2560efe8945f5fb8799214cdcfcccd242Zap In Token51573732023-09-21 9:32:308 days 11 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.00041405
0x06b2ba541e9744ebdfcdb38c66ef1cb9029b2b5de9d28d3e051dcdbc9ccea24aZap In Token51540452023-09-20 22:23:368 days 22 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.00041405
0x78084b8721050b5aa298b6b35dfa60249b38b3984a0b7169c0b039edb9304921Zap In Token51504592023-09-20 10:22:069 days 10 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.00041405
0xdb41a9203ff8e31fef6da89a36b3add43107683733b7a1d0b3293d02575f7070Zap In Token51468312023-09-19 22:12:429 days 22 hrs ago0x1a0a3d955bf6bef759f3ce077ad695cb93780e5e IN  0x55c97492b62cbbc8b62c6756cacd9d4580d11de70 MOVR0.00041405
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x05a09881fe1ddf026f10fc28d209c977188eb10c5fa114e9b8fc4dfde007c3bf51906912023-09-26 1:21:063 days 19 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000123749136355478 MOVR
0x18bf803221468604df1f65961e8d500edc6ad21b2eaf9db5bee17cbe4e41fdbd51325192023-09-17 22:10:4211 days 22 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000123719739640401 MOVR
0xc676275714356e0b558fe29955f4f27636395c7d3da4a2863a53cd17ad668ed717609572022-04-29 21:01:30518 days ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000007016843229733 MOVR
0xac7cda526b450ebf7438bfe05211e805ca0ec4f011c4e3c426d4b50ea58d770c17609562022-04-29 21:01:00518 days 1 min ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.002052471800926142 MOVR
0xed0666dad303fae92db83c343c5df689adb8bf0fa3aa970e9e9d635063bd54d217591072022-04-29 9:01:48518 days 12 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000012913940268736 MOVR
0x5a1299accea7c57a0052b73c92467e99cf12e5e311d726f3d044a1ffa6f5f5a517591062022-04-29 9:01:12518 days 12 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.003775465491300771 MOVR
0x4186324ea16dab26abf8d32aafc2d52397d9172b9ba2bfe5a85932889df7a03617572732022-04-28 21:01:24519 days ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000013097920818114 MOVR
0x62e356580fb5a94f5bb601092b03e95fdf0988e970bbc38689cc83842f07221517572712022-04-28 21:00:54519 days 1 min ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.00382560076568802 MOVR
0x9c18ef09965bb288f74a0c0444a44cc356cbe3cdf22f7117bc41a1f2b324781717554262022-04-28 9:01:48519 days 12 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000013361861638169 MOVR
0xfc90be66a4016c9c65cab75c0dcdbf58d34216aca6eebf0dae682854476000f817554252022-04-28 9:01:24519 days 12 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.003907424280045981 MOVR
0xe080b69c4215509d3b84956a533e08972c4cd4b1935481f83926ed50b174989817535392022-04-27 21:01:42520 days ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000013026869342316 MOVR
0xdb5bef111887a2e70e50b37e74a57b88f35ab8481c0ba414d2ca8161881b434417535372022-04-27 21:01:06520 days 1 min ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.003807964606780481 MOVR
0x5e36c2bb888575a8c2c746ede1683f46055b5ef99cd516213b60a4126e39bcc917517112022-04-27 9:01:30520 days 12 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000012282802124186 MOVR
0x8b583b884f620feeb3c1202dfb46b79108cd4aadf7c6785638b465e35f84687117517092022-04-27 9:00:48520 days 12 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.003589297846920528 MOVR
0x839b4773d7780eb074f32a29c80af681fcc13c0635a6c3206c1c8792f83a107e17498452022-04-26 21:03:24520 days 23 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000312646868192429 MOVR
0x839b4773d7780eb074f32a29c80af681fcc13c0635a6c3206c1c8792f83a107e17498452022-04-26 21:03:24520 days 23 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.254842543095930893 MOVR
0x839b4773d7780eb074f32a29c80af681fcc13c0635a6c3206c1c8792f83a107e17498452022-04-26 21:03:24520 days 23 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000310723770845582 MOVR
0x839b4773d7780eb074f32a29c80af681fcc13c0635a6c3206c1c8792f83a107e17498452022-04-26 21:03:24520 days 23 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.253245457960923597 MOVR
0x1c9580b7cdab6b7eac5c13cfffe6aa910bb19d46a36c7be3c1cc74824c6be60e17498412022-04-26 21:01:42521 days ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000009123560239396 MOVR
0xe0dcf57060bd81e5dddcd910c0f5dac35afde0d16a46ee1ef81f11f8d4598d7217498392022-04-26 21:01:06521 days 1 min ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.002685170531852564 MOVR
0x8e570f0d872f5678e2a501f948049ca2608628346bc8cf53d949d27116971cbf17479892022-04-26 9:01:12521 days 12 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000009019342898254 MOVR
0x28f111e1cf0e9540656f15be5dc42350717b1879274745adcaf952bf837d5e8417479872022-04-26 9:00:42521 days 12 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.002681017203031823 MOVR
0x85c044bc7f7effc21f093e417b1179650211790a0538fc55b5276f4e2409a02c17461022022-04-25 21:01:18522 days ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.00000893498657894 MOVR
0xa4b9d3077cec9e398d100c43c26d68b99f56143dfe7615769632acd45bb1a11b17461012022-04-25 21:00:54522 days 1 min ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.002661926026623512 MOVR
0xc5971b1b316bf714cd4ce8ce3c4b4ad6e1c5302423cd73ed66688b057c2128fa17442452022-04-25 9:03:42522 days 11 hrs ago Solarbeam: Solar Router 0x55c97492b62cbbc8b62c6756cacd9d4580d11de70.000066999050919755 MOVR
[ Download CSV Export 
Index Block
Loading

Similar Match Source Code
This contract matches the deployed ByteCode of the Source Code for Contract 0x5150892Cb710f06f31Ed3ba9C26E8F3b0cD9BBcE
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : TransparentUpgradeableProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../ERC1967/ERC1967Proxy.sol";

/**
 * @dev This contract implements a proxy that is upgradeable by an admin.
 *
 * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector
 * clashing], which can potentially be used in an attack, this contract uses the
 * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two
 * things that go hand in hand:
 *
 * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if
 * that call matches one of the admin functions exposed by the proxy itself.
 * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the
 * implementation. If the admin tries to call a function on the implementation it will fail with an error that says
 * "admin cannot fallback to proxy target".
 *
 * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing
 * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due
 * to sudden errors when trying to call a function from the proxy implementation.
 *
 * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,
 * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.
 */
contract TransparentUpgradeableProxy is ERC1967Proxy {
    /**
     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and
     * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.
     */
    constructor(
        address _logic,
        address admin_,
        bytes memory _data
    ) payable ERC1967Proxy(_logic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _changeAdmin(admin_);
    }

    /**
     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
     */
    modifier ifAdmin() {
        if (msg.sender == _getAdmin()) {
            _;
        } else {
            _fallback();
        }
    }

    /**
     * @dev Returns the current admin.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.
     *
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
     */
    function admin() external ifAdmin returns (address admin_) {
        admin_ = _getAdmin();
    }

    /**
     * @dev Returns the current implementation.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.
     *
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`
     */
    function implementation() external ifAdmin returns (address implementation_) {
        implementation_ = _implementation();
    }

    /**
     * @dev Changes the admin of the proxy.
     *
     * Emits an {AdminChanged} event.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.
     */
    function changeAdmin(address newAdmin) external virtual ifAdmin {
        _changeAdmin(newAdmin);
    }

    /**
     * @dev Upgrade the implementation of the proxy.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.
     */
    function upgradeTo(address newImplementation) external ifAdmin {
        _upgradeToAndCall(newImplementation, bytes(""), false);
    }

    /**
     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified
     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the
     * proxied contract.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.
     */
    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {
        _upgradeToAndCall(newImplementation, data, true);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view virtual returns (address) {
        return _getAdmin();
    }

    /**
     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.
     */
    function _beforeFallback() internal virtual override {
        require(msg.sender != _getAdmin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

File 2 of 7 : ERC1967Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../Proxy.sol";
import "./ERC1967Upgrade.sol";

/**
 * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
 * implementation address that can be changed. This address is stored in storage in the location specified by
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
 * implementation behind the proxy.
 */
contract ERC1967Proxy is Proxy, ERC1967Upgrade {
    /**
     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.
     *
     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded
     * function call, and allows initializating the storage of the proxy like a Solidity constructor.
     */
    constructor(address _logic, bytes memory _data) payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _upgradeToAndCall(_logic, _data, false);
    }

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal view virtual override returns (address impl) {
        return ERC1967Upgrade._getImplementation();
    }
}

File 3 of 7 : Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 *
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 *
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    /**
     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal view virtual returns (address);

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _fallback() internal virtual {
        _beforeFallback();
        _delegate(_implementation());
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
     * function in the contract matches the call data.
     */
    fallback() external payable virtual {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive() external payable virtual {
        _fallback();
    }

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     *
     * If overriden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {}
}

File 4 of 7 : ERC1967Upgrade.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.2;

import "../beacon/IBeacon.sol";
import "../../utils/Address.sol";
import "../../utils/StorageSlot.sol";

/**
 * @dev This abstract contract provides getters and event emitting update functions for
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
 *
 * _Available since v4.1._
 *
 * @custom:oz-upgrades-unsafe-allow delegatecall
 */
abstract contract ERC1967Upgrade {
    // This is the keccak-256 hash of "eip1967.proxy.rollback" subtracted by 1
    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;

    /**
     * @dev Storage slot with the address of the current implementation.
     * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Emitted when the implementation is upgraded.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Returns the current implementation address.
     */
    function _getImplementation() internal view returns (address) {
        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
    }

    /**
     * @dev Perform implementation upgrade
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Perform implementation upgrade with additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCall(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        _upgradeTo(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }
    }

    /**
     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCallSecure(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        address oldImplementation = _getImplementation();

        // Initial upgrade and setup call
        _setImplementation(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }

        // Perform rollback test if not already in progress
        StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT);
        if (!rollbackTesting.value) {
            // Trigger rollback using upgradeTo from the new implementation
            rollbackTesting.value = true;
            Address.functionDelegateCall(
                newImplementation,
                abi.encodeWithSignature("upgradeTo(address)", oldImplementation)
            );
            rollbackTesting.value = false;
            // Check rollback was effective
            require(oldImplementation == _getImplementation(), "ERC1967Upgrade: upgrade breaks further upgrades");
            // Finally reset to the new implementation and log the upgrade
            _upgradeTo(newImplementation);
        }
    }

    /**
     * @dev Storage slot with the admin of the contract.
     * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Emitted when the admin account has changed.
     */
    event AdminChanged(address previousAdmin, address newAdmin);

    /**
     * @dev Returns the current admin.
     */
    function _getAdmin() internal view returns (address) {
        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 admin slot.
     */
    function _setAdmin(address newAdmin) private {
        require(newAdmin != address(0), "ERC1967: new admin is the zero address");
        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;
    }

    /**
     * @dev Changes the admin of the proxy.
     *
     * Emits an {AdminChanged} event.
     */
    function _changeAdmin(address newAdmin) internal {
        emit AdminChanged(_getAdmin(), newAdmin);
        _setAdmin(newAdmin);
    }

    /**
     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.
     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.
     */
    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;

    /**
     * @dev Emitted when the beacon is upgraded.
     */
    event BeaconUpgraded(address indexed beacon);

    /**
     * @dev Returns the current beacon.
     */
    function _getBeacon() internal view returns (address) {
        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;
    }

    /**
     * @dev Stores a new beacon in the EIP1967 beacon slot.
     */
    function _setBeacon(address newBeacon) private {
        require(Address.isContract(newBeacon), "ERC1967: new beacon is not a contract");
        require(
            Address.isContract(IBeacon(newBeacon).implementation()),
            "ERC1967: beacon implementation is not a contract"
        );
        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;
    }

    /**
     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does
     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).
     *
     * Emits a {BeaconUpgraded} event.
     */
    function _upgradeBeaconToAndCall(
        address newBeacon,
        bytes memory data,
        bool forceCall
    ) internal {
        _setBeacon(newBeacon);
        emit BeaconUpgraded(newBeacon);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
        }
    }
}

File 5 of 7 : IBeacon.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev This is the interface that {BeaconProxy} expects of its beacon.
 */
interface IBeacon {
    /**
     * @dev Must return an address that can be used as a delegate call target.
     *
     * {BeaconProxy} will check that this address is a contract.
     */
    function implementation() external view returns (address);
}

File 6 of 7 : Address.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

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

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

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

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

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

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    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);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 7 of 7 : StorageSlot.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Library for reading and writing primitive types to specific storage slots.
 *
 * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
 * This library helps with reading and writing to such slots without the need for inline assembly.
 *
 * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
 *
 * Example usage to set ERC1967 implementation slot:
 * ```
 * contract ERC1967 {
 *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
 *
 *     function _getImplementation() internal view returns (address) {
 *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
 *     }
 *
 *     function _setImplementation(address newImplementation) internal {
 *         require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
 *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
 *     }
 * }
 * ```
 *
 * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._
 */
library StorageSlot {
    struct AddressSlot {
        address value;
    }

    struct BooleanSlot {
        bool value;
    }

    struct Bytes32Slot {
        bytes32 value;
    }

    struct Uint256Slot {
        uint256 value;
    }

    /**
     * @dev Returns an `AddressSlot` with member `value` located at `slot`.
     */
    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.
     */
    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
     */
    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.
     */
    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
        assembly {
            r.slot := slot
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260405162000f3938038062000f398339810160408190526200002691620004c2565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f5565b60008051602062000ef2833981519152146200007557620000756200064a565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f5565b60008051602062000ed283398151915214620000d357620000d36200064a565b620000de8262000124565b50505062000676565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e9838360405180606001604052806027815260200162000f126027913962000381565b9392505050565b60006200021a60008051602062000ed283398151915260001b6200045e60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd60008051602062000ed283398151915260001b6200045e60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046160201b6200028c1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd60008051602062000ef283398151915260001b6200045e60201b620002081760201c565b6060833b620003e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b031685604051620003ff9190620005a2565b600060405180830381855af49150503d80600081146200043c576040519150601f19603f3d011682016040523d82523d6000602084013e62000441565b606091505b5090925090506200045482828662000467565b9695505050505050565b90565b3b151590565b6060831562000478575081620001e9565b825115620004895782518084602001fd5b8160405162461bcd60e51b81526004016200028b9190620005c0565b80516001600160a01b0381168114620004bd57600080fd5b919050565b600080600060608486031215620004d857600080fd5b620004e384620004a5565b9250620004f360208501620004a5565b60408501519092506001600160401b03808211156200051157600080fd5b818601915086601f8301126200052657600080fd5b8151818111156200053b576200053b62000660565b604051601f8201601f19908116603f0116810190838211818310171562000566576200056662000660565b816040528281528960208487010111156200058057600080fd5b620005938360208301602088016200061b565b80955050505050509250925092565b60008251620005b68184602087016200061b565b9190910192915050565b6020815260008251806020840152620005e18160408501602087016200061b565b601f01601f19169190910160400192915050565b6000828210156200061657634e487b7160e01b600052601160045260246000fd5b500390565b60005b83811015620006385781810151838201526020016200061e565b838111156200011d5750506000910152565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61084c80620006866000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106d6565b610118565b61005b6100933660046106f1565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106d6565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610292565b610116610111610331565b61033b565b565b61012061035f565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610392565b50565b6101546100fe565b61016761035f565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610392915050565b505050565b6101c36100fe565b60006101da61035f565b6001600160a01b0316336001600160a01b03161415610200576101fb610331565b905090565b6102086100fe565b90565b61021361035f565b6001600160a01b0316336001600160a01b0316141561015757610154816103bd565b600061023f61035f565b6001600160a01b0316336001600160a01b03161415610200576101fb61035f565b606061028583836040518060600160405280602781526020016107f060279139610411565b9392505050565b3b151590565b61029a61035f565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104e5565b3660008037600080366000845af43d6000803e80801561035a573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039b8361050d565b6000825111806103a85750805b156101c3576103b78383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e661035f565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161054d565b6060833b6104705760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610328565b600080856001600160a01b03168560405161048b9190610774565b600060405180830381855af49150503d80600081146104c6576040519150601f19603f3d011682016040523d82523d6000602084013e6104cb565b606091505b50915091506104db8282866105f6565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610383565b6105168161062f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105b25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610328565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610605575081610285565b8251156106155782518084602001fd5b8160405162461bcd60e51b81526004016103289190610790565b803b6106935760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610328565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105d5565b80356001600160a01b03811681146106d157600080fd5b919050565b6000602082840312156106e857600080fd5b610285826106ba565b60008060006040848603121561070657600080fd5b61070f846106ba565b9250602084013567ffffffffffffffff8082111561072c57600080fd5b818601915086601f83011261074057600080fd5b81358181111561074f57600080fd5b87602082850101111561076157600080fd5b6020830194508093505050509250925092565b600082516107868184602087016107c3565b9190910192915050565b60208152600082518060208401526107af8160408501602087016107c3565b601f01601f19169190910160400192915050565b60005b838110156107de5781810151838201526020016107c6565b838111156103b7575050600091015256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220239ebb48c6d66b77afb9c9c3e539e6697290ff841693efa9b8ad698aaa94806b64736f6c63430008070033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000a59dcc559fa32c980a0b360c75699d93418e81ca0000000000000000000000003122eb842e6b8ab53ac88baa8eb293842d59cb0000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000cdb134a8cb98d4b702e9bac2cc4deb33e7ebdba900000000000000000000000000000000000000000000000000000000

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.