Contract 0xC05e61d0E7a63D27546389B7aD62FdFf5A91aACE 1

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc70aea6ce0994f457e22a21f83ab2461ee2a016dcc12913060329fec7888bbf0Mint And Swap78746582021-12-06 8:18:253 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.01606615 50
0x4144cd138b294cf4a564f60182687bac731f474c1512e6dd05f7043fbc9b9670Mint And Swap78746042021-12-06 8:16:395 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.00999253125 31.25
0x10dfef9f5ed9b156d7f1328c14f028d1a54b29f9d702ab26ae0e65884f679874Mint And Swap78745512021-12-06 8:14:517 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.01598565 50
0x585e9aa762e2bc0ed25e1bb6df3fbd851cb6a9860674dd7786d4a9e76f011476Mint And Swap78745072021-12-06 8:13:258 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.01520995 50
0xd97712bc48b96ae9ff0de643292125c7eff93c4406da8137fb22124fb36061e1Mint78743802021-12-06 8:09:1612 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.00647385 50
0xe951dfd49aa0168e2dd83c439dd58915cd5d2706ad050bc7965caa27deb0256fMint And Swap78743642021-12-06 8:08:4313 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.052302225 75
0xf21bc6f052217102885fdf8d8520529fea78b2b4338c43cfe863bc403c21b5c4Mint78740842021-12-06 7:59:4522 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.00845727225 75.25
0xfcd3f9449459e874c1d84af1a8221b9d19e07f7ffa51e28cca7ffb309ff9249dMint And Swap78739672021-12-06 7:55:5525 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.016306587 51
0x1b690f5ee594aa90bb71585037881ee8256a6cce9b8753714e565716570734abMint And Swap78739152021-12-06 7:54:1227 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.044302860785 146.401049478
0x1494ddf523daef601ed37f0a0feaa9eeba4fbb931ffba3e4c4ae23a2655690caMint78739042021-12-06 7:53:5028 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.00772385 50
0x8dd841c4869a840540d0a2f68c41be789397ce65b99ee27b46b56dd0984e9941Mint78738962021-12-06 7:53:3528 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.00647445 50
0x394a19f237bb088f19e0910f03f4e774ba3fd89e14cf3fec32b2d51092a3a0ebMint And Swap78738812021-12-06 7:53:0328 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.016385025 51
0x1069e61cdbdab55a7bc0583581cd33a20b63d03d050bb10a1e3c04fece809439Mint78738792021-12-06 7:53:0028 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.006602715 51
0x508ad4debc46d8ea6444e09ab3303048ec72f967735f436ab9f3bff4222194e9Mint And Swap78736922021-12-06 7:46:3635 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.01598565 50
0x66d6996dd9c2ffa61d241c6f8d1b9481f6e4e50d171c90635d5d7d1b82fc1e79Mint78736632021-12-06 7:45:3836 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.014079318749 108.749999999
0xa80ef56a3a9bb7eb691fb82a87d2277457fb6966bed44e6c491cf2e4c324a4f5Mint And Swap78734862021-12-06 7:39:3642 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.0108595006 33.8
0x4fa7d26ff44d55b8132e95dbabeca3975a6e354a80452fe3b41bdaa532d7d22aMint78734682021-12-06 7:39:0242 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.00647385 50
0xed440f2035f3a6428f89580064cad1acefcf14d7144d3883b47ed0cbd8349e3aMint And Swap78734342021-12-06 7:37:5543 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.01513065 50
0x16140e092818bc748d6dda089d0b3e8b9bf60b028598182076be55ab5d7d8c2cMint And Swap78733122021-12-06 7:33:4448 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.01598685 50
0x26a7f74857f99a0c4d6f5141b89a3c89837f4b37f1a582f7f40c6c2bf9ea0c6bMint And Swap78732152021-12-06 7:30:3351 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.011040905824 36.297874001
0x3423e9584dff3059a8a44ed19ab227278b50998c81ea5013ff02750d438df34eMint And Swap78731512021-12-06 7:28:2653 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.0103926225 32.5
0xa44d0d5b38c1bf05b3006473799b722a9dd933089a614f84e56178574a3e18e8Mint78730542021-12-06 7:25:2756 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.009711675 75
0x708153a037945e67965614ae718c0fb4143d44e5813fa5b348337a091afc845cMint And Swap78727862021-12-06 7:16:471 hr 5 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.0321275 100
0x23feab884abf6180e33174abbec2e9d4d9e25a1a51ed93eeb25b136995d2e1c7Mint And Swap78726082021-12-06 7:10:491 hr 11 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.00945665625 31.25
0x05f1fcfdb935a56d1eb61bf310b01ab8e9870da33696a3d03711769e6714aaeeMint And Swap78725312021-12-06 7:08:161 hr 13 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0 AVAX0.01598565 50
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xc70aea6ce0994f457e22a21f83ab2461ee2a016dcc12913060329fec7888bbf078746582021-12-06 8:18:253 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x568ba082a9b90d2adcba751f68ec955021d738040.025 AVAX
0x4144cd138b294cf4a564f60182687bac731f474c1512e6dd05f7043fbc9b967078746042021-12-06 8:16:395 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0xd441c97ef1458d847271f91714799007081494ef0.025 AVAX
0x10dfef9f5ed9b156d7f1328c14f028d1a54b29f9d702ab26ae0e65884f67987478745512021-12-06 8:14:517 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x0afadbca20c2505e0180e8755dd520f3b8dccc830.025 AVAX
0x585e9aa762e2bc0ed25e1bb6df3fbd851cb6a9860674dd7786d4a9e76f01147678745072021-12-06 8:13:258 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0xf4f1a5679d113dc93732c89b69ee5ce5d12d18f20.025 AVAX
0xd97712bc48b96ae9ff0de643292125c7eff93c4406da8137fb22124fb36061e178743802021-12-06 8:09:1612 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x38c07bd8e487300bcc2fe6ef1fbb2b4a80854e990.025 AVAX
0xe951dfd49aa0168e2dd83c439dd58915cd5d2706ad050bc7965caa27deb0256f78743642021-12-06 8:08:4313 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x21ebe527b2de70f82d039382ed35a601e662bcac0.025 AVAX
0xf21bc6f052217102885fdf8d8520529fea78b2b4338c43cfe863bc403c21b5c478740842021-12-06 7:59:4522 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x619ebca22ffaf1fb0aac8fb47288ae7a55913a6d0.025 AVAX
0xfcd3f9449459e874c1d84af1a8221b9d19e07f7ffa51e28cca7ffb309ff9249d78739672021-12-06 7:55:5525 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x5a407865411253e5a991d3e49e8bc7a1fdbe82b00.025 AVAX
0x1b690f5ee594aa90bb71585037881ee8256a6cce9b8753714e565716570734ab78739152021-12-06 7:54:1227 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x932e88bc4fbb0dd9cecea193581a1101b0b8c6e60.025 AVAX
0x1494ddf523daef601ed37f0a0feaa9eeba4fbb931ffba3e4c4ae23a2655690ca78739042021-12-06 7:53:5028 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0xcb2b80ad8c6b6a205bec7b494c768ea99d74c0590.025 AVAX
0x8dd841c4869a840540d0a2f68c41be789397ce65b99ee27b46b56dd0984e994178738962021-12-06 7:53:3528 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x932e88bc4fbb0dd9cecea193581a1101b0b8c6e60.025 AVAX
0x394a19f237bb088f19e0910f03f4e774ba3fd89e14cf3fec32b2d51092a3a0eb78738812021-12-06 7:53:0328 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0xf4f1a5679d113dc93732c89b69ee5ce5d12d18f20.025 AVAX
0x1069e61cdbdab55a7bc0583581cd33a20b63d03d050bb10a1e3c04fece80943978738792021-12-06 7:53:0028 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x79785426624d5cf1665f2db6eff374e59635c3140.025 AVAX
0x508ad4debc46d8ea6444e09ab3303048ec72f967735f436ab9f3bff4222194e978736922021-12-06 7:46:3635 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0xb1867872570f8171f741ae8326e3924bfe79895d0.025 AVAX
0x66d6996dd9c2ffa61d241c6f8d1b9481f6e4e50d171c90635d5d7d1b82fc1e7978736632021-12-06 7:45:3836 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x0f2d4d7a01c88b6ab751698009e5580fdc3439900.025 AVAX
0xa80ef56a3a9bb7eb691fb82a87d2277457fb6966bed44e6c491cf2e4c324a4f578734862021-12-06 7:39:3642 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0xf8d93e224c1b4bf26270c44a34faeabe43920aa90.025 AVAX
0x4fa7d26ff44d55b8132e95dbabeca3975a6e354a80452fe3b41bdaa532d7d22a78734682021-12-06 7:39:0242 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x1a8570e3c5b3c674dcd2bc18882e91e6688fbbea0.025 AVAX
0xed440f2035f3a6428f89580064cad1acefcf14d7144d3883b47ed0cbd8349e3a78734342021-12-06 7:37:5543 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x5a108299fcc26c98f8a2539da7dd237b3b7a48670.025 AVAX
0x16140e092818bc748d6dda089d0b3e8b9bf60b028598182076be55ab5d7d8c2c78733122021-12-06 7:33:4448 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x47dd6bd362ece950b2527fab2a284de4ad4b9e0c0.025 AVAX
0x26a7f74857f99a0c4d6f5141b89a3c89837f4b37f1a582f7f40c6c2bf9ea0c6b78732152021-12-06 7:30:3351 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0xd04c382490d4c2f03526169b7f3b053f86e8b2e20.025 AVAX
0x3423e9584dff3059a8a44ed19ab227278b50998c81ea5013ff02750d438df34e78731512021-12-06 7:28:2653 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x6ea5b7964cd0f679bc40ab2a146d792491025f330.025 AVAX
0xa44d0d5b38c1bf05b3006473799b722a9dd933089a614f84e56178574a3e18e878730542021-12-06 7:25:2756 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0xc66cfef708f49f4171dc764b25f307e770e199170.025 AVAX
0x708153a037945e67965614ae718c0fb4143d44e5813fa5b348337a091afc845c78727862021-12-06 7:16:471 hr 5 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0xd04c382490d4c2f03526169b7f3b053f86e8b2e20.025 AVAX
0x23feab884abf6180e33174abbec2e9d4d9e25a1a51ed93eeb25b136995d2e1c778726082021-12-06 7:10:491 hr 11 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0x4c0de47a4dedcb73acb0aff4f04c092878f42e210.025 AVAX
0x05f1fcfdb935a56d1eb61bf310b01ab8e9870da33696a3d03711769e6714aaee78725312021-12-06 7:08:161 hr 13 mins ago 0xc05e61d0e7a63d27546389b7ad62fdff5a91aace0xddaa2263bec7f6f46cc89df2667f39fcaf19ab4e0.025 AVAX
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license
File 1 of 4 : Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 * 
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 * 
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     * 
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal {
        // 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 virtual view 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 {
        _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 () payable external {
        _fallback();
    }

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

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

File 2 of 4 : TransparentUpgradeableProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

import "./UpgradeableProxy.sol";

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

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

    /**
     * @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 private constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
     */
    modifier ifAdmin() {
        if (msg.sender == _admin()) {
            _;
        } 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) {
        return _admin();
    }

    /**
     * @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) {
        return _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 ifAdmin {
        require(newAdmin != address(0), "TransparentUpgradeableProxy: new admin is the zero address");
        emit AdminChanged(_admin(), newAdmin);
        _setAdmin(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 {
        _upgradeTo(newImplementation);
    }

    /**
     * @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 {
        _upgradeTo(newImplementation);
        // solhint-disable-next-line avoid-low-level-calls
        (bool success,) = newImplementation.delegatecall(data);
        require(success);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view returns (address adm) {
        bytes32 slot = _ADMIN_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            adm := sload(slot)
        }
    }

    /**
     * @dev Stores a new address in the EIP1967 admin slot.
     */
    function _setAdmin(address newAdmin) private {
        bytes32 slot = _ADMIN_SLOT;

        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, newAdmin)
        }
    }

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

