Contract 0x663DC15D3C1aC63ff12E45Ab68FeA3F0a883C251 22

 

Contract Overview

Balance:
1.86 MATIC

MATIC Value:
$0.97 (@ $0.52/MATIC)

Token:
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0xce7b99f66b40296c563f240ca77d53170397c1e0760d6c4b0088e94430bef85aStrictly Swap An...479840292023-09-25 22:58:472 hrs 53 mins ago0x154bd5d57d90ce903a71754b32bda83240db34ad IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2512 MATIC0.034495811107 80.333602172
0x2eb23e3bac44550a9e984da63dfe81ace6b18393efdf504f51d76d781a7b0f28Strictly Swap An...479839602023-09-25 22:56:212 hrs 55 mins ago0x362e197667010fba3bcdb0a295fc86ca8f50e5a9 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2518,009.780433604095333 MATIC0.055137982984 106.904
0x00c8b2fc2b44dc663e1e6e623af6e8b2b841a10e58dd852a69803703b12a0b21Strictly Swap An...479821592023-09-25 21:51:244 hrs ago0x47ce4710f1ec69fd49eeee3d1711942de47266d9 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2510.5 MATIC0.100124773896 71.176
0xb5d2886143c20c18f3cb035e9a4da459dbeae7baff7bd053707065b88eeebf28Strictly Swap An...479804512023-09-25 20:48:335 hrs 3 mins ago0x2662602cf511f1a468b807396f3f46c52c5f95c3 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2511,002.794805148312555 MATIC0.038632467029 88.318527713
0x3ef5174455d48b10042f5b8e441b2bba848649c146e39a98ca106682b81d3516Strictly Swap An...479782592023-09-25 19:22:356 hrs 29 mins ago0x86cf387babd85652dcbfb8683e8fc33f38265c89 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251113.717984298802564 MATIC0.071256513048 182.476
0x2cdeda3244f9f4523c2eaa7c64e04b269ff67664cce7425c34b803b827004913Strictly Swap An...479757172023-09-25 17:44:078 hrs 8 mins ago0x627e9e04eb7385be5ef8d394dbf589b11992fee9 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2511.8373621 MATIC0.054389243301 131.902914082
0xfc11d3c12e81d93fb212c69a5dedf98b5750733a61891220755a4c9541406b0fStrictly Swap An...479750162023-09-25 17:16:228 hrs 35 mins ago0x363868e87c7653ea7afbd9e02a0b4dce57191206 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2511.929582909846366 MATIC0.05327521584 145.376
0x79df6ae8455f0519e288372ff485698272958b758b170070ddca60a33432ce03Strictly Swap An...479713512023-09-25 15:05:1210 hrs 46 mins ago0x12d0ced4220f5acd0b0749bda0747a2051fbb280 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2515.5 MATIC0.034288312433 85.343987379
0x39a7a9deb96c0d39d01af239bed559652efce52e9ba51b75a4749303305cb9aaStrictly Swap An...479709362023-09-25 14:50:3011 hrs 1 min ago0x1f2896d451bf2fd2f07bb231a50d6d1c193b36e1 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251100.71105573983277 MATIC0.030707914462 83.812097663
0xf4a72c6cb92cd8d14a2080b542d9a3b1f8adfd19bee885713a51334ade06952dStrictly Swap An...479689212023-09-25 13:37:5112 hrs 14 mins ago0x264902ce3200dba13b83a168d563497d2d347b53 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2511.5 MATIC0.057905589025 146.532250497
0xad4c002ad0104ef8c0a8d9866434e9f1c4449ed98907b493cf54ba181c4d9315Strictly Swap An...479687172023-09-25 13:30:3712 hrs 21 mins ago0xa6adec2f48fc1fa4e316b92d5f8aa5a9fe5977da IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2511,399.5 MATIC0.072827986169 95.299018155
0x41947a281fc2eeaacd92e38e04940a133e9df661b1e316bb9aa371ed5531a8abStrictly Swap An...479679782023-09-25 13:04:2412 hrs 47 mins ago0x832f209017d1f22f76bc91e1470041c8bfddc06a IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2515.5 MATIC0.037898728625 88.257059347
0xbd45bb78b1e4bfdac70f3a1637afd1e779341f152af46e35e074e668026dca08Strictly Swap An...479678272023-09-25 12:59:0412 hrs 53 mins ago0xfd4f361269dcde0bc1cb410b54c0c30331a4fc99 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2510.94638760448682 MATIC0.032038029128 81.130911737
0x82b5100cbc2ffec66c639f5453bffee3d5cc0be14257da9759585eeaa90e6426Strictly Swap An...479661882023-09-25 12:00:5813 hrs 51 mins ago0xe547d2eed6dd60796013b485d284c17da1194c82 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2513.497214716710165 MATIC0.036936490298105.472860568
0x092e686777f60341b5a33e20d09fd6493f6832f6ecd1452893943bb75a82fcc2Strictly Swap An...479633532023-09-25 10:19:4615 hrs 32 mins ago0xe547d2eed6dd60796013b485d284c17da1194c82 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2513.496344585085634 MATIC0.034507118453101.691618076
0x8a33a9a4ff0a0b7af174ac0e8dc3ea02a5c12ce34797a3fd734d25b749682713Strictly Swap An...479618242023-09-25 9:24:3416 hrs 27 mins ago0xd028e381324d2f4dbbda7b37cdc8ae55f99c0817 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2510.5 MATIC0.039772347922 87.690049128
0xc8375289a0fd6c1cfd824bb89e89cf9f376f2e8f1c583d5125b915290dd6f938Strictly Swap An...479611482023-09-25 8:59:2616 hrs 52 mins ago0xe547d2eed6dd60796013b485d284c17da1194c82 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2512.595708453235233 MATIC0.035045299634100.091392797
0x37564aff4486feabbd69837435c03465421970e98cb1eedbb3e2e7afe6407d6aStrictly Swap An...479605802023-09-25 8:38:0517 hrs 14 mins ago0x264902ce3200dba13b83a168d563497d2d347b53 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2513.5 MATIC0.036817650679 92.974569705
0x0089ca69529518d15a07383c3e47d35780566a997b75f83fd7ca30a59bb1d93bStrictly Swap An...479592552023-09-25 7:47:2218 hrs 4 mins ago0xd6708e583257783e6dcd64b8e5df7dd79377311c IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2510.5 MATIC0.03443900492
0x457d03c3fbdecf7cd3d651257a4667a45b16ec9dc27b5af602ec7b01667ffd8dStrictly Swap An...479572322023-09-25 6:30:5519 hrs 21 mins ago0x4e5b4dd182a630eb0f00976bc59e10cb3bcb3a80 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2510.5 MATIC0.037085803605 76.783791808
0xeaccdfd9fd393887c34607bdb6248fc769ae477dd4098f3c4ba904e971ffa486Strictly Swap An...479478182023-09-25 0:38:151 day 1 hr ago0xcd251658ad5c2022d556fc3812906ecde483f81c IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c25113.708916059782877 MATIC0.030783960289 84.045113942
0x5f7522cc8e8f013e5ed86b76c18fd2f1dc4d704eefbd256fb62bd0a84c7af0c0Strictly Swap An...479454302023-09-24 23:08:461 day 2 hrs ago nakskech.nft  IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2512 MATIC0.034301790744 85.385185932
0x7c56be1583c39a7f8c62265345ce7cde6578e8f6b40284a57a4e5f466de5d7e5Strictly Swap An...479424702023-09-24 21:17:381 day 4 hrs ago0xe2b526263fc49e04de61134d35a38f145b5e8b82 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2511,957.946465447160756 MATIC0.052094670192 73.131749154
0x62818f7f28856b250341fd2e493fa28e80a2061aec95915c50e318c6620804cfStrictly Swap An...479422272023-09-24 21:08:521 day 4 hrs ago0xa4c284e950dadf4796d220194ab88d34eee50815 IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c2516.319584098255146 MATIC0.028237378622 73.745129006
0x1087cd6bb81e81849286ab5383012cd3930f44edd411f7e107175c151654cc35Strictly Swap An...479414872023-09-24 20:42:031 day 5 hrs ago0xc8ec350f72078662e7222e1aa5c8199a7f6ed08f IN  0x663dc15d3c1ac63ff12e45ab68fea3f0a883c25130.5 MATIC0.035620684292 82.978706639
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xce7b99f66b40296c563f240ca77d53170397c1e0760d6c4b0088e94430bef85a479840292023-09-25 22:58:472 hrs 53 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0xce7b99f66b40296c563f240ca77d53170397c1e0760d6c4b0088e94430bef85a479840292023-09-25 22:58:472 hrs 53 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d1.5 MATIC
0x2eb23e3bac44550a9e984da63dfe81ace6b18393efdf504f51d76d781a7b0f28479839602023-09-25 22:56:212 hrs 55 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0x2eb23e3bac44550a9e984da63dfe81ace6b18393efdf504f51d76d781a7b0f28479839602023-09-25 22:56:212 hrs 55 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d8,009.280433604095333654 MATIC
0x00c8b2fc2b44dc663e1e6e623af6e8b2b841a10e58dd852a69803703b12a0b21479821592023-09-25 21:51:244 hrs ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0xb5d2886143c20c18f3cb035e9a4da459dbeae7baff7bd053707065b88eeebf28479804512023-09-25 20:48:335 hrs 3 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0xb5d2886143c20c18f3cb035e9a4da459dbeae7baff7bd053707065b88eeebf28479804512023-09-25 20:48:335 hrs 3 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d1,002.294805148312555541 MATIC
0x3ef5174455d48b10042f5b8e441b2bba848649c146e39a98ca106682b81d3516479782592023-09-25 19:22:356 hrs 29 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0x3ef5174455d48b10042f5b8e441b2bba848649c146e39a98ca106682b81d3516479782592023-09-25 19:22:356 hrs 29 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d113.217984298802564259 MATIC
0x2cdeda3244f9f4523c2eaa7c64e04b269ff67664cce7425c34b803b827004913479757172023-09-25 17:44:078 hrs 8 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0x2cdeda3244f9f4523c2eaa7c64e04b269ff67664cce7425c34b803b827004913479757172023-09-25 17:44:078 hrs 8 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d1.3373621 MATIC
0xfc11d3c12e81d93fb212c69a5dedf98b5750733a61891220755a4c9541406b0f479750162023-09-25 17:16:228 hrs 35 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0xfc11d3c12e81d93fb212c69a5dedf98b5750733a61891220755a4c9541406b0f479750162023-09-25 17:16:228 hrs 35 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d1.429582909846366807 MATIC
0x79df6ae8455f0519e288372ff485698272958b758b170070ddca60a33432ce03479713512023-09-25 15:05:1210 hrs 46 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0x79df6ae8455f0519e288372ff485698272958b758b170070ddca60a33432ce03479713512023-09-25 15:05:1210 hrs 46 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d5 MATIC
0x39a7a9deb96c0d39d01af239bed559652efce52e9ba51b75a4749303305cb9aa479709362023-09-25 14:50:3011 hrs 1 min ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0x39a7a9deb96c0d39d01af239bed559652efce52e9ba51b75a4749303305cb9aa479709362023-09-25 14:50:3011 hrs 1 min ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d100.211055739832770593 MATIC
0xf4a72c6cb92cd8d14a2080b542d9a3b1f8adfd19bee885713a51334ade06952d479689212023-09-25 13:37:5112 hrs 14 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0xf4a72c6cb92cd8d14a2080b542d9a3b1f8adfd19bee885713a51334ade06952d479689212023-09-25 13:37:5112 hrs 14 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d1 MATIC
0xad4c002ad0104ef8c0a8d9866434e9f1c4449ed98907b493cf54ba181c4d9315479687172023-09-25 13:30:3712 hrs 21 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0xad4c002ad0104ef8c0a8d9866434e9f1c4449ed98907b493cf54ba181c4d9315479687172023-09-25 13:30:3712 hrs 21 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d1,399 MATIC
0x41947a281fc2eeaacd92e38e04940a133e9df661b1e316bb9aa371ed5531a8ab479679782023-09-25 13:04:2412 hrs 47 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0x41947a281fc2eeaacd92e38e04940a133e9df661b1e316bb9aa371ed5531a8ab479679782023-09-25 13:04:2412 hrs 47 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d5 MATIC
0xbd45bb78b1e4bfdac70f3a1637afd1e779341f152af46e35e074e668026dca08479678272023-09-25 12:59:0412 hrs 53 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0xef4fb24ad0916217251f553c0596f8edc630eb660.5 MATIC
0xbd45bb78b1e4bfdac70f3a1637afd1e779341f152af46e35e074e668026dca08479678272023-09-25 12:59:0412 hrs 53 mins ago 0x663dc15d3c1ac63ff12e45ab68fea3f0a883c251 0x1111111254fb6c44bac0bed2854e76f90643097d0.446387604486820045 MATIC
[ Download CSV Export 
Loading

Similar Match Source Code
This contract matches the deployed ByteCode of the Source Code for Contract 0x5841565Bd231a868e47347d9749eF06AF5cA0970
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.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at PolygonScan.com on 2021-06-12
*/

// 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 Security Audit

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

608060405260405162000f4038038062000f408339810160408190526200002691620004d4565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd62000603565b60008051602062000ef9833981519152146200008157634e487b7160e01b600052600160045260246000fd5b6200008f82826000620000ff565b50620000bf905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610462000603565b60008051602062000ed983398151915214620000eb57634e487b7160e01b600052600160045260246000fd5b620000f68262000170565b5050506200066c565b6200010a83620001cb565b6040516001600160a01b038416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a26000825111806200014c5750805b156200016b576200016983836200029360201b6200026c1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200019b620002c2565b604080516001600160a01b03928316815291841660208301520160405180910390a1620001c881620002fb565b50565b620001e1816200038b60201b620002981760201c565b620002495760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806200027260008051602062000ef983398151915260001b6200039560201b620002141760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060620002bb838360405180606001604052806027815260200162000f196027913962000398565b9392505050565b6000620002ec60008051602062000ed983398151915260001b6200039560201b620002141760201c565b546001600160a01b0316905090565b6001600160a01b038116620003625760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840162000240565b806200027260008051602062000ed983398151915260001b6200039560201b620002141760201c565b803b15155b919050565b90565b6060620003a5846200038b565b620004025760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000240565b600080856001600160a01b0316856040516200041f9190620005b0565b600060405180830381855af49150503d80600081146200045c576040519150601f19603f3d011682016040523d82523d6000602084013e62000461565b606091505b509092509050620004748282866200047e565b9695505050505050565b606083156200048f575081620002bb565b825115620004a05782518084602001fd5b8160405162461bcd60e51b8152600401620002409190620005ce565b80516001600160a01b03811681146200039057600080fd5b600080600060608486031215620004e9578283fd5b620004f484620004bc565b92506200050460208501620004bc565b60408501519092506001600160401b038082111562000521578283fd5b818601915086601f83011262000535578283fd5b8151818111156200054a576200054a62000656565b604051601f8201601f19908116603f0116810190838211818310171562000575576200057562000656565b816040528281528960208487010111156200058e578586fd5b620005a183602083016020880162000627565b80955050505050509250925092565b60008251620005c481846020870162000627565b9190910192915050565b6000602082528251806020840152620005ef81604085016020870162000627565b601f01601f19169190910160400192915050565b6000828210156200062257634e487b7160e01b81526011600452602481fd5b500390565b60005b83811015620006445781810151838201526020016200062a565b83811115620001695750506000910152565b634e487b7160e01b600052604160045260246000fd5b61085d806200067c6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610707565b610164565b3480156100a457600080fd5b506100ad6101da565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b610217565b3480156100f557600080fd5b506100ad610241565b6101066102a2565b610116610111610346565b610355565b565b610120610379565b6001600160a01b0316336001600160a01b0316141561015957610154816040518060200160405280600081525060006103ac565b610161565b6101616100fe565b50565b61016c610379565b6001600160a01b0316336001600160a01b031614156101cd576101c88383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506103ac915050565b6101d5565b6101d56100fe565b505050565b60006101e4610379565b6001600160a01b0316336001600160a01b0316141561020c57610205610346565b9050610214565b6102146100fe565b90565b61021f610379565b6001600160a01b0316336001600160a01b03161415610159576101548161040b565b600061024b610379565b6001600160a01b0316336001600160a01b0316141561020c57610205610379565b606061029183836040518060600160405280602781526020016108016027913961045f565b9392505050565b803b15155b919050565b6102aa610379565b6001600160a01b0316336001600160a01b031614156103415760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b610116565b600061035061053a565b905090565b3660008037600080366000845af43d6000803e808015610374573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316905090565b6103b583610562565b6040516001600160a01b038416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a26000825111806103f65750805b156101d557610405838361026c565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610434610379565b604080516001600160a01b03928316815291841660208301520160405180910390a161016181610611565b606061046a84610298565b6104c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610338565b600080856001600160a01b0316856040516104e09190610785565b600060405180830381855af49150503d806000811461051b576040519150601f19603f3d011682016040523d82523d6000602084013e610520565b606091505b509150915061053082828661069d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61039d565b61056b81610298565b6105cd5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610338565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381166106765760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610338565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036105f0565b606083156106ac575081610291565b8251156106bc5782518084602001fd5b8160405162461bcd60e51b815260040161033891906107a1565b80356001600160a01b038116811461029d57600080fd5b6000602082840312156106fe578081fd5b610291826106d6565b60008060006040848603121561071b578182fd5b610724846106d6565b9250602084013567ffffffffffffffff80821115610740578384fd5b818601915086601f830112610753578384fd5b813581811115610761578485fd5b876020828501011115610772578485fd5b6020830194508093505050509250925092565b600082516107978184602087016107d4565b9190910192915050565b60006020825282518060208401526107c08160408501602087016107d4565b601f01601f19169190910160400192915050565b60005b838110156107ef5781810151838201526020016107d7565b83811115610405575050600091015256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122093f028255035b61df476b13b9dba3c4f06f60e51b9b4caee31680b389aef327f64736f6c63430008020033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007d94972475898092507358c0037b53f368983c60000000000000000000000000b011ae0f3a8dcc0c02481221cd28acdf0367a6570000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004454176949000000000000000000000000000000000000000000000000000000000000008968747470733a2f2f39613733652e77656273697465000000000000000000000000000000000000000000000000000000000000000000000000000000

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

Swarm Source

ipfs://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
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.