Contract 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 2

 

Contract Overview

Balance:
0 ETH

ETH Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc193f53059c608e03e3220880bd94b3f75d2becd392b38a2390726bc000851c8Bulk Stake Battl...271022502022-09-28 2:46:2015 mins ago0xc4e49f2a1623f2b50402a7eb4b438c2d14ff3d01 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00005666
0x3025533f7e1c6e4a6482fb7e653ef800874edcc3cd25f85896c89fa0027fd575Bulk Stake Battl...271008692022-09-28 2:39:1322 mins ago0xc1cc04ffe681e63e99058a419385ca9fbb11b062 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00004143
0x1a2054214d3867f5bdc7d1c8d92d7b079b1f91b30692b124c362ec2d2c575e50Bulk Stake Battl...270641592022-09-27 21:41:245 hrs 20 mins ago0xc4d9b526ff9f1a1036c338991ccce30587f64b9e IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00005272
0x8893c690c8b34960d668438fb9b066d280d19c91e397e8164e6d11030f854f91Bulk Stake Battl...270612432022-09-27 21:08:205 hrs 53 mins ago0x1576d7992762ae6c900ba9a3f15f02ed79d057d1 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00005662
0x820a59dcb6d9a442d58a3ef0506dc31fc4dbaafdb0986934896be4f85d316821Bulk Unstake Bat...270127222022-09-27 15:03:5011 hrs 58 mins ago0x1a41ec571ec8fc815febf81fcbaf9d7f7ec98849 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00008312
0x8cbdfb65bcfd56eee13e4243c6a4260d5d9d96671841c538dbafbe55fed81bf2Bulk Stake Battl...269707572022-09-27 10:56:0716 hrs 6 mins ago0x7b33918967eb8f48983cedcacbe4601cda2681c3 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00004083
0x77ab70990923ce514a10e94f4286f6dcabcef37c00c8c6ea1a9964e2949bd23fBulk Stake Battl...269399482022-09-27 6:55:2020 hrs 6 mins ago0xc4d9b526ff9f1a1036c338991ccce30587f64b9e IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00003739
0xdbf282b44af12f1db6c5538c01e7b762dc5a330a6f12e8bf0d633b6d4d8bf146Bulk Unstake Bat...269283142022-09-27 5:28:5221 hrs 33 mins ago0xc7707bc6ddac11ec714012102d35232ef8cbde11 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00007298
0x6e8f8fadb6a3586672810c8a24424459135942d9672d6981f3c8f3b529f1e9d1Bulk Unstake Bat...269016702022-09-27 2:02:131 day 59 mins ago0x729250be25dc878dd400bf5bef702de77c83493e IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.0000431
0xb942f9affeeda203917c7ad02f1e527da4eb7d1d0e66eaac81b39dc1cb552e4aBulk Unstake Bat...268876162022-09-27 0:01:001 day 3 hrs ago0xad7941220da6d792c79a26bcf2a9c97292f70636 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00005136
0xca7d38918aa888e4504ff59c60391bd7b879f6bf8180921b77a3cc3d7112bf0bBulk Stake Battl...268776652022-09-26 21:38:101 day 5 hrs ago0x3030a69b585122e04d8dd63afb519910a94c84fb IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00007311
0xaa34eba7f8bf305bec57098d7aa4090967e2a47abebab8403a455a7e53ac0d66Bulk Stake Battl...268769732022-09-26 21:28:031 day 5 hrs ago0xd2594436a220e90495cb3066b24d37a8252fac0c IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00005343
0x26f8c33379b5c68b73feaba5aa0937951c0ebacf2dd0b20bc0ca23bc6a340663Bulk Stake Battl...268727062022-09-26 20:27:231 day 6 hrs ago0xc9800cd99a9c3e8adf77fc534af85ff63d16ca1c IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00005912
0x7675352fdc75191bee772aa9eded5e044c3a3f000aca2faca3a58a110e3e4de2Bulk Stake Battl...268615952022-09-26 18:35:591 day 8 hrs ago0x4a9025b24b4936fdd385d0516d3a73c6dc51e45e IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00006665
0xb0ad3dea8016133bcf0fb2a3abb992a456d69799cafafc7611ba14c9d6a80160Bulk Unstake Bat...268589162022-09-26 18:04:411 day 8 hrs ago0xf7803fb259c557673b63c7ae29700d93cb2b73ea IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00007368
0xb4da91b0f7c97a57ed90e7d59febf05abe4ec253358b1f1f33161402cda628e9Bulk Unstake Bat...268589152022-09-26 18:04:391 day 8 hrs ago0xf7803fb259c557673b63c7ae29700d93cb2b73ea IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00009149
0x91573413e09878b0a97d288f053fe9ccb6a8c971728fa7f16d20270aafb395a3Bulk Unstake Bat...268454182022-09-26 16:00:151 day 11 hrs ago0x4f82c7a14540e1b2f6a13d56c77a1cd935a61291 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.0000897
0xdcb18a507e15a85b408871002da1004146fcddeed0e33c183b0f119c6911c8e1Bulk Unstake Bat...268453532022-09-26 15:59:531 day 11 hrs ago0x4f82c7a14540e1b2f6a13d56c77a1cd935a61291 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00009473
0x199cbb8016e0441b5ba73e00245c8a5954c200ca72bc388fa3e50ff5858fe7f5Bulk Unstake Bat...268296522022-09-26 14:28:411 day 12 hrs ago0xab6f914b240d756233c73e2b9d9983bc9ea332de IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00004556
0xe7032f520dbb169c7de01343560553f200a9b16afa4d5006a4f09c258d2768a4Bulk Unstake Bat...268071332022-09-26 12:54:291 day 14 hrs ago0xdd47010ef7a2a7eba078c9a705db9ebb496f1ab7 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00003525
0xe44011c3abb8cb148974a43c127935cc53d097440ede99a6d1edf0baa71d4e12Bulk Unstake Bat...267569532022-09-26 8:04:431 day 18 hrs ago0x0f93dc1cea29ef3ae38f3c49c748276b09fb27dc IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00003543
0x92b869898342058c8a68865c48c051cd7493c4efad5c0d3d816ce35acb71115cBulk Stake Battl...267066332022-09-26 3:36:521 day 23 hrs ago0x837fb38cc1588b32e3f38f162a80b1073acb6301 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00003127
0x23c4d9beb88d18b2acf6a267ff42c39d9b7ae7161951d3c372f281c8084d314bBulk Unstake Bat...266716092022-09-25 22:37:262 days 4 hrs ago0x80aea22fec733335d819766d29bfdbd0823106aa IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00005326
0x08c244f16efec76d01ce08399f40390714b7fd45fcaddf16efcef10b820d3466Bulk Stake Battl...266713072022-09-25 22:34:172 days 4 hrs ago0xecedfe638f467d4b7429f2d945b2b68bc8bdeed7 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00004137
0x1e34192a95e0751c29aff7105b4a13ea1061c55fba474c8c4661318e92d5e6efBulk Stake Battl...266704762022-09-25 22:26:472 days 4 hrs ago0xecedfe638f467d4b7429f2d945b2b68bc8bdeed7 IN  0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH0.00003988
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xc193f53059c608e03e3220880bd94b3f75d2becd392b38a2390726bc000851c8271022502022-09-28 2:46:2015 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4Treasure DAO: Magic Token0 ETH
0xc193f53059c608e03e3220880bd94b3f75d2becd392b38a2390726bc000851c8271022502022-09-28 2:46:2015 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x5f4e08eb6ee4e050092479ded3da77509f64691b0 ETH
0xc193f53059c608e03e3220880bd94b3f75d2becd392b38a2390726bc000851c8271022502022-09-28 2:46:2015 mins ago 0x0af85a5624d24e2c6e7af3c0a0b102a28e36cea3 0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH
0xc193f53059c608e03e3220880bd94b3f75d2becd392b38a2390726bc000851c8271022502022-09-28 2:46:2015 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x0af85a5624d24e2c6e7af3c0a0b102a28e36cea30 ETH
0xc193f53059c608e03e3220880bd94b3f75d2becd392b38a2390726bc000851c8271022502022-09-28 2:46:2015 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x5f4e08eb6ee4e050092479ded3da77509f64691b0 ETH
0xc193f53059c608e03e3220880bd94b3f75d2becd392b38a2390726bc000851c8271022502022-09-28 2:46:2015 mins ago 0x0af85a5624d24e2c6e7af3c0a0b102a28e36cea3 0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH
0xc193f53059c608e03e3220880bd94b3f75d2becd392b38a2390726bc000851c8271022502022-09-28 2:46:2015 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x0af85a5624d24e2c6e7af3c0a0b102a28e36cea30 ETH
0xc193f53059c608e03e3220880bd94b3f75d2becd392b38a2390726bc000851c8271022502022-09-28 2:46:2015 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x5f4e08eb6ee4e050092479ded3da77509f64691b0 ETH
0x3025533f7e1c6e4a6482fb7e653ef800874edcc3cd25f85896c89fa0027fd575271008692022-09-28 2:39:1322 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4Treasure DAO: Magic Token0 ETH
0x3025533f7e1c6e4a6482fb7e653ef800874edcc3cd25f85896c89fa0027fd575271008692022-09-28 2:39:1322 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x5f4e08eb6ee4e050092479ded3da77509f64691b0 ETH
0x3025533f7e1c6e4a6482fb7e653ef800874edcc3cd25f85896c89fa0027fd575271008692022-09-28 2:39:1322 mins ago 0x0af85a5624d24e2c6e7af3c0a0b102a28e36cea3 0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH
0x3025533f7e1c6e4a6482fb7e653ef800874edcc3cd25f85896c89fa0027fd575271008692022-09-28 2:39:1322 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x0af85a5624d24e2c6e7af3c0a0b102a28e36cea30 ETH
0x3025533f7e1c6e4a6482fb7e653ef800874edcc3cd25f85896c89fa0027fd575271008692022-09-28 2:39:1322 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x5f4e08eb6ee4e050092479ded3da77509f64691b0 ETH
0xbbecdf7b566bebf1d21c7837e64c1f87480cf9f21c61333dfcd8f9d36e97dea8270749122022-09-27 23:47:193 hrs 14 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x5f4e08eb6ee4e050092479ded3da77509f64691b0 ETH
0xbbecdf7b566bebf1d21c7837e64c1f87480cf9f21c61333dfcd8f9d36e97dea8270749122022-09-27 23:47:193 hrs 14 mins ago 0x10e49b96a4bb66bef39b27c3a9d81ae19908c65d 0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH
0x1a2054214d3867f5bdc7d1c8d92d7b079b1f91b30692b124c362ec2d2c575e50270641592022-09-27 21:41:245 hrs 20 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4Treasure DAO: Magic Token0 ETH
0x1a2054214d3867f5bdc7d1c8d92d7b079b1f91b30692b124c362ec2d2c575e50270641592022-09-27 21:41:245 hrs 20 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x5f4e08eb6ee4e050092479ded3da77509f64691b0 ETH
0x1a2054214d3867f5bdc7d1c8d92d7b079b1f91b30692b124c362ec2d2c575e50270641592022-09-27 21:41:245 hrs 20 mins ago 0x0af85a5624d24e2c6e7af3c0a0b102a28e36cea3 0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH
0x1a2054214d3867f5bdc7d1c8d92d7b079b1f91b30692b124c362ec2d2c575e50270641592022-09-27 21:41:245 hrs 20 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x0af85a5624d24e2c6e7af3c0a0b102a28e36cea30 ETH
0x1a2054214d3867f5bdc7d1c8d92d7b079b1f91b30692b124c362ec2d2c575e50270641592022-09-27 21:41:245 hrs 20 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x5f4e08eb6ee4e050092479ded3da77509f64691b0 ETH
0x8893c690c8b34960d668438fb9b066d280d19c91e397e8164e6d11030f854f91270612432022-09-27 21:08:205 hrs 53 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4Treasure DAO: Magic Token0 ETH
0x8893c690c8b34960d668438fb9b066d280d19c91e397e8164e6d11030f854f91270612432022-09-27 21:08:205 hrs 53 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x5f4e08eb6ee4e050092479ded3da77509f64691b0 ETH
0x8893c690c8b34960d668438fb9b066d280d19c91e397e8164e6d11030f854f91270612432022-09-27 21:08:205 hrs 53 mins ago 0x0af85a5624d24e2c6e7af3c0a0b102a28e36cea3 0xca1d055331d3a4e74a2ffccff83160699ac1c4b40 ETH
0x8893c690c8b34960d668438fb9b066d280d19c91e397e8164e6d11030f854f91270612432022-09-27 21:08:205 hrs 53 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x0af85a5624d24e2c6e7af3c0a0b102a28e36cea30 ETH
0x8893c690c8b34960d668438fb9b066d280d19c91e397e8164e6d11030f854f91270612432022-09-27 21:08:205 hrs 53 mins ago 0xca1d055331d3a4e74a2ffccff83160699ac1c4b4 0x5f4e08eb6ee4e050092479ded3da77509f64691b0 ETH
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x3393cD223f59F32CC0cC845DE938472595cA48a1

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan on 2021-08-30
*/

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