File 3 of 4 : UpgradeableProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

import "./Proxy.sol";
import "../utils/Address.sol";

/**
 * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
 * implementation address that can be changed. This address is stored in storage in the location specified by
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
 * implementation behind the proxy.
 * 
 * Upgradeability is only provided internally through {_upgradeTo}. For an externally upgradeable proxy see
 * {TransparentUpgradeableProxy}.
 */
contract UpgradeableProxy is Proxy {
    /**
     * @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));
        _setImplementation(_logic);
        if(_data.length > 0) {
            // solhint-disable-next-line avoid-low-level-calls
            (bool success,) = _logic.delegatecall(_data);
            require(success);
        }
    }

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

    /**
     * @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 private constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal override view returns (address impl) {
        bytes32 slot = _IMPLEMENTATION_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            impl := sload(slot)
        }
    }

    /**
     * @dev Upgrades the proxy to a new implementation.
     * 
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "UpgradeableProxy: new implementation is not a contract");

        bytes32 slot = _IMPLEMENTATION_SLOT;

        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, newImplementation)
        }
    }
}

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

pragma solidity ^0.7.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @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");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        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);
            }
        }
    }
}

Settings
{
  "evmVersion": "istanbul",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"initialLogic","type":"address"},{"internalType":"address","name":"initialAdmin","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","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":"","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"}]

6080604052604051610aaa380380610aaa8339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b50604052508491508290506100ee826101bf565b8051156101a6576000826001600160a01b0316826040518082805190602001908083835b602083106101315780518252601f199092019160209182019101610112565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50509050806101a457600080fd5b505b506101ae9050565b6101b782610231565b505050610291565b6101d28161025560201b6104bb1760201c565b61020d5760405162461bcd60e51b8152600401808060200182810382526036815260200180610a746036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028957508115155b949350505050565b6107d4806102a06000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146101425780638f28397014610180578063f851a440146101c05761006d565b80633659cfe6146100755780634f1ef286146100b55761006d565b3661006d5761006b6101d5565b005b61006b6101d5565b34801561008157600080fd5b5061006b6004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101ef565b61006b600480360360408110156100cb57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561010357600080fd5b82018360208201111561011557600080fd5b8035906020019184600183028401116401000000008311171561013757600080fd5b509092509050610243565b34801561014e57600080fd5b50610157610317565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561018c57600080fd5b5061006b600480360360208110156101a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661036e565b3480156101cc57600080fd5b50610157610476565b6101dd6104f7565b6101ed6101e861058b565b6105b0565b565b6101f76105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023857610233816105f9565b610240565b6102406101d5565b50565b61024b6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561030a57610287836105f9565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102f1576040519150601f19603f3d011682016040523d82523d6000602084013e6102f6565b606091505b505090508061030457600080fd5b50610312565b6103126101d5565b505050565b60006103216105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c61058b565b905061036b565b61036b6101d5565b90565b6103766105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102385773ffffffffffffffffffffffffffffffffffffffff8116610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806106ed603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61043e6105d4565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a161023381610646565b60006104806105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c6105d4565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906104ef57508115155b949350505050565b6104ff6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061075d6042913960600191505060405180910390fd5b6101ed6101ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156105cf573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106028161066a565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610673816104bb565b6106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806107276036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220b141ef72de179b8b56cef31601d40ff2875391088197e73cac39eba1ddcd0fdd64736f6c634300070600335570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e747261637400000000000000000000000087c94a947d2a450666cae1de14ce12fce87029a2000000000000000000000000e2f6d34fd09d21f4121d648e191e842ac95ac0dc00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000087c94a947d2a450666cae1de14ce12fce87029a2000000000000000000000000e2f6d34fd09d21f4121d648e191e842ac95ac0dc00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : initialLogic (address): 0x87c94a947d2a450666cae1de14ce12fce87029a2
Arg [1] : initialAdmin (address): 0xe2f6d34fd09d21f4121d648e191e842ac95ac0dc
Arg [2] : _data (bytes): 0x

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000087c94a947d2a450666cae1de14ce12fce87029a2
Arg [1] : 000000000000000000000000e2f6d34fd09d21f4121d648e191e842ac95ac0dc
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000


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.