Contract 0xd74f5255d557944cf7dd0e45ff521520002d5748 4

 
Sperax is a global technology firm building modern money with blockchain technology.
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc22f88934dec51dd5fa99d93426d74159babbb828b81bcf4446acf730ace2ec1Approve561614772023-01-28 15:28:162 hrs 13 mins ago0xbf26925f736e90e1715ce4e04cd9c289dd1bc002 IN  Sperax: USDs Token0 ETH0.00003204
0x472bf98b6e1a109bef8664569317f601efe64dae584518b9dcab426a6f1bb4e4Approve561610712023-01-28 15:25:502 hrs 16 mins ago0x34e4451b1da7615e9897de4896f1645a8ef9ecfc IN  Sperax: USDs Token0 ETH0.00003218
0x8f378ef59825342fb459a52027eb8cdc751806f90c8f08dc7504b6b925e720baApprove561588222023-01-28 15:13:292 hrs 28 mins ago0xaea51b7e1773f70104c55e1cbb7c04ef5cab5236 IN  Sperax: USDs Token0 ETH0.00003138
0x00aa42c0286b8c9d0774a1d5f588533eef7914be869a86af699cb94143c9039fApprove561587312023-01-28 15:13:022 hrs 28 mins ago0x82b97fe157c390fd334c1aaebc767113cafa2154 IN  Sperax: USDs Token0 ETH0.00003152
0x4475c55b622c6d4efde1534552ab76f2891cb3b3d78063476eeb602736cc0f5bApprove561532642023-01-28 14:44:032 hrs 57 mins ago0xb2ea825bb7ead399e3dbc0f0fc7ff695332c7e6c IN  Sperax: USDs Token0 ETH0.00003235
0xe8d26ac3dcf77159896669d74b6ec6b168ecfc1f409d4440e47ada5c2b32b4a0Approve561520702023-01-28 14:37:443 hrs 4 mins ago0x9b8d4bcb3d5a0dccf62e7f6d53b73f6f64e21efc IN  Sperax: USDs Token0 ETH0.0000316
0x16158c445b1dd1a5af4df3b58e1087b5e24e260594fab12b7160ccf1803e667eApprove561458352023-01-28 14:04:313 hrs 37 mins ago0xaa3600788b72863ff51c8f0db5f10bb65fbfeab4 IN  Sperax: USDs Token0 ETH0.00003394
0xbcb3bd0baf49d8827b1c1c7504b7404f39d27575f66b02efa7b8a8adcf6030caApprove561450852023-01-28 13:59:573 hrs 41 mins ago0x83b33ba5b1446955bee0b3110c163150f555e40e IN  Sperax: USDs Token0 ETH0.00003272
0x5a0e03e8ae786743bdbc6671fcf8f295ec136ddeb2be2e1de5c1d8d3219cc853Approve561439322023-01-28 13:53:283 hrs 48 mins ago0x576a4d006543d7ba103933d6dbd1e3cdf86e22d3 IN  Sperax: USDs Token0 ETH0.00003283
0x572b10b89bea84ddbc1066f99a18da59688e68305e055a1ddb0cc3dcd6ab0530Approve561321052023-01-28 12:53:054 hrs 48 mins ago0xee650f5599bd48f27b29b254a4c45322a755c6b4 IN  Sperax: USDs Token0 ETH0.00003277
0xc1e87318b899d52e43e164c95fe82143202ca36374228d4cf78e46f67b9c719bApprove561316842023-01-28 12:50:544 hrs 50 mins ago0xa5412139e921c5b737bed20a432af0a3fa13c147 IN  Sperax: USDs Token0 ETH0.00003252
0xd52782b9b05d37e96ef969c00c0e156080bb44e493d0b357d68f371d93a9424fApprove561299612023-01-28 12:41:365 hrs ago0x2b29833a831207a3b92102b0708b32d624aa0f65 IN  Sperax: USDs Token0 ETH0.00003123
0x7d87f93a319ae16a8181ba0ccbb854db293ff9784d5bbcbf16d928b0a56e77adApprove561276022023-01-28 12:29:475 hrs 12 mins ago0xd60008700d95161c70b00cef37148f94f691621f IN  Sperax: USDs Token0 ETH0.00002872
0xfc59b8a642609f3ae00256d378b1e88d3d266fc86fd3fd12e134b1f9e8188fc8Approve561217972023-01-28 12:00:215 hrs 41 mins ago0xd870443b0a5b66f5c9dbcb8d1e759399b759f6f7 IN  Sperax: USDs Token0 ETH0.00003009
0x58f251d364d337e804c2660c7b47fc0e7af42e3e5aaa31da74c5cff0ccdad58aApprove561209142023-01-28 11:55:525 hrs 45 mins ago0x451bf8386e62b9a2ac15dbcb5b2af496ddf5518d IN  Sperax: USDs Token0 ETH0.00003202
0xed188a2cbc17c5a52f7bb177e0dcf1c7a6cf6b1f715e8e344de37a7b423c9ee7Approve561205722023-01-28 11:54:085 hrs 47 mins ago0x56ccaa4bf54c317ef2890d00721098f585897d32 IN  Sperax: USDs Token0 ETH0.00003355
0x7ccd2e1d55158ae0e9f1eb3130660197c194b1ac87f2cb0464576405d12b505bApprove561081572023-01-28 10:49:006 hrs 52 mins ago0x73c7eac9e322adc945a35da3649e221cb4c9e27d IN  Sperax: USDs Token0 ETH0.00003275
0x2d033dc47724c4770dec3e28987b2827dca42251ffb8904cd400e360b661cc5eApprove561071802023-01-28 10:43:396 hrs 58 mins ago0x812c89d8e817ddfa19491a8eb7caf5ebd70fdd40 IN  Sperax: USDs Token0 ETH0.00003187
0xa3930c081b33328eb3b1959e347f0d7f8497a174c0acc439c26261d9d0fe7522Approve561036562023-01-28 10:25:297 hrs 16 mins ago0xd459971cab0edadbd4be50555849f5db1b17eb04 IN  Sperax: USDs Token0 ETH0.00002961
0xaa15eed6e3d98973f33ec946ffff738530a219cb7d6efbb83aa6e3d0a43e2395Approve560796572023-01-28 8:21:399 hrs 20 mins ago0xe31ffa09b430b1a2217ba9bdfe9fc48f6424f5d7 IN  Sperax: USDs Token0 ETH0.00003163
0x5e5549d96df48813fe7bc76af00e692c1fc65eef6b771fb7c2b8d8fbc32fe58fApprove560687722023-01-28 7:27:1110 hrs 14 mins ago0xb646d2010fd291d79b693189c95a0efb1c7ac2de IN  Sperax: USDs Token0 ETH0.00002971
0xfefe61b45994f17f81665bff1a7552b4434a9bf447078af9a5c8adbaacee3261Approve560459932023-01-28 5:29:0712 hrs 12 mins ago0xdcf2e76d7fc65281d8117aeba661b2e39e6f3da6 IN  Sperax: USDs Token0 ETH0.00002843
0xff02aef55093561c43e9de900e1b5baba1b4d97f50b27bf1d793afb222974431Approve560436502023-01-28 5:14:0612 hrs 27 mins ago0xd1b29ecf33cba20d7877470112502a37d96bc038 IN  Sperax: USDs Token0 ETH0.0000297
0xcfc6746c8a52eb7cb30120647b0385f5b77f2983ab28adcfa6c46d046006f39cApprove560424782023-01-28 5:07:5612 hrs 33 mins ago0x458676bd480bc8de1ccc07094e34c00f47dcc04c IN  Sperax: USDs Token0 ETH0.00003104
0xd67a1f8489c596ac4432400b48137dc8cfd67d3a7ed66e1eb3bf0a81cd1f5465Approve560355592023-01-28 4:26:5013 hrs 15 mins ago0xcd69053d65d5b67ed3e9f8a2368e454d73f70496 IN  Sperax: USDs Token0 ETH0.00003207
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xdc4969777086ebd1f3026866bc117dca7c15d4d2666fa1856a3251504c27f7eb561822932023-01-28 17:31:519 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0xdc4969777086ebd1f3026866bc117dca7c15d4d2666fa1856a3251504c27f7eb561822932023-01-28 17:31:519 mins ago 0x50450351517117cb58189edba6bbad6284d45902 Sperax: USDs Token0 ETH
0xdc4969777086ebd1f3026866bc117dca7c15d4d2666fa1856a3251504c27f7eb561822932023-01-28 17:31:519 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0xdc4969777086ebd1f3026866bc117dca7c15d4d2666fa1856a3251504c27f7eb561822932023-01-28 17:31:519 mins ago Uniswap V3: Positions NFT Sperax: USDs Token0 ETH
0xdc4969777086ebd1f3026866bc117dca7c15d4d2666fa1856a3251504c27f7eb561822932023-01-28 17:31:519 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0xdc4969777086ebd1f3026866bc117dca7c15d4d2666fa1856a3251504c27f7eb561822932023-01-28 17:31:519 mins ago 0x50450351517117cb58189edba6bbad6284d45902 Sperax: USDs Token0 ETH
0x1e79a3552a9f384d0384fb199b19c10d8fe43f1fdf2b8fd26e6703b5466f436e561817642023-01-28 17:28:5013 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0x1e79a3552a9f384d0384fb199b19c10d8fe43f1fdf2b8fd26e6703b5466f436e561817642023-01-28 17:28:5013 mins ago 0x50450351517117cb58189edba6bbad6284d45902 Sperax: USDs Token0 ETH
0x1e79a3552a9f384d0384fb199b19c10d8fe43f1fdf2b8fd26e6703b5466f436e561817642023-01-28 17:28:5013 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0x1e79a3552a9f384d0384fb199b19c10d8fe43f1fdf2b8fd26e6703b5466f436e561817642023-01-28 17:28:5013 mins ago Uniswap V3: Positions NFT Sperax: USDs Token0 ETH
0x1e79a3552a9f384d0384fb199b19c10d8fe43f1fdf2b8fd26e6703b5466f436e561817642023-01-28 17:28:5013 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0x1e79a3552a9f384d0384fb199b19c10d8fe43f1fdf2b8fd26e6703b5466f436e561817642023-01-28 17:28:5013 mins ago 0x50450351517117cb58189edba6bbad6284d45902 Sperax: USDs Token0 ETH
0x5f28c43a9ca930d68763883b5c1587728dde78722b42e5743e0833233f6b64f8561816542023-01-28 17:28:0913 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0x5f28c43a9ca930d68763883b5c1587728dde78722b42e5743e0833233f6b64f8561816542023-01-28 17:28:0913 mins ago 0x50450351517117cb58189edba6bbad6284d45902 Sperax: USDs Token0 ETH
0xb492d80c9e8a6a4f64a1ddc8bf9760753e609fb637b7ce50bc9b0214b16bf68e561797052023-01-28 17:16:5424 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0xb492d80c9e8a6a4f64a1ddc8bf9760753e609fb637b7ce50bc9b0214b16bf68e561797052023-01-28 17:16:5424 mins ago 0x08e0b47588e1ac22bc0f8b4afaa017aaf273f85e Sperax: USDs Token0 ETH
0x6166d52809aea2eb1e7d0deb400586ba1441a63b8234de1d9c4e4e564896a7b5561794582023-01-28 17:15:2326 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0x6166d52809aea2eb1e7d0deb400586ba1441a63b8234de1d9c4e4e564896a7b5561794582023-01-28 17:15:2326 mins ago 0xc873fecbd354f5a56e00e710b90ef4201db2448d Sperax: USDs Token0 ETH
0x6166d52809aea2eb1e7d0deb400586ba1441a63b8234de1d9c4e4e564896a7b5561794582023-01-28 17:15:2326 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0x6166d52809aea2eb1e7d0deb400586ba1441a63b8234de1d9c4e4e564896a7b5561794582023-01-28 17:15:2326 mins ago 0xf4ccbaf200152dc3162420123824469cc27a00cf Sperax: USDs Token0 ETH
0x6166d52809aea2eb1e7d0deb400586ba1441a63b8234de1d9c4e4e564896a7b5561794582023-01-28 17:15:2326 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0x6166d52809aea2eb1e7d0deb400586ba1441a63b8234de1d9c4e4e564896a7b5561794582023-01-28 17:15:2326 mins ago 0xf4ccbaf200152dc3162420123824469cc27a00cf Sperax: USDs Token0 ETH
0x6166d52809aea2eb1e7d0deb400586ba1441a63b8234de1d9c4e4e564896a7b5561794582023-01-28 17:15:2326 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
0x6166d52809aea2eb1e7d0deb400586ba1441a63b8234de1d9c4e4e564896a7b5561794582023-01-28 17:15:2326 mins ago 0xc873fecbd354f5a56e00e710b90ef4201db2448d Sperax: USDs Token0 ETH
0xf220cadc17e28e07f22d86caacc1658a04263bc07d85144f1e3d9a3103ddd544561794432023-01-28 17:15:1926 mins ago Sperax: USDs Token 0x97a7e6cf949114fe4711018485d757b9c49623070 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

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

pragma solidity >=0.6.0 <0.8.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 interface 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 _logic, address admin_, bytes memory _data) public payable UpgradeableProxy(_logic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _setAdmin(admin_);
    }

    /**
     * @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 admin_) {
        admin_ = _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 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 {
        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 virtual 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 virtual ifAdmin {
        _upgradeTo(newImplementation);
        Address.functionDelegateCall(newImplementation, data);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view virtual 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 virtual override {
        require(msg.sender != _admin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

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

pragma solidity >=0.6.2 <0.8.0;

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

        uint256 size;
        // 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);
            }
        }
    }
}

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

pragma solidity >=0.6.0 <0.8.0;

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

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

pragma solidity >=0.6.0 <0.8.0;

import "./Proxy.sol";
import "./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) public payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _setImplementation(_logic);
        if(_data.length > 0) {
            Address.functionDelegateCall(_logic, _data);
        }
    }

    /**
     * @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 view virtual override 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 virtual {
        _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)
        }
    }
}

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

608060405260405162000c7438038062000c74833981810160405260608110156200002957600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200005557600080fd5b9083019060208201858111156200006b57600080fd5b82516401000000008111828201881017156200008657600080fd5b82525081516020918201929091019080838360005b83811015620000b55781810151838201526020016200009b565b50505050905090810190601f168015620000e35780820380516001836020036101000a031916815260200191505b5060405250849150829050620000f98262000137565b8051156200011a57620001188282620001ae60201b620003821760201c565b505b50620001239050565b6200012e82620001dd565b505050620003bf565b6200014d816200020160201b620003ae1760201c565b6200018a5760405162461bcd60e51b815260040180806020018281038252603681526020018062000c186036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6060620001d6838360405180606001604052806027815260200162000bf16027913962000207565b9392505050565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3b151590565b6060620002148462000201565b620002515760405162461bcd60e51b815260040180806020018281038252602681526020018062000c4e6026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b60208310620002915780518252601f19909201916020918201910162000270565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114620002f3576040519150601f19603f3d011682016040523d82523d6000602084013e620002f8565b606091505b5090925090506200030b82828662000315565b9695505050505050565b6060831562000326575081620001d6565b825115620003375782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200038357818101518382015260200162000369565b50505050905090810190601f168015620003b15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b61082280620003cf6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101165780638f28397014610147578063f851a4401461017a5761005d565b3661005d5761005b61018f565b005b61005b61018f565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101a9565b61005b600480360360408110156100ae57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156100d857600080fd5b8201836020820111156100ea57600080fd5b803590602001918460018302840111600160201b8311171561010b57600080fd5b5090925090506101e3565b34801561012257600080fd5b5061012b610260565b604080516001600160a01b039092168252519081900360200190f35b34801561015357600080fd5b5061005b6004803603602081101561016a57600080fd5b50356001600160a01b031661029d565b34801561018657600080fd5b5061012b610357565b6101976103b4565b6101a76101a2610414565b610427565b565b6101b161044b565b6001600160a01b0316336001600160a01b031614156101d8576101d38161045e565b6101e0565b6101e061018f565b50565b6101eb61044b565b6001600160a01b0316336001600160a01b031614156102535761020d8361045e565b61024d8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061038292505050565b5061025b565b61025b61018f565b505050565b600061026a61044b565b6001600160a01b0316336001600160a01b031614156102925761028b610414565b905061029a565b61029a61018f565b90565b6102a561044b565b6001600160a01b0316336001600160a01b031614156101d8576001600160a01b0381166103035760405162461bcd60e51b815260040180806020018281038252603a8152602001806106ce603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61032c61044b565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d38161049e565b600061036161044b565b6001600160a01b0316336001600160a01b031614156102925761028b61044b565b60606103a78383604051806060016040528060278152602001610728602791396104b0565b9392505050565b3b151590565b6103bc61044b565b6001600160a01b0316336001600160a01b0316141561040c5760405162461bcd60e51b81526004018080602001828103825260428152602001806107ab6042913960600191505060405180910390fd5b6101a76101a7565b6000805160206107088339815191525490565b3660008037600080366000845af43d6000803e808015610446573d6000f35b3d6000fd5b6000805160206106ae8339815191525490565b610467816105b3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805160206106ae83398151915255565b60606104bb846103ae565b6104f65760405162461bcd60e51b81526004018080602001828103825260268152602001806107856026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b602083106105345780518252601f199092019160209182019101610515565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610594576040519150601f19603f3d011682016040523d82523d6000602084013e610599565b606091505b50915091506105a9828286610609565b9695505050505050565b6105bc816103ae565b6105f75760405162461bcd60e51b815260040180806020018281038252603681526020018061074f6036913960400191505060405180910390fd5b60008051602061070883398151915255565b606083156106185750816103a7565b8251156106285782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561067257818101518382015260200161065a565b50505050905090810190601f16801561069f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f2061646472657373360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220e90b565f8fc512a59f1efe82432fc6aeb8b4f862affd6d23b50310431154395464736f6c634300060c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374000000000000000000000000d06eca6b1c7f47f8848e96fd9c9ecb17c54e650c0000000000000000000000003e49925a79cbfb68baa5bc9dfb4f7d955d1ddf25000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000d06eca6b1c7f47f8848e96fd9c9ecb17c54e650c0000000000000000000000003e49925a79cbfb68baa5bc9dfb4f7d955d1ddf25000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _logic (address): 0xd06eca6b1c7f47f8848e96fd9c9ecb17c54e650c
Arg [1] : admin_ (address): 0x3e49925a79cbfb68baa5bc9dfb4f7d955d1ddf25
Arg [2] : _data (bytes): 0x

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000d06eca6b1c7f47f8848e96fd9c9ecb17c54e650c
Arg [1] : 0000000000000000000000003e49925a79cbfb68baa5bc9dfb4f7d955d1ddf25
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

1552:4578:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2843:11:1;:9;:11::i;:::-;1552:4578:2;;2619:11:1;:9;:11::i;4521:117:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4521:117:2;-1:-1:-1;;;;;4521:117:2;;:::i;5014:216::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5014:216:2;;;;;;;;;;;;;;;-1:-1:-1;;;5014:216:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5014:216:2;;;;;;;;;;-1:-1:-1;5014:216:2;;-1:-1:-1;5014:216:2;-1:-1:-1;5014:216:2;:::i;3777:129::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;3777:129:2;;;;;;;;;;;;;;4111:250;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4111:250:2;-1:-1:-1;;;;;4111:250:2;;:::i;3224:93::-;;;;;;;;;;;;;:::i;2265:110:1:-;2313:17;:15;:17::i;:::-;2340:28;2350:17;:15;:17::i;:::-;2340:9;:28::i;:::-;2265:110::o;4521:117:2:-;2698:8;:6;:8::i;:::-;-1:-1:-1;;;;;2684:22:2;:10;-1:-1:-1;;;;;2684:22:2;;2680:96;;;4602:29:::1;4613:17;4602:10;:29::i;:::-;2680:96:::0;;;2754:11;:9;:11::i;:::-;4521:117;:::o;5014:216::-;2698:8;:6;:8::i;:::-;-1:-1:-1;;;;;2684:22:2;:10;-1:-1:-1;;;;;2684:22:2;;2680:96;;;5131:29:::1;5142:17;5131:10;:29::i;:::-;5170:53;5199:17;5218:4;;5170:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5170:28:2::1;::::0;-1:-1:-1;;;5170:53:2:i:1;:::-;;2680:96:::0;;;2754:11;:9;:11::i;:::-;5014:216;;;:::o;3777:129::-;3829:23;2698:8;:6;:8::i;:::-;-1:-1:-1;;;;;2684:22:2;:10;-1:-1:-1;;;;;2684:22:2;;2680:96;;;3882:17:::1;:15;:17::i;:::-;3864:35;;2680:96:::0;;;2754:11;:9;:11::i;:::-;3777:129;:::o;4111:250::-;2698:8;:6;:8::i;:::-;-1:-1:-1;;;;;2684:22:2;:10;-1:-1:-1;;;;;2684:22:2;;2680:96;;;-1:-1:-1;;;;;4193:22:2;::::1;4185:93;;;;-1:-1:-1::0;;;4185:93:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4293:32;4306:8;:6;:8::i;:::-;4293:32;::::0;;-1:-1:-1;;;;;4293:32:2;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;4335:19;4345:8;4335:9;:19::i;3224:93::-:0;3267:14;2698:8;:6;:8::i;:::-;-1:-1:-1;;;;;2684:22:2;:10;-1:-1:-1;;;;;2684:22:2;;2680:96;;;3302:8:::1;:6;:8::i;6284:198:0:-:0;6367:12;6398:77;6419:6;6427:4;6398:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6391:84;6284:198;-1:-1:-1;;;6284:198:0:o;726:413::-;1086:20;1124:8;;;726:413::o;5924:204:2:-;6009:8;:6;:8::i;:::-;-1:-1:-1;;;;;5995:22:2;:10;-1:-1:-1;;;;;5995:22:2;;;5987:101;;;;-1:-1:-1;;;5987:101:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6098:23;:21;:23::i;1865:250:3:-;-1:-1:-1;;;;;;;;;;;2088:11:3;;2066:43::o;891:895:1:-;1285:14;1282:1;1279;1266:34;1499:1;1496;1480:14;1477:1;1461:14;1454:5;1441:60;1575:16;1572:1;1569;1554:38;1613:6;1680:38;;;;1751:16;1748:1;1741:27;1680:38;1699:16;1696:1;1689:27;5291:221:2;-1:-1:-1;;;;;;;;;;;5485:11:2;;5464:42::o;2234:160:3:-;2308:37;2327:17;2308:18;:37::i;:::-;2360:27;;-1:-1:-1;;;;;2360:27:3;;;;;;;;2234:160;:::o;5594:209:2:-;-1:-1:-1;;;;;;;;;;;5765:22:2;5751:46::o;6668:417:0:-;6779:12;6811:18;6822:6;6811:10;:18::i;:::-;6803:69;;;;-1:-1:-1;;;6803:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6943:12;6957:23;6984:6;-1:-1:-1;;;;;6984:19:0;7004:4;6984:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6984:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6942:67;;;;7026:52;7044:7;7053:10;7065:12;7026:17;:52::i;:::-;7019:59;6668:417;-1:-1:-1;;;;;;6668:417:0:o;2485:360:3:-;2566:37;2585:17;2566:18;:37::i;:::-;2558:104;;;;-1:-1:-1;;;2558:104:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2798:31:3;2784:55::o;7091:725:0:-;7206:12;7234:7;7230:580;;;-1:-1:-1;7264:10:0;7257:17;;7230:580;7375:17;;:21;7371:429;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7772:12;7765:20;;-1:-1:-1;;;7765:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Metadata Hash

e90b565f8fc512a59f1efe82432fc6aeb8b4f862affd6d23b503104311543954
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.