More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 203 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 25524527 | 1 hr ago | IN | 0 HYPE | 0.00000671 | ||||
| Approve | 25387568 | 39 hrs ago | IN | 0 HYPE | 0.00003847 | ||||
| Approve | 25382867 | 40 hrs ago | IN | 0 HYPE | 0.00002002 | ||||
| Approve | 25357881 | 47 hrs ago | IN | 0 HYPE | 0.00000541 | ||||
| Approve | 25278005 | 2 days ago | IN | 0 HYPE | 0.00003545 | ||||
| Approve | 25273676 | 2 days ago | IN | 0 HYPE | 0.00000424 | ||||
| Approve | 25253332 | 3 days ago | IN | 0 HYPE | 0.00005164 | ||||
| Approve | 25237416 | 3 days ago | IN | 0 HYPE | 0.0000075 | ||||
| Approve | 25209639 | 3 days ago | IN | 0 HYPE | 0.00000462 | ||||
| Approve | 25170989 | 4 days ago | IN | 0 HYPE | 0.00001045 | ||||
| Approve | 25153064 | 4 days ago | IN | 0 HYPE | 0.00003681 | ||||
| Approve | 25083481 | 5 days ago | IN | 0 HYPE | 0.00000432 | ||||
| Approve | 25036466 | 5 days ago | IN | 0 HYPE | 0.00000537 | ||||
| Approve | 25029406 | 5 days ago | IN | 0 HYPE | 0.00004563 | ||||
| Approve | 25017224 | 5 days ago | IN | 0 HYPE | 0.00041252 | ||||
| Approve | 24994826 | 6 days ago | IN | 0 HYPE | 0.00014978 | ||||
| Approve | 24984918 | 6 days ago | IN | 0 HYPE | 0.00002041 | ||||
| Approve | 24979539 | 6 days ago | IN | 0 HYPE | 0.00002041 | ||||
| Approve | 24979404 | 6 days ago | IN | 0 HYPE | 0.00000371 | ||||
| Approve | 24979093 | 6 days ago | IN | 0 HYPE | 0.00003123 | ||||
| Approve | 24959860 | 6 days ago | IN | 0 HYPE | 0.00000616 | ||||
| Approve | 24919282 | 6 days ago | IN | 0 HYPE | 0.00005826 | ||||
| Approve | 24898055 | 7 days ago | IN | 0 HYPE | 0.00000586 | ||||
| Approve | 24897866 | 7 days ago | IN | 0 HYPE | 0.0000063 | ||||
| Approve | 24893894 | 7 days ago | IN | 0 HYPE | 0.00000793 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TransparentUpgradeableProxy
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/**
*Submitted for verification at hyperevmscan.io on 2025-11-30
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0 ^0.8.1 ^0.8.2;
// lib/openzeppelin-contracts/contracts/utils/Address.sol
// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)
/**
* @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
*
* Furthermore, `isContract` will also return true if the target contract within
* the same transaction is already scheduled for destruction by `SELFDESTRUCT`,
* which only has an effect at the end of a transaction.
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 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://consensys.net/diligence/blog/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.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, "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");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, 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) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, 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) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
* the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
*
* _Available since v4.8._
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
/**
* @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason or using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
// 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
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
// lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol
// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)
/**
* @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);
}
// lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol
// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)
/**
* @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.
*
* _Available since v4.8.3._
*/
interface IERC1967 {
/**
* @dev Emitted when the implementation is upgraded.
*/
event Upgraded(address indexed implementation);
/**
* @dev Emitted when the admin account has changed.
*/
event AdminChanged(address previousAdmin, address newAdmin);
/**
* @dev Emitted when the beacon is changed.
*/
event BeaconUpgraded(address indexed beacon);
}
// lib/openzeppelin-contracts/contracts/proxy/Proxy.sol
// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)
/**
* @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 internal call site, it will return directly to the external caller.
*/
function _delegate(address implementation) internal virtual {
assembly {
// Copy msg.data. We take full control of memory in this inline assembly
// block because it will not return to Solidity code. We overwrite the
// Solidity scratch pad at memory position 0.
calldatacopy(0, 0, calldatasize())
// Call the implementation.
// out and outsize are 0 because we don't know the size yet.
let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
// Copy the returned data.
returndatacopy(0, 0, returndatasize())
switch result
// delegatecall returns 0 on error.
case 0 {
revert(0, returndatasize())
}
default {
return(0, returndatasize())
}
}
}
/**
* @dev This is a virtual function that should be overridden 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 internal 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 overridden should call `super._beforeFallback()`.
*/
function _beforeFallback() internal virtual {}
}
// lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol
// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)
// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.
/**
* @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:
* ```solidity
* 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`, `uint256`._
* _Available since v4.9 for `string`, `bytes`._
*/
library StorageSlot {
struct AddressSlot {
address value;
}
struct BooleanSlot {
bool value;
}
struct Bytes32Slot {
bytes32 value;
}
struct Uint256Slot {
uint256 value;
}
struct StringSlot {
string value;
}
struct BytesSlot {
bytes value;
}
/**
* @dev Returns an `AddressSlot` with member `value` located at `slot`.
*/
function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `BooleanSlot` with member `value` located at `slot`.
*/
function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
*/
function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `Uint256Slot` with member `value` located at `slot`.
*/
function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `StringSlot` with member `value` located at `slot`.
*/
function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `StringSlot` representation of the string storage pointer `store`.
*/
function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := store.slot
}
}
/**
* @dev Returns an `BytesSlot` with member `value` located at `slot`.
*/
function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.
*/
function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := store.slot
}
}
}
// lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol
// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)
/**
* @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified
* proxy whose upgrades are fully controlled by the current implementation.
*/
interface IERC1822Proxiable {
/**
* @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation
* address.
*
* IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks
* bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this
* function revert if invoked through a proxy.
*/
function proxiableUUID() external view returns (bytes32);
}
// lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol
// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)
/**
* @dev This abstract contract provides getters and event emitting update functions for
* https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
*
* _Available since v4.1._
*/
abstract contract ERC1967Upgrade is IERC1967 {
// 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 Returns the current implementation address.
*/
function _getImplementation() internal view returns (address) {
return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
}
/**
* @dev Stores a new address in the EIP1967 implementation slot.
*/
function _setImplementation(address newImplementation) private {
require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
}
/**
* @dev Perform implementation upgrade
*
* Emits an {Upgraded} event.
*/
function _upgradeTo(address newImplementation) internal {
_setImplementation(newImplementation);
emit Upgraded(newImplementation);
}
/**
* @dev Perform implementation upgrade with additional setup call.
*
* Emits an {Upgraded} event.
*/
function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {
_upgradeTo(newImplementation);
if (data.length > 0 || forceCall) {
Address.functionDelegateCall(newImplementation, data);
}
}
/**
* @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.
*
* Emits an {Upgraded} event.
*/
function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {
// Upgrades from old implementations will perform a rollback test. This test requires the new
// implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing
// this special case will break upgrade paths from old UUPS implementation to new ones.
if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {
_setImplementation(newImplementation);
} else {
try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {
require(slot == _IMPLEMENTATION_SLOT, "ERC1967Upgrade: unsupported proxiableUUID");
} catch {
revert("ERC1967Upgrade: new implementation is not UUPS");
}
_upgradeToAndCall(newImplementation, data, forceCall);
}
}
/**
* @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 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 Returns the current beacon.
*/
function _getBeacon() internal view returns (address) {
return StorageSlot.getAddressSlot(_BEACON_SLOT).value;
}
/**
* @dev Stores a new beacon in the EIP1967 beacon slot.
*/
function _setBeacon(address newBeacon) private {
require(Address.isContract(newBeacon), "ERC1967: new beacon is not a contract");
require(
Address.isContract(IBeacon(newBeacon).implementation()),
"ERC1967: beacon implementation is not a contract"
);
StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;
}
/**
* @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does
* not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).
*
* Emits a {BeaconUpgraded} event.
*/
function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {
_setBeacon(newBeacon);
emit BeaconUpgraded(newBeacon);
if (data.length > 0 || forceCall) {
Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
}
}
}
// lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol
// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)
/**
* @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
* implementation address that can be changed. This address is stored in storage in the location specified by
* https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
* implementation behind the proxy.
*/
contract ERC1967Proxy is Proxy, ERC1967Upgrade {
/**
* @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.
*
* If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded
* function call, and allows initializing the storage of the proxy like a Solidity constructor.
*/
constructor(address _logic, bytes memory _data) payable {
_upgradeToAndCall(_logic, _data, false);
}
/**
* @dev Returns the current implementation address.
*/
function _implementation() internal view virtual override returns (address impl) {
return ERC1967Upgrade._getImplementation();
}
}
// lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol
// OpenZeppelin Contracts (last updated v4.9.0) (proxy/transparent/TransparentUpgradeableProxy.sol)
/**
* @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}
* does not implement this interface directly, and some of its functions are implemented by an internal dispatch
* mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not
* include them in the ABI so this interface must be used to interact with it.
*/
interface ITransparentUpgradeableProxy is IERC1967 {
function admin() external view returns (address);
function implementation() external view returns (address);
function changeAdmin(address) external;
function upgradeTo(address) external;
function upgradeToAndCall(address, bytes memory) external payable;
}
/**
* @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.
*
* NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not
* inherit from that interface, and instead the admin functions are implicitly implemented using a custom dispatch
* mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to
* fully implement transparency without decoding reverts caused by selector clashes between the proxy and the
* implementation.
*
* WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler
* will not check that there are no selector conflicts, due to the note above. A selector clash between any new function
* and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could
* render the admin operations inaccessible, which could prevent upgradeability. Transparency may also be compromised.
*/
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) {
_changeAdmin(admin_);
}
/**
* @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
*
* CAUTION: This modifier is deprecated, as it could cause issues if the modified function has arguments, and the
* implementation provides a function with the same selector.
*/
modifier ifAdmin() {
if (msg.sender == _getAdmin()) {
_;
} else {
_fallback();
}
}
/**
* @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior
*/
function _fallback() internal virtual override {
if (msg.sender == _getAdmin()) {
bytes memory ret;
bytes4 selector = msg.sig;
if (selector == ITransparentUpgradeableProxy.upgradeTo.selector) {
ret = _dispatchUpgradeTo();
} else if (selector == ITransparentUpgradeableProxy.upgradeToAndCall.selector) {
ret = _dispatchUpgradeToAndCall();
} else if (selector == ITransparentUpgradeableProxy.changeAdmin.selector) {
ret = _dispatchChangeAdmin();
} else if (selector == ITransparentUpgradeableProxy.admin.selector) {
ret = _dispatchAdmin();
} else if (selector == ITransparentUpgradeableProxy.implementation.selector) {
ret = _dispatchImplementation();
} else {
revert("TransparentUpgradeableProxy: admin cannot fallback to proxy target");
}
assembly {
return(add(ret, 0x20), mload(ret))
}
} else {
super._fallback();
}
}
/**
* @dev Returns the current admin.
*
* 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 _dispatchAdmin() private returns (bytes memory) {
_requireZeroValue();
address admin = _getAdmin();
return abi.encode(admin);
}
/**
* @dev Returns the current implementation.
*
* 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 _dispatchImplementation() private returns (bytes memory) {
_requireZeroValue();
address implementation = _implementation();
return abi.encode(implementation);
}
/**
* @dev Changes the admin of the proxy.
*
* Emits an {AdminChanged} event.
*/
function _dispatchChangeAdmin() private returns (bytes memory) {
_requireZeroValue();
address newAdmin = abi.decode(msg.data[4:], (address));
_changeAdmin(newAdmin);
return "";
}
/**
* @dev Upgrade the implementation of the proxy.
*/
function _dispatchUpgradeTo() private returns (bytes memory) {
_requireZeroValue();
address newImplementation = abi.decode(msg.data[4:], (address));
_upgradeToAndCall(newImplementation, bytes(""), false);
return "";
}
/**
* @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.
*/
function _dispatchUpgradeToAndCall() private returns (bytes memory) {
(address newImplementation, bytes memory data) = abi.decode(msg.data[4:], (address, bytes));
_upgradeToAndCall(newImplementation, data, true);
return "";
}
/**
* @dev Returns the current admin.
*
* CAUTION: This function is deprecated. Use {ERC1967Upgrade-_getAdmin} instead.
*/
function _admin() internal view virtual returns (address) {
return _getAdmin();
}
/**
* @dev To keep this contract fully transparent, all `ifAdmin` functions must be payable. This helper is here to
* emulate some proxy functions being non-payable while still allowing value to pass through.
*/
function _requireZeroValue() private {
require(msg.value == 0);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526040516118e03803806118e08339818101604052810190610025919061068e565b828161003882825f61005160201b60201c565b50506100498261008860201b60201c565b505050610980565b610060836100e060201b60201c565b5f8251118061006c5750805b1561008357610081838361013560201b60201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b761016860201b60201c565b826040516100c6929190610709565b60405180910390a16100dd816101c160201b60201c565b50565b6100ef816102a360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061016083836040518060600160405280602781526020016118b96027913961036560201b60201c565b905092915050565b5f61019a7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035f1b6103ed60201b60201c565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361022f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610226906107b0565b60405180910390fd5b806102617fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035f1b6103ed60201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6102b2816103f660201b60201c565b6102f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e89061083e565b60405180910390fd5b806103237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6103ed60201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f5f8573ffffffffffffffffffffffffffffffffffffffff168560405161038e91906108a0565b5f60405180830381855af49150503d805f81146103c6576040519150601f19603f3d011682016040523d82523d5f602084013e6103cb565b606091505b50915091506103e28683838761041860201b60201c565b925050509392505050565b5f819050919050565b5f5f8273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6060831561047f575f83510361047757610437856103f660201b60201c565b610476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046d90610900565b60405180910390fd5b5b829050610490565b61048f838361049860201b60201c565b5b949350505050565b5f825111156104aa5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104de9190610960565b60405180910390fd5b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610521826104f8565b9050919050565b61053181610517565b811461053b575f5ffd5b50565b5f8151905061054c81610528565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6105a08261055a565b810181811067ffffffffffffffff821117156105bf576105be61056a565b5b80604052505050565b5f6105d16104e7565b90506105dd8282610597565b919050565b5f67ffffffffffffffff8211156105fc576105fb61056a565b5b6106058261055a565b9050602081019050919050565b8281835e5f83830152505050565b5f61063261062d846105e2565b6105c8565b90508281526020810184848401111561064e5761064d610556565b5b610659848285610612565b509392505050565b5f82601f83011261067557610674610552565b5b8151610685848260208601610620565b91505092915050565b5f5f5f606084860312156106a5576106a46104f0565b5b5f6106b28682870161053e565b93505060206106c38682870161053e565b925050604084015167ffffffffffffffff8111156106e4576106e36104f4565b5b6106f086828701610661565b9150509250925092565b61070381610517565b82525050565b5f60408201905061071c5f8301856106fa565b61072960208301846106fa565b9392505050565b5f82825260208201905092915050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61079a602683610730565b91506107a582610740565b604082019050919050565b5f6020820190508181035f8301526107c78161078e565b9050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e5f8201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b5f610828602d83610730565b9150610833826107ce565b604082019050919050565b5f6020820190508181035f8301526108558161081c565b9050919050565b5f81519050919050565b5f81905092915050565b5f61087a8261085c565b6108848185610866565b9350610894818560208601610612565b80840191505092915050565b5f6108ab8284610870565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6108ea601d83610730565b91506108f5826108b6565b602082019050919050565b5f6020820190508181035f830152610917816108de565b9050919050565b5f81519050919050565b5f6109328261091e565b61093c8185610730565b935061094c818560208601610612565b6109558161055a565b840191505092915050565b5f6020820190508181035f8301526109788184610928565b905092915050565b610f2c8061098d5f395ff3fe6080604052366100135761001161001d565b005b61001b61001d565b005b610025610298565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361028e5760605f5f357fffffffff00000000000000000000000000000000000000000000000000000000169050633659cfe660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036100db576100d46102eb565b9150610286565b634f1ef28660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036101365761012f610346565b9150610285565b638f28397060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036101915761018a610390565b9150610284565b63f851a44060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036101ec576101e56103db565b9150610283565b635c60da1b60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361024757610240610416565b9150610282565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027990610995565b60405180910390fd5b5b5b5b5b815160208301f35b610296610451565b565b5f6102c47fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035f1b61046b565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606102f5610474565b5f5f366004908092610309939291906109c4565b8101906103169190610a60565b90506103318160405180602001604052805f8152505f610481565b60405180602001604052805f81525091505090565b60605f5f5f36600490809261035d939291906109c4565b81019061036a9190610bc7565b9150915061037a82826001610481565b60405180602001604052805f8152509250505090565b606061039a610474565b5f5f3660049080926103ae939291906109c4565b8101906103bb9190610a60565b90506103c6816104ac565b60405180602001604052805f81525091505090565b60606103e5610474565b5f6103ee610298565b9050806040516020016104019190610c41565b60405160208183030381529060405291505090565b6060610420610474565b5f6104296104f8565b90508060405160200161043c9190610c41565b60405160208183030381529060405291505090565b610459610506565b6104696104646104f8565b610508565b565b5f819050919050565b5f341461047f575f5ffd5b565b61048a83610527565b5f825111806104965750805b156104a7576104a58383610576565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104d5610298565b826040516104e4929190610c5a565b60405180910390a16104f5816105a3565b50565b5f61050161067f565b905090565b565b365f5f375f5f365f845af43d5f5f3e805f8114610523573d5ff35b3d5ffd5b610530816106d2565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061059b8383604051806060016040528060278152602001610ed060279139610788565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890610cf1565b60405180910390fd5b8061063d7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035f1b61046b565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6106ab7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61046b565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106db8161080a565b61071a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071190610d7f565b60405180910390fd5b806107467f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61046b565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f5f8573ffffffffffffffffffffffffffffffffffffffff16856040516107b19190610def565b5f60405180830381855af49150503d805f81146107e9576040519150601f19603f3d011682016040523d82523d5f602084013e6107ee565b606091505b50915091506107ff8683838761082c565b925050509392505050565b5f5f8273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6060831561088d575f835103610885576108458561080a565b610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087b90610e4f565b60405180910390fd5b5b829050610898565b61089783836108a0565b5b949350505050565b5f825111156108b25781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e69190610eaf565b60405180910390fd5b5f82825260208201905092915050565b7f5472616e73706172656e745570677261646561626c6550726f78793a2061646d5f8201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760208201527f6574000000000000000000000000000000000000000000000000000000000000604082015250565b5f61097f6042836108ef565b915061098a826108ff565b606082019050919050565b5f6020820190508181035f8301526109ac81610973565b9050919050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5f858511156109d7576109d66109bc565b5b838611156109e8576109e76109c0565b5b6001850283019150848603905094509492505050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a2f82610a06565b9050919050565b610a3f81610a25565b8114610a49575f5ffd5b50565b5f81359050610a5a81610a36565b92915050565b5f60208284031215610a7557610a746109fe565b5b5f610a8284828501610a4c565b91505092915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610ad982610a93565b810181811067ffffffffffffffff82111715610af857610af7610aa3565b5b80604052505050565b5f610b0a6109b3565b9050610b168282610ad0565b919050565b5f67ffffffffffffffff821115610b3557610b34610aa3565b5b610b3e82610a93565b9050602081019050919050565b828183375f83830152505050565b5f610b6b610b6684610b1b565b610b01565b905082815260208101848484011115610b8757610b86610a8f565b5b610b92848285610b4b565b509392505050565b5f82601f830112610bae57610bad610a8b565b5b8135610bbe848260208601610b59565b91505092915050565b5f5f60408385031215610bdd57610bdc6109fe565b5b5f610bea85828601610a4c565b925050602083013567ffffffffffffffff811115610c0b57610c0a610a02565b5b610c1785828601610b9a565b9150509250929050565b5f610c2b82610a06565b9050919050565b610c3b81610c21565b82525050565b5f602082019050610c545f830184610c32565b92915050565b5f604082019050610c6d5f830185610c32565b610c7a6020830184610c32565b9392505050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f610cdb6026836108ef565b9150610ce682610c81565b604082019050919050565b5f6020820190508181035f830152610d0881610ccf565b9050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e5f8201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b5f610d69602d836108ef565b9150610d7482610d0f565b604082019050919050565b5f6020820190508181035f830152610d9681610d5d565b9050919050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610dc982610d9d565b610dd38185610da7565b9350610de3818560208601610db1565b80840191505092915050565b5f610dfa8284610dbf565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f610e39601d836108ef565b9150610e4482610e05565b602082019050919050565b5f6020820190508181035f830152610e6681610e2d565b9050919050565b5f81519050919050565b5f610e8182610e6d565b610e8b81856108ef565b9350610e9b818560208601610db1565b610ea481610a93565b840191505092915050565b5f6020820190508181035f830152610ec78184610e77565b90509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bd3f11851659f9f7fae6ac563125fb03652c54ae67a7bad8482ba52798981ff664736f6c634300081c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000294a89ffab1d919088cfcefada3f2716113cc7c3000000000000000000000000a28c08f165116587d4f3e708743b4dee155c5e64000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4077f224a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000006ae71c6a07cf796cc58c07487378443c13a5f28c00000000000000000000000000000000000000000000000000000000000000085359207848595045000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000853592d784859504500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052366100135761001161001d565b005b61001b61001d565b005b610025610298565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361028e5760605f5f357fffffffff00000000000000000000000000000000000000000000000000000000169050633659cfe660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036100db576100d46102eb565b9150610286565b634f1ef28660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036101365761012f610346565b9150610285565b638f28397060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036101915761018a610390565b9150610284565b63f851a44060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036101ec576101e56103db565b9150610283565b635c60da1b60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361024757610240610416565b9150610282565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027990610995565b60405180910390fd5b5b5b5b5b815160208301f35b610296610451565b565b5f6102c47fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035f1b61046b565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606102f5610474565b5f5f366004908092610309939291906109c4565b8101906103169190610a60565b90506103318160405180602001604052805f8152505f610481565b60405180602001604052805f81525091505090565b60605f5f5f36600490809261035d939291906109c4565b81019061036a9190610bc7565b9150915061037a82826001610481565b60405180602001604052805f8152509250505090565b606061039a610474565b5f5f3660049080926103ae939291906109c4565b8101906103bb9190610a60565b90506103c6816104ac565b60405180602001604052805f81525091505090565b60606103e5610474565b5f6103ee610298565b9050806040516020016104019190610c41565b60405160208183030381529060405291505090565b6060610420610474565b5f6104296104f8565b90508060405160200161043c9190610c41565b60405160208183030381529060405291505090565b610459610506565b6104696104646104f8565b610508565b565b5f819050919050565b5f341461047f575f5ffd5b565b61048a83610527565b5f825111806104965750805b156104a7576104a58383610576565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104d5610298565b826040516104e4929190610c5a565b60405180910390a16104f5816105a3565b50565b5f61050161067f565b905090565b565b365f5f375f5f365f845af43d5f5f3e805f8114610523573d5ff35b3d5ffd5b610530816106d2565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061059b8383604051806060016040528060278152602001610ed060279139610788565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890610cf1565b60405180910390fd5b8061063d7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035f1b61046b565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6106ab7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61046b565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106db8161080a565b61071a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071190610d7f565b60405180910390fd5b806107467f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61046b565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f5f8573ffffffffffffffffffffffffffffffffffffffff16856040516107b19190610def565b5f60405180830381855af49150503d805f81146107e9576040519150601f19603f3d011682016040523d82523d5f602084013e6107ee565b606091505b50915091506107ff8683838761082c565b925050509392505050565b5f5f8273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6060831561088d575f835103610885576108458561080a565b610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087b90610e4f565b60405180910390fd5b5b829050610898565b61089783836108a0565b5b949350505050565b5f825111156108b25781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e69190610eaf565b60405180910390fd5b5f82825260208201905092915050565b7f5472616e73706172656e745570677261646561626c6550726f78793a2061646d5f8201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760208201527f6574000000000000000000000000000000000000000000000000000000000000604082015250565b5f61097f6042836108ef565b915061098a826108ff565b606082019050919050565b5f6020820190508181035f8301526109ac81610973565b9050919050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5f858511156109d7576109d66109bc565b5b838611156109e8576109e76109c0565b5b6001850283019150848603905094509492505050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a2f82610a06565b9050919050565b610a3f81610a25565b8114610a49575f5ffd5b50565b5f81359050610a5a81610a36565b92915050565b5f60208284031215610a7557610a746109fe565b5b5f610a8284828501610a4c565b91505092915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610ad982610a93565b810181811067ffffffffffffffff82111715610af857610af7610aa3565b5b80604052505050565b5f610b0a6109b3565b9050610b168282610ad0565b919050565b5f67ffffffffffffffff821115610b3557610b34610aa3565b5b610b3e82610a93565b9050602081019050919050565b828183375f83830152505050565b5f610b6b610b6684610b1b565b610b01565b905082815260208101848484011115610b8757610b86610a8f565b5b610b92848285610b4b565b509392505050565b5f82601f830112610bae57610bad610a8b565b5b8135610bbe848260208601610b59565b91505092915050565b5f5f60408385031215610bdd57610bdc6109fe565b5b5f610bea85828601610a4c565b925050602083013567ffffffffffffffff811115610c0b57610c0a610a02565b5b610c1785828601610b9a565b9150509250929050565b5f610c2b82610a06565b9050919050565b610c3b81610c21565b82525050565b5f602082019050610c545f830184610c32565b92915050565b5f604082019050610c6d5f830185610c32565b610c7a6020830184610c32565b9392505050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f610cdb6026836108ef565b9150610ce682610c81565b604082019050919050565b5f6020820190508181035f830152610d0881610ccf565b9050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e5f8201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b5f610d69602d836108ef565b9150610d7482610d0f565b604082019050919050565b5f6020820190508181035f830152610d9681610d5d565b9050919050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610dc982610d9d565b610dd38185610da7565b9350610de3818560208601610db1565b80840191505092915050565b5f610dfa8284610dbf565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f610e39601d836108ef565b9150610e4482610e05565b602082019050919050565b5f6020820190508181035f830152610e6681610e2d565b9050919050565b5f81519050919050565b5f610e8182610e6d565b610e8b81856108ef565b9350610e9b818560208601610db1565b610ea481610a93565b840191505092915050565b5f6020820190508181035f830152610ec78184610e77565b90509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bd3f11851659f9f7fae6ac563125fb03652c54ae67a7bad8482ba52798981ff664736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000294a89ffab1d919088cfcefada3f2716113cc7c3000000000000000000000000a28c08f165116587d4f3e708743b4dee155c5e64000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4077f224a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000006ae71c6a07cf796cc58c07487378443c13a5f28c00000000000000000000000000000000000000000000000000000000000000085359207848595045000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000853592d784859504500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _logic (address): 0x294A89FfAb1d919088cfcefAdA3f2716113cc7C3
Arg [1] : admin_ (address): 0xA28c08f165116587D4F3E708743B4dEe155c5E64
Arg [2] : _data (bytes): 0x077f224a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000006ae71c6a07cf796cc58c07487378443c13a5f28c00000000000000000000000000000000000000000000000000000000000000085359207848595045000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000853592d7848595045000000000000000000000000000000000000000000000000
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 000000000000000000000000294a89ffab1d919088cfcefada3f2716113cc7c3
Arg [1] : 000000000000000000000000a28c08f165116587d4f3e708743b4dee155c5e64
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000e4
Arg [4] : 077f224a00000000000000000000000000000000000000000000000000000000
Arg [5] : 0000006000000000000000000000000000000000000000000000000000000000
Arg [6] : 000000a00000000000000000000000006ae71c6a07cf796cc58c07487378443c
Arg [7] : 13a5f28c00000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000853592078485950450000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000853592d78485950450000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
30103:5084:0:-:0;;;;;;13835:11;:9;:11::i;:::-;30103:5084;;13604:11;:9;:11::i;:::-;30103:5084;31147:1125;31223:11;:9;:11::i;:::-;31209:25;;:10;:25;;;31205:1060;;31251:16;31282:15;31300:7;;;;31282:25;;31338:47;;;31326:59;;;:8;:59;;;;31322:791;;31412:20;:18;:20::i;:::-;31406:26;;31322:791;;;31470:54;;;31458:66;;;:8;:66;;;;31454:659;;31551:27;:25;:27::i;:::-;31545:33;;31454:659;;;31616:49;;;31604:61;;;:8;:61;;;;31600:513;;31692:22;:20;:22::i;:::-;31686:28;;31600:513;;;31752:43;;;31740:55;;;:8;:55;;;;31736:377;;31822:16;:14;:16::i;:::-;31816:22;;31736:377;;;31876:52;;;31864:64;;;:8;:64;;;;31860:253;;31955:25;:23;:25::i;:::-;31949:31;;31860:253;;;32021:76;;;;;;;;;;:::i;:::-;;;;;;;;31860:253;31736:377;31600:513;31454:659;31322:791;32184:3;32178:10;32171:4;32166:3;32162:14;32155:34;31205:1060;32236:17;:15;:17::i;:::-;31147:1125::o;23061:124::-;23105:7;23132:39;22928:66;23159:11;;23132:26;:39::i;:::-;:45;;;;;;;;;;;;23125:52;;23061:124;:::o;33795:262::-;33842:12;33867:19;:17;:19::i;:::-;33899:25;33938:8;;33947:1;33938:12;;;;;;;;;:::i;:::-;33927:35;;;;;;;:::i;:::-;33899:63;;33973:54;33991:17;34010:9;;;;;;;;;;;;34021:5;33973:17;:54::i;:::-;34040:9;;;;;;;;;;;;;;;33795:262;:::o;34348:259::-;34402:12;34428:25;34455:17;34487:8;;34496:1;34487:12;;;;;;;;;:::i;:::-;34476:42;;;;;;;:::i;:::-;34427:91;;;;34529:48;34547:17;34566:4;34572;34529:17;:48::i;:::-;34590:9;;;;;;;;;;;;;;;;34348:259;:::o;33492:223::-;33541:12;33566:19;:17;:19::i;:::-;33598:16;33628:8;;33637:1;33628:12;;;;;;;;;:::i;:::-;33617:35;;;;;;;:::i;:::-;33598:54;;33663:22;33676:8;33663:12;:22::i;:::-;33698:9;;;;;;;;;;;;;;;33492:223;:::o;32632:170::-;32675:12;32700:19;:17;:19::i;:::-;32732:13;32748:11;:9;:11::i;:::-;32732:27;;32788:5;32777:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;32770:24;;;32632:170;:::o;33171:203::-;33223:12;33248:19;:17;:19::i;:::-;33280:22;33305:17;:15;:17::i;:::-;33280:42;;33351:14;33340:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;33333:33;;;33171:203;:::o;13241:113::-;13290:17;:15;:17::i;:::-;13318:28;13328:17;:15;:17::i;:::-;13318:9;:28::i;:::-;13241:113::o;16122:195::-;16183:21;16295:4;16285:14;;16122:195;;;:::o;35105:79::-;35174:1;35161:9;:14;35153:23;;;;;;35105:79::o;21296:270::-;21405:29;21416:17;21405:10;:29::i;:::-;21463:1;21449:4;:11;:15;:28;;;;21468:9;21449:28;21445:114;;;21494:53;21523:17;21542:4;21494:28;:53::i;:::-;;21445:114;21296:270;;;:::o;23594:138::-;23659:35;23672:11;:9;:11::i;:::-;23685:8;23659:35;;;;;;;:::i;:::-;;;;;;;;23705:19;23715:8;23705:9;:19::i;:::-;23594:138;:::o;26516:142::-;26583:12;26615:35;:33;:35::i;:::-;26608:42;;26516:142;:::o;14144:46::-;:::o;11831:918::-;12174:14;12171:1;12168;12155:34;12392:1;12389;12373:14;12370:1;12354:14;12347:5;12334:60;12471:16;12468:1;12465;12450:38;12511:6;12585:1;12580:68;;;;12699:16;12696:1;12689:27;12580:68;12616:16;12613:1;12606:27;21000:155;21067:37;21086:17;21067:18;:37::i;:::-;21129:17;21120:27;;;;;;;;;;;;21000:155;:::o;6918:200::-;7001:12;7033:77;7054:6;7062:4;7033:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;7026:84;;6918:200;;;;:::o;23272:204::-;23356:1;23336:22;;:8;:22;;;23328:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23460:8;23412:39;22928:66;23439:11;;23412:26;:39::i;:::-;:45;;;:56;;;;;;;;;;;;;;;;;;23272:204;:::o;20387:142::-;20440:7;20467:48;20237:66;20494:20;;20467:26;:48::i;:::-;:54;;;;;;;;;;;;20460:61;;20387:142;:::o;20625:262::-;20707:37;20726:17;20707:18;:37::i;:::-;20699:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;20862:17;20805:48;20237:66;20832:20;;20805:26;:48::i;:::-;:54;;;:74;;;;;;;;;;;;;;;;;;20625:262;:::o;7312:332::-;7457:12;7483;7497:23;7524:6;:19;;7544:4;7524:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7482:67;;;;7567:69;7594:6;7602:7;7611:10;7623:12;7567:26;:69::i;:::-;7560:76;;;;7312:332;;;;;:::o;1526:326::-;1586:4;1843:1;1821:7;:19;;;:23;1814:30;;1526:326;;;:::o;7940:644::-;8125:12;8154:7;8150:427;;;8203:1;8182:10;:17;:22;8178:290;;8400:18;8411:6;8400:10;:18::i;:::-;8392:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8178:290;8489:10;8482:17;;;;8150:427;8532:33;8540:10;8552:12;8532:7;:33::i;:::-;7940:644;;;;;;;:::o;9126:552::-;9307:1;9287:10;:17;:21;9283:388;;;9519:10;9513:17;9576:15;9563:10;9559:2;9555:19;9548:44;9283:388;9646:12;9639:20;;;;;;;;;;;:::i;:::-;;;;;;;;7:169:1;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:290::-;322:34;318:1;310:6;306:14;299:58;391:34;386:2;378:6;374:15;367:59;460:4;455:2;447:6;443:15;436:29;182:290;:::o;478:366::-;620:3;641:67;705:2;700:3;641:67;:::i;:::-;634:74;;717:93;806:3;717:93;:::i;:::-;835:2;830:3;826:12;819:19;;478:366;;;:::o;850:419::-;1016:4;1054:2;1043:9;1039:18;1031:26;;1103:9;1097:4;1093:20;1089:1;1078:9;1074:17;1067:47;1131:131;1257:4;1131:131;:::i;:::-;1123:139;;850:419;;;:::o;1275:75::-;1308:6;1341:2;1335:9;1325:19;;1275:75;:::o;1356:117::-;1465:1;1462;1455:12;1479:117;1588:1;1585;1578:12;1602:469;1707:9;1718;1756:8;1744:10;1741:24;1738:111;;;1768:79;;:::i;:::-;1738:111;1874:6;1864:8;1861:20;1858:107;;;1884:79;;:::i;:::-;1858:107;2015:1;2003:10;1999:18;1991:6;1987:31;1974:44;;2054:10;2044:8;2040:25;2027:38;;1602:469;;;;;;;:::o;2077:117::-;2186:1;2183;2176:12;2200:117;2309:1;2306;2299:12;2323:126;2360:7;2400:42;2393:5;2389:54;2378:65;;2323:126;;;:::o;2455:104::-;2500:7;2529:24;2547:5;2529:24;:::i;:::-;2518:35;;2455:104;;;:::o;2565:138::-;2646:32;2672:5;2646:32;:::i;:::-;2639:5;2636:43;2626:71;;2693:1;2690;2683:12;2626:71;2565:138;:::o;2709:155::-;2763:5;2801:6;2788:20;2779:29;;2817:41;2852:5;2817:41;:::i;:::-;2709:155;;;;:::o;2870:345::-;2937:6;2986:2;2974:9;2965:7;2961:23;2957:32;2954:119;;;2992:79;;:::i;:::-;2954:119;3112:1;3137:61;3190:7;3181:6;3170:9;3166:22;3137:61;:::i;:::-;3127:71;;3083:125;2870:345;;;;:::o;3221:117::-;3330:1;3327;3320:12;3344:117;3453:1;3450;3443:12;3467:102;3508:6;3559:2;3555:7;3550:2;3543:5;3539:14;3535:28;3525:38;;3467:102;;;:::o;3575:180::-;3623:77;3620:1;3613:88;3720:4;3717:1;3710:15;3744:4;3741:1;3734:15;3761:281;3844:27;3866:4;3844:27;:::i;:::-;3836:6;3832:40;3974:6;3962:10;3959:22;3938:18;3926:10;3923:34;3920:62;3917:88;;;3985:18;;:::i;:::-;3917:88;4025:10;4021:2;4014:22;3804:238;3761:281;;:::o;4048:129::-;4082:6;4109:20;;:::i;:::-;4099:30;;4138:33;4166:4;4158:6;4138:33;:::i;:::-;4048:129;;;:::o;4183:307::-;4244:4;4334:18;4326:6;4323:30;4320:56;;;4356:18;;:::i;:::-;4320:56;4394:29;4416:6;4394:29;:::i;:::-;4386:37;;4478:4;4472;4468:15;4460:23;;4183:307;;;:::o;4496:148::-;4594:6;4589:3;4584;4571:30;4635:1;4626:6;4621:3;4617:16;4610:27;4496:148;;;:::o;4650:423::-;4727:5;4752:65;4768:48;4809:6;4768:48;:::i;:::-;4752:65;:::i;:::-;4743:74;;4840:6;4833:5;4826:21;4878:4;4871:5;4867:16;4916:3;4907:6;4902:3;4898:16;4895:25;4892:112;;;4923:79;;:::i;:::-;4892:112;5013:54;5060:6;5055:3;5050;5013:54;:::i;:::-;4733:340;4650:423;;;;;:::o;5092:338::-;5147:5;5196:3;5189:4;5181:6;5177:17;5173:27;5163:122;;5204:79;;:::i;:::-;5163:122;5321:6;5308:20;5346:78;5420:3;5412:6;5405:4;5397:6;5393:17;5346:78;:::i;:::-;5337:87;;5153:277;5092:338;;;;:::o;5436:668::-;5521:6;5529;5578:2;5566:9;5557:7;5553:23;5549:32;5546:119;;;5584:79;;:::i;:::-;5546:119;5704:1;5729:61;5782:7;5773:6;5762:9;5758:22;5729:61;:::i;:::-;5719:71;;5675:125;5867:2;5856:9;5852:18;5839:32;5898:18;5890:6;5887:30;5884:117;;;5920:79;;:::i;:::-;5884:117;6025:62;6079:7;6070:6;6059:9;6055:22;6025:62;:::i;:::-;6015:72;;5810:287;5436:668;;;;;:::o;6110:96::-;6147:7;6176:24;6194:5;6176:24;:::i;:::-;6165:35;;6110:96;;;:::o;6212:118::-;6299:24;6317:5;6299:24;:::i;:::-;6294:3;6287:37;6212:118;;:::o;6336:222::-;6429:4;6467:2;6456:9;6452:18;6444:26;;6480:71;6548:1;6537:9;6533:17;6524:6;6480:71;:::i;:::-;6336:222;;;;:::o;6564:332::-;6685:4;6723:2;6712:9;6708:18;6700:26;;6736:71;6804:1;6793:9;6789:17;6780:6;6736:71;:::i;:::-;6817:72;6885:2;6874:9;6870:18;6861:6;6817:72;:::i;:::-;6564:332;;;;;:::o;6902:225::-;7042:34;7038:1;7030:6;7026:14;7019:58;7111:8;7106:2;7098:6;7094:15;7087:33;6902:225;:::o;7133:366::-;7275:3;7296:67;7360:2;7355:3;7296:67;:::i;:::-;7289:74;;7372:93;7461:3;7372:93;:::i;:::-;7490:2;7485:3;7481:12;7474:19;;7133:366;;;:::o;7505:419::-;7671:4;7709:2;7698:9;7694:18;7686:26;;7758:9;7752:4;7748:20;7744:1;7733:9;7729:17;7722:47;7786:131;7912:4;7786:131;:::i;:::-;7778:139;;7505:419;;;:::o;7930:232::-;8070:34;8066:1;8058:6;8054:14;8047:58;8139:15;8134:2;8126:6;8122:15;8115:40;7930:232;:::o;8168:366::-;8310:3;8331:67;8395:2;8390:3;8331:67;:::i;:::-;8324:74;;8407:93;8496:3;8407:93;:::i;:::-;8525:2;8520:3;8516:12;8509:19;;8168:366;;;:::o;8540:419::-;8706:4;8744:2;8733:9;8729:18;8721:26;;8793:9;8787:4;8783:20;8779:1;8768:9;8764:17;8757:47;8821:131;8947:4;8821:131;:::i;:::-;8813:139;;8540:419;;;:::o;8965:98::-;9016:6;9050:5;9044:12;9034:22;;8965:98;;;:::o;9069:147::-;9170:11;9207:3;9192:18;;9069:147;;;;:::o;9222:139::-;9311:6;9306:3;9301;9295:23;9352:1;9343:6;9338:3;9334:16;9327:27;9222:139;;;:::o;9367:386::-;9471:3;9499:38;9531:5;9499:38;:::i;:::-;9553:88;9634:6;9629:3;9553:88;:::i;:::-;9546:95;;9650:65;9708:6;9703:3;9696:4;9689:5;9685:16;9650:65;:::i;:::-;9740:6;9735:3;9731:16;9724:23;;9475:278;9367:386;;;;:::o;9759:271::-;9889:3;9911:93;10000:3;9991:6;9911:93;:::i;:::-;9904:100;;10021:3;10014:10;;9759:271;;;;:::o;10036:179::-;10176:31;10172:1;10164:6;10160:14;10153:55;10036:179;:::o;10221:366::-;10363:3;10384:67;10448:2;10443:3;10384:67;:::i;:::-;10377:74;;10460:93;10549:3;10460:93;:::i;:::-;10578:2;10573:3;10569:12;10562:19;;10221:366;;;:::o;10593:419::-;10759:4;10797:2;10786:9;10782:18;10774:26;;10846:9;10840:4;10836:20;10832:1;10821:9;10817:17;10810:47;10874:131;11000:4;10874:131;:::i;:::-;10866:139;;10593:419;;;:::o;11018:99::-;11070:6;11104:5;11098:12;11088:22;;11018:99;;;:::o;11123:377::-;11211:3;11239:39;11272:5;11239:39;:::i;:::-;11294:71;11358:6;11353:3;11294:71;:::i;:::-;11287:78;;11374:65;11432:6;11427:3;11420:4;11413:5;11409:16;11374:65;:::i;:::-;11464:29;11486:6;11464:29;:::i;:::-;11459:3;11455:39;11448:46;;11215:285;11123:377;;;;:::o;11506:313::-;11619:4;11657:2;11646:9;11642:18;11634:26;;11706:9;11700:4;11696:20;11692:1;11681:9;11677:17;11670:47;11734:78;11807:4;11798:6;11734:78;:::i;:::-;11726:86;;11506:313;;;;:::o
Swarm Source
ipfs://bd3f11851659f9f7fae6ac563125fb03652c54ae67a7bad8482ba52798981ff6
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in HYPE
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.