/**
 * @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;
        // solhint-disable-next-line no-inline-assembly
        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");

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

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

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

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

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

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

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

        // solhint-disable-next-line avoid-low-level-calls
        (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");

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

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

/**
 * @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 {
        _setImplementation(newImplementation);
        emit Upgraded(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
            _setImplementation(newImplementation);
            emit Upgraded(newImplementation);
        }
    }

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

    /**
     * @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 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 {
        // solhint-disable-next-line no-inline-assembly
        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 {
    }
}

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

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

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"}]

608060405260405162000f4038038062000f408339810160408190526200002691620004d4565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd62000603565b60008051602062000ef9833981519152146200008157634e487b7160e01b600052600160045260246000fd5b6200008f82826000620000ff565b50620000bf905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610462000603565b60008051602062000ed983398151915214620000eb57634e487b7160e01b600052600160045260246000fd5b620000f68262000170565b5050506200066c565b6200010a83620001cb565b6040516001600160a01b038416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a26000825111806200014c5750805b156200016b576200016983836200029360201b6200026c1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200019b620002c2565b604080516001600160a01b03928316815291841660208301520160405180910390a1620001c881620002fb565b50565b620001e1816200038b60201b620002981760201c565b620002495760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806200027260008051602062000ef983398151915260001b6200039560201b620002141760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060620002bb838360405180606001604052806027815260200162000f196027913962000398565b9392505050565b6000620002ec60008051602062000ed983398151915260001b6200039560201b620002141760201c565b546001600160a01b0316905090565b6001600160a01b038116620003625760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840162000240565b806200027260008051602062000ed983398151915260001b6200039560201b620002141760201c565b803b15155b919050565b90565b6060620003a5846200038b565b620004025760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000240565b600080856001600160a01b0316856040516200041f9190620005b0565b600060405180830381855af49150503d80600081146200045c576040519150601f19603f3d011682016040523d82523d6000602084013e62000461565b606091505b509092509050620004748282866200047e565b9695505050505050565b606083156200048f575081620002bb565b825115620004a05782518084602001fd5b8160405162461bcd60e51b8152600401620002409190620005ce565b80516001600160a01b03811681146200039057600080fd5b600080600060608486031215620004e9578283fd5b620004f484620004bc565b92506200050460208501620004bc565b60408501519092506001600160401b038082111562000521578283fd5b818601915086601f83011262000535578283fd5b8151818111156200054a576200054a62000656565b604051601f8201601f19908116603f0116810190838211818310171562000575576200057562000656565b816040528281528960208487010111156200058e578586fd5b620005a183602083016020880162000627565b80955050505050509250925092565b60008251620005c481846020870162000627565b9190910192915050565b6000602082528251806020840152620005ef81604085016020870162000627565b601f01601f19169190910160400192915050565b6000828210156200062257634e487b7160e01b81526011600452602481fd5b500390565b60005b83811015620006445781810151838201526020016200062a565b83811115620001695750506000910152565b634e487b7160e01b600052604160045260246000fd5b61085d806200067c6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610707565b610164565b3480156100a457600080fd5b506100ad6101da565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b610217565b3480156100f557600080fd5b506100ad610241565b6101066102a2565b610116610111610346565b610355565b565b610120610379565b6001600160a01b0316336001600160a01b0316141561015957610154816040518060200160405280600081525060006103ac565b610161565b6101616100fe565b50565b61016c610379565b6001600160a01b0316336001600160a01b031614156101cd576101c88383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506103ac915050565b6101d5565b6101d56100fe565b505050565b60006101e4610379565b6001600160a01b0316336001600160a01b0316141561020c57610205610346565b9050610214565b6102146100fe565b90565b61021f610379565b6001600160a01b0316336001600160a01b03161415610159576101548161040b565b600061024b610379565b6001600160a01b0316336001600160a01b0316141561020c57610205610379565b606061029183836040518060600160405280602781526020016108016027913961045f565b9392505050565b803b15155b919050565b6102aa610379565b6001600160a01b0316336001600160a01b031614156103415760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b610116565b600061035061053a565b905090565b3660008037600080366000845af43d6000803e808015610374573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316905090565b6103b583610562565b6040516001600160a01b038416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a26000825111806103f65750805b156101d557610405838361026c565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610434610379565b604080516001600160a01b03928316815291841660208301520160405180910390a161016181610611565b606061046a84610298565b6104c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610338565b600080856001600160a01b0316856040516104e09190610785565b600060405180830381855af49150503d806000811461051b576040519150601f19603f3d011682016040523d82523d6000602084013e610520565b606091505b509150915061053082828661069d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61039d565b61056b81610298565b6105cd5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610338565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381166106765760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610338565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036105f0565b606083156106ac575081610291565b8251156106bc5782518084602001fd5b8160405162461bcd60e51b815260040161033891906107a1565b80356001600160a01b038116811461029d57600080fd5b6000602082840312156106fe578081fd5b610291826106d6565b60008060006040848603121561071b578182fd5b610724846106d6565b9250602084013567ffffffffffffffff80821115610740578384fd5b818601915086601f830112610753578384fd5b813581811115610761578485fd5b876020828501011115610772578485fd5b6020830194508093505050509250925092565b600082516107978184602087016107d4565b9190910192915050565b60006020825282518060208401526107c08160408501602087016107d4565b601f01601f19169190910160400192915050565b60005b838110156107ef5781810151838201526020016107d7565b83811115610405575050600091015256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122093f028255035b61df476b13b9dba3c4f06f60e51b9b4caee31680b389aef327f64736f6c63430008020033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000022f934a1bb68ea7e7893ef8f76249afe904af6ae00000000000000000000000016b321c99ab31a84d565ea484f035693718c3e71000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001641a31d4650000000000000000000000002f2a2543b76a4166549f7aab2e75bef0aefc5b0f000000000000000000000000aa87715e858b482931eb2f6f92e504571588390b0000000000000000000000000944eb1060cbd8a7923b1e7b7a10a17603261d2c00000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c57655069676779205742544300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005705742544300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

23503:3618:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20432:11;:9;:11::i;:::-;23503:3618;;20200:11;:9;:11::i;25934:136::-;;;;;;;;;;-1:-1:-1;25934:136:0;;;;;:::i;:::-;;:::i;26455:166::-;;;;;;:::i;:::-;;:::i;25317:131::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1556:32:1;;;1538:51;;1526:2;1511:18;25317:131:0;;;;;;;25662:105;;;;;;;;;;-1:-1:-1;25662:105:0;;;;;:::i;:::-;;:::i;24748:98::-;;;;;;;;;;;;;:::i;19836:113::-;19885:17;:15;:17::i;:::-;19913:28;19923:17;:15;:17::i;:::-;19913:9;:28::i;:::-;19836:113::o;25934:136::-;24203:11;:9;:11::i;:::-;-1:-1:-1;;;;;24189:25:0;:10;-1:-1:-1;;;;;24189:25:0;;24185:103;;;26008:54:::1;26026:17;26045:9;;;;;;;;;;;::::0;26056:5:::1;26008:17;:54::i;:::-;24185:103:::0;;;24265:11;:9;:11::i;:::-;25934:136;:::o;26455:166::-;24203:11;:9;:11::i;:::-;-1:-1:-1;;;;;24189:25:0;:10;-1:-1:-1;;;;;24189:25:0;;24185:103;;;26565:48:::1;26583:17;26602:4;;26565:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26608:4:0::1;::::0;-1:-1:-1;26565:17:0::1;::::0;-1:-1:-1;;26565:48:0:i:1;:::-;24185:103:::0;;;24265:11;:9;:11::i;:::-;26455:166;;;:::o;25317:131::-;25369:23;24203:11;:9;:11::i;:::-;-1:-1:-1;;;;;24189:25:0;:10;-1:-1:-1;;;;;24189:25:0;;24185:103;;;25423:17:::1;:15;:17::i;:::-;25405:35;;24185:103:::0;;;24265:11;:9;:11::i;:::-;25317:131;:::o;25662:105::-;24203:11;:9;:11::i;:::-;-1:-1:-1;;;;;24189:25:0;:10;-1:-1:-1;;;;;24189:25:0;;24185:103;;;25737:22:::1;25750:8;25737:12;:22::i;24748:98::-:0;24791:14;24203:11;:9;:11::i;:::-;-1:-1:-1;;;;;24189:25:0;:10;-1:-1:-1;;;;;24189:25:0;;24185:103;;;24827:11:::1;:9;:11::i;8878:200::-:0;8961:12;8993:77;9014:6;9022:4;8993:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;8986:84;8878:200;-1:-1:-1;;;8878:200:0:o;3193:422::-;3560:20;;3599:8;;3193:422;;;;:::o;26908:210::-;26994:11;:9;:11::i;:::-;-1:-1:-1;;;;;26980:25:0;:10;-1:-1:-1;;;;;26980:25:0;;;26972:104;;;;-1:-1:-1;;;26972:104:0;;3727:2:1;26972:104:0;;;3709:21:1;3766:2;3746:18;;;3739:30;3805:34;3785:18;;;3778:62;3876:34;3856:18;;;3849:62;-1:-1:-1;;;3927:19:1;;;3920:33;3970:19;;26972:104:0;;;;;;;;;27087:23;19836:113;21881:142;21948:12;21980:35;:33;:35::i;:::-;21973:42;;21881:142;:::o;18429:915::-;18829:14;18826:1;18823;18810:34;19047:1;19044;19028:14;19025:1;19009:14;19002:5;18989:60;19126:16;19123:1;19120;19105:38;19166:6;19235:38;;;;19307:16;19304:1;19297:27;19235:38;19254:16;19251:1;19244:27;15737:124;15781:7;15461:66;15808:39;:45;-1:-1:-1;;;;;15808:45:0;;-1:-1:-1;15737:124:0;:::o;12742:321::-;12851:37;12870:17;12851:18;:37::i;:::-;12904:27;;-1:-1:-1;;;;;12904:27:0;;;;;;;;12960:1;12946:4;:11;:15;:28;;;;12965:9;12946:28;12942:114;;;12991:53;13020:17;13039:4;12991:28;:53::i;:::-;;12742:321;;;:::o;16270:138::-;16335:35;16348:11;:9;:11::i;:::-;16335:35;;;-1:-1:-1;;;;;1830:15:1;;;1812:34;;1882:15;;;1877:2;1862:18;;1855:43;1747:18;16335:35:0;;;;;;;16381:19;16391:8;16381:9;:19::i;9272:423::-;9383:12;9416:18;9427:6;9416:10;:18::i;:::-;9408:69;;;;-1:-1:-1;;;9408:69:0;;3320:2:1;9408:69:0;;;3302:21:1;3359:2;3339:18;;;3332:30;3398:34;3378:18;;;3371:62;-1:-1:-1;;;3449:18:1;;;3442:36;3495:19;;9408:69:0;3292:228:1;9408:69:0;9551:12;9565:23;9592:6;-1:-1:-1;;;;;9592:19:0;9612:4;9592:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9550:67;;;;9635:52;9653:7;9662:10;9674:12;9635:17;:52::i;:::-;9628:59;9272:423;-1:-1:-1;;;;;;9272:423:0:o;11833:142::-;11886:7;11552:66;11913:48;1696:40;12071:262;12153:37;12172:17;12153:18;:37::i;:::-;12145:95;;;;-1:-1:-1;;;12145:95:0;;2906:2:1;12145:95:0;;;2888:21:1;2945:2;2925:18;;;2918:30;2984:34;2964:18;;;2957:62;-1:-1:-1;;;3035:18:1;;;3028:43;3088:19;;12145:95:0;2878:235:1;12145:95:0;12308:17;11552:66;12251:48;:74;;-1:-1:-1;;;;;;12251:74:0;-1:-1:-1;;;;;12251:74:0;;;;;;;;;;-1:-1:-1;12071:262:0:o;15948:204::-;-1:-1:-1;;;;;16012:22:0;;16004:73;;;;-1:-1:-1;;;16004:73:0;;2499:2:1;16004:73:0;;;2481:21:1;2538:2;2518:18;;;2511:30;2577:34;2557:18;;;2550:62;-1:-1:-1;;;2628:18:1;;;2621:36;2674:19;;16004:73:0;2471:228:1;16004:73:0;16136:8;15461:66;16088:39;1696:40;9703:742;9818:12;9847:7;9843:595;;;-1:-1:-1;9878:10:0;9871:17;;9843:595;9992:17;;:21;9988:439;;10255:10;10249:17;10316:15;10303:10;10299:2;10295:19;10288:44;10203:148;10398:12;10391:20;;-1:-1:-1;;;10391:20:0;;;;;;;;:::i;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:196;;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:715::-;;;;541:2;529:9;520:7;516:23;512:32;509:2;;;562:6;554;547:22;509:2;590:29;609:9;590:29;:::i;:::-;580:39;;670:2;659:9;655:18;642:32;693:18;734:2;726:6;723:14;720:2;;;755:6;747;740:22;720:2;798:6;787:9;783:22;773:32;;843:7;836:4;832:2;828:13;824:27;814:2;;870:6;862;855:22;814:2;915;902:16;941:2;933:6;930:14;927:2;;;962:6;954;947:22;927:2;1012:7;1007:2;998:6;994:2;990:15;986:24;983:37;980:2;;;1038:6;1030;1023:22;980:2;1074;1070;1066:11;1056:21;;1096:6;1086:16;;;;;499:609;;;;;:::o;1113:274::-;;1280:6;1274:13;1296:53;1342:6;1337:3;1330:4;1322:6;1318:17;1296:53;:::i;:::-;1365:16;;;;;1250:137;-1:-1:-1;;1250:137:1:o;1909:383::-;;2058:2;2047:9;2040:21;2090:6;2084:13;2133:6;2128:2;2117:9;2113:18;2106:34;2149:66;2208:6;2203:2;2192:9;2188:18;2183:2;2175:6;2171:15;2149:66;:::i;:::-;2276:2;2255:15;-1:-1:-1;;2251:29:1;2236:45;;;;2283:2;2232:54;;2030:262;-1:-1:-1;;2030:262:1:o;4000:258::-;4072:1;4082:113;4096:6;4093:1;4090:13;4082:113;;;4172:11;;;4166:18;4153:11;;;4146:39;4118:2;4111:10;4082:113;;;4213:6;4210:1;4207:13;4204:2;;;-1:-1:-1;;4248:1:1;4230:16;;4223:27;4053:205::o

Metadata Hash

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