Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 45 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Safe Transfer Fr... | 14313116 | 1464 days ago | IN | 0 ETH | 0.00138805 | ||||
| Safe Transfer Fr... | 13166448 | 1642 days ago | IN | 0 ETH | 0.0056102 | ||||
| Mint | 13166441 | 1642 days ago | IN | 0 ETH | 0.0172209 | ||||
| Safe Transfer Fr... | 13085966 | 1655 days ago | IN | 0 ETH | 0.00336468 | ||||
| Mint | 13085908 | 1655 days ago | IN | 0 ETH | 0.00597836 | ||||
| Safe Transfer Fr... | 13085908 | 1655 days ago | IN | 0 ETH | 0.00224456 | ||||
| Safe Transfer Fr... | 13078685 | 1656 days ago | IN | 0 ETH | 0.00224216 | ||||
| Safe Transfer Fr... | 12881173 | 1687 days ago | IN | 0 ETH | 0.00105629 | ||||
| Mint | 12881172 | 1687 days ago | IN | 0 ETH | 0.00396108 | ||||
| Burn | 12878089 | 1687 days ago | IN | 0 ETH | 0.00057408 | ||||
| Safe Transfer Fr... | 12874807 | 1688 days ago | IN | 0 ETH | 0.00139991 | ||||
| Mint | 12874797 | 1688 days ago | IN | 0 ETH | 0.00128137 | ||||
| Safe Transfer Fr... | 12874786 | 1688 days ago | IN | 0 ETH | 0.00105464 | ||||
| Mint | 12874783 | 1688 days ago | IN | 0 ETH | 0.003437 | ||||
| Safe Transfer Fr... | 12874779 | 1688 days ago | IN | 0 ETH | 0.00105464 | ||||
| Mint | 12874777 | 1688 days ago | IN | 0 ETH | 0.003437 | ||||
| Safe Transfer Fr... | 12874769 | 1688 days ago | IN | 0 ETH | 0.00105464 | ||||
| Mint | 12874767 | 1688 days ago | IN | 0 ETH | 0.003437 | ||||
| Safe Transfer Fr... | 12874762 | 1688 days ago | IN | 0 ETH | 0.00105464 | ||||
| Mint | 12874761 | 1688 days ago | IN | 0 ETH | 0.003437 | ||||
| Safe Transfer Fr... | 12874749 | 1688 days ago | IN | 0 ETH | 0.00105464 | ||||
| Mint | 12874747 | 1688 days ago | IN | 0 ETH | 0.003437 | ||||
| Safe Transfer Fr... | 12874743 | 1688 days ago | IN | 0 ETH | 0.00105464 | ||||
| Mint | 12874740 | 1688 days ago | IN | 0 ETH | 0.003437 | ||||
| Safe Transfer Fr... | 12874707 | 1688 days ago | IN | 0 ETH | 0.00105602 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
CyberManufactureCoNFT
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-07-22
*/
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol
pragma solidity ^0.8.0;
/**
* @dev Required interface of an ERC1155 compliant contract, as defined in the
* https://eips.ethereum.org/EIPS/eip-1155[EIP].
*
* _Available since v3.1._
*/
interface IERC1155 is IERC165 {
/**
* @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
*/
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
/**
* @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
* transfers.
*/
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);
/**
* @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
* `approved`.
*/
event ApprovalForAll(address indexed account, address indexed operator, bool approved);
/**
* @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
*
* If an {URI} event was emitted for `id`, the standard
* https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
* returned by {IERC1155MetadataURI-uri}.
*/
event URI(string value, uint256 indexed id);
/**
* @dev Returns the amount of tokens of token type `id` owned by `account`.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) external view returns (uint256);
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);
/**
* @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
*
* Emits an {ApprovalForAll} event.
*
* Requirements:
*
* - `operator` cannot be the caller.
*/
function setApprovalForAll(address operator, bool approved) external;
/**
* @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
*
* See {setApprovalForAll}.
*/
function isApprovedForAll(address account, address operator) external view returns (bool);
/**
* @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
* - `from` must have a balance of tokens of type `id` of at least `amount`.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
*
* Emits a {TransferBatch} event.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;
}
// File: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol
pragma solidity ^0.8.0;
/**
* @dev _Available since v3.1._
*/
interface IERC1155Receiver is IERC165 {
/**
@dev Handles the receipt of a single ERC1155 token type. This function is
called at the end of a `safeTransferFrom` after the balance has been updated.
To accept the transfer, this must return
`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
(i.e. 0xf23a6e61, or its own function selector).
@param operator The address which initiated the transfer (i.e. msg.sender)
@param from The address which previously owned the token
@param id The ID of the token being transferred
@param value The amount of tokens being transferred
@param data Additional data with no specified format
@return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
*/
function onERC1155Received(
address operator,
address from,
uint256 id,
uint256 value,
bytes calldata data
)
external
returns(bytes4);
/**
@dev Handles the receipt of a multiple ERC1155 token types. This function
is called at the end of a `safeBatchTransferFrom` after the balances have
been updated. To accept the transfer(s), this must return
`bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
(i.e. 0xbc197c81, or its own function selector).
@param operator The address which initiated the batch transfer (i.e. msg.sender)
@param from The address which previously owned the token
@param ids An array containing ids of each token being transferred (order and length must match values array)
@param values An array containing amounts of each token being transferred (order and length must match ids array)
@param data Additional data with no specified format
@return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
*/
function onERC1155BatchReceived(
address operator,
address from,
uint256[] calldata ids,
uint256[] calldata values,
bytes calldata data
)
external
returns(bytes4);
}
// File: @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol
pragma solidity ^0.8.0;
/**
* @dev Interface of the optional ERC1155MetadataExtension interface, as defined
* in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
*
* _Available since v3.1._
*/
interface IERC1155MetadataURI is IERC1155 {
/**
* @dev Returns the URI for token type `id`.
*
* If the `\{id\}` substring is present in the URI, it must be replaced by
* clients with the actual token type ID.
*/
function uri(uint256 id) external view returns (string memory);
}
// File: @openzeppelin/contracts/utils/Address.sol
pragma solidity ^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: @openzeppelin/contracts/utils/Context.sol
pragma solidity ^0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
// File: @openzeppelin/contracts/utils/introspection/ERC165.sol
pragma solidity ^0.8.0;
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
// File: @openzeppelin/contracts/token/ERC1155/ERC1155.sol
pragma solidity ^0.8.0;
/**
* @dev Implementation of the basic standard multi-token.
* See https://eips.ethereum.org/EIPS/eip-1155
* Originally based on code by Enjin: https://github.com/enjin/erc-1155
*
* _Available since v3.1._
*/
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
using Address for address;
// Mapping from token ID to account balances
mapping (uint256 => mapping(address => uint256)) private _balances;
// Mapping from account to operator approvals
mapping (address => mapping(address => bool)) private _operatorApprovals;
// Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
string private _uri;
/**
* @dev See {_setURI}.
*/
constructor (string memory uri_) {
_setURI(uri_);
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return interfaceId == type(IERC1155).interfaceId
|| interfaceId == type(IERC1155MetadataURI).interfaceId
|| super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC1155MetadataURI-uri}.
*
* This implementation returns the same URI for *all* token types. It relies
* on the token type ID substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* Clients calling this function must replace the `\{id\}` substring with the
* actual token type ID.
*/
function uri(uint256) public view virtual override returns (string memory) {
return _uri;
}
/**
* @dev See {IERC1155-balanceOf}.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
require(account != address(0), "ERC1155: balance query for the zero address");
return _balances[id][account];
}
/**
* @dev See {IERC1155-balanceOfBatch}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(
address[] memory accounts,
uint256[] memory ids
)
public
view
virtual
override
returns (uint256[] memory)
{
require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");
uint256[] memory batchBalances = new uint256[](accounts.length);
for (uint256 i = 0; i < accounts.length; ++i) {
batchBalances[i] = balanceOf(accounts[i], ids[i]);
}
return batchBalances;
}
/**
* @dev See {IERC1155-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
require(_msgSender() != operator, "ERC1155: setting approval status for self");
_operatorApprovals[_msgSender()][operator] = approved;
emit ApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC1155-isApprovedForAll}.
*/
function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
return _operatorApprovals[account][operator];
}
/**
* @dev See {IERC1155-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
)
public
virtual
override
{
require(to != address(0), "ERC1155: transfer to the zero address");
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: caller is not owner nor approved"
);
address operator = _msgSender();
_beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
_balances[id][from] = fromBalance - amount;
_balances[id][to] += amount;
emit TransferSingle(operator, from, to, id, amount);
_doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
}
/**
* @dev See {IERC1155-safeBatchTransferFrom}.
*/
function safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
)
public
virtual
override
{
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
require(to != address(0), "ERC1155: transfer to the zero address");
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: transfer caller is not owner nor approved"
);
address operator = _msgSender();
_beforeTokenTransfer(operator, from, to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; ++i) {
uint256 id = ids[i];
uint256 amount = amounts[i];
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
_balances[id][from] = fromBalance - amount;
_balances[id][to] += amount;
}
emit TransferBatch(operator, from, to, ids, amounts);
_doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
}
/**
* @dev Sets a new URI for all token types, by relying on the token type ID
* substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* By this mechanism, any occurrence of the `\{id\}` substring in either the
* URI or any of the amounts in the JSON file at said URI will be replaced by
* clients with the token type ID.
*
* For example, the `https://token-cdn-domain/\{id\}.json` URI would be
* interpreted by clients as
* `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
* for token type ID 0x4cce0.
*
* See {uri}.
*
* Because these URIs cannot be meaningfully represented by the {URI} event,
* this function emits no events.
*/
function _setURI(string memory newuri) internal virtual {
_uri = newuri;
}
/**
* @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function _mint(address account, uint256 id, uint256 amount, bytes memory data) internal virtual {
require(account != address(0), "ERC1155: mint to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);
_balances[id][account] += amount;
emit TransferSingle(operator, address(0), account, id, amount);
_doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function _mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) internal virtual {
require(to != address(0), "ERC1155: mint to the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, address(0), to, ids, amounts, data);
for (uint i = 0; i < ids.length; i++) {
_balances[ids[i]][to] += amounts[i];
}
emit TransferBatch(operator, address(0), to, ids, amounts);
_doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
}
/**
* @dev Destroys `amount` tokens of token type `id` from `account`
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens of token type `id`.
*/
function _burn(address account, uint256 id, uint256 amount) internal virtual {
require(account != address(0), "ERC1155: burn from the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");
uint256 accountBalance = _balances[id][account];
require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
_balances[id][account] = accountBalance - amount;
emit TransferSingle(operator, account, address(0), id, amount);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
*/
function _burnBatch(address account, uint256[] memory ids, uint256[] memory amounts) internal virtual {
require(account != address(0), "ERC1155: burn from the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, account, address(0), ids, amounts, "");
for (uint i = 0; i < ids.length; i++) {
uint256 id = ids[i];
uint256 amount = amounts[i];
uint256 accountBalance = _balances[id][account];
require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
_balances[id][account] = accountBalance - amount;
}
emit TransferBatch(operator, account, address(0), ids, amounts);
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning, as well as batched variants.
*
* The same hook is called on both single and batched variants. For single
* transfers, the length of the `id` and `amount` arrays will be 1.
*
* Calling conditions (for each `id` and `amount` pair):
*
* - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* of token type `id` will be transferred to `to`.
* - When `from` is zero, `amount` tokens of token type `id` will be minted
* for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
* will be burned.
* - `from` and `to` are never both zero.
* - `ids` and `amounts` have the same, non-zero length.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
)
internal
virtual
{ }
function _doSafeTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
)
private
{
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
if (response != IERC1155Receiver(to).onERC1155Received.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _doSafeBatchTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
)
private
{
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (bytes4 response) {
if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
uint256[] memory array = new uint256[](1);
array[0] = element;
return array;
}
}
// File: contracts/CyberManufactureCoNFT.sol
pragma solidity ^0.8.4;
contract CyberManufactureCoNFT is ERC1155 {
address _admin;
uint32 coolingPeriod;
string creator;
mapping(uint256 => uint256) coolingTimes;
mapping(uint256 => string) metadataUris;
event CyberManufactureCoMint(uint256 id, uint256 amount, string metadataUri, address initialOwner, bytes data);
event CyberManufactureCoBurn(uint256 id, uint256 amount, address account);
event CyberManufactureCoTransfer(uint256 id, uint256 amount, address from, address to, address operator, bytes data);
event CyberManufactureCoSetup(uint32 coolingPeriod_, string creator_, string contractUri);
string _contractUri;
string _name;
string _symbol;
// not using default uri scheme
constructor(uint32 coolingPeriod_, string memory creator_, string memory contractUri) ERC1155(""){
coolingPeriod = coolingPeriod_;
creator = creator_;
_admin = msg.sender;
_contractUri = contractUri;
emit CyberManufactureCoSetup(coolingPeriod_, creator_, contractUri);
}
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == this.name.selector || interfaceId == this.symbol.selector ||
super.supportsInterface(interfaceId);
}
function name() public view returns (string memory){
return _name;
}
function symbol() public view returns (string memory){
return _symbol;
}
function setNameSymbol(string memory name_, string memory symbol_) public isAdmin() {
_name = name_;
_symbol = symbol_;
}
function tokenURI(uint256 tokenId) public view returns (string memory){
return metadataUris[tokenId];
}
modifier isAdmin(){
require(msg.sender == _admin, "only admin can do this");
_;
}
modifier nonExist(uint256 id){
require(coolingTimes[id] == 0, "NFT already exists");
_;
}
modifier isStillHot(uint256 id){
require(coolingTimes[id] >= block.timestamp, "NFT already became immutable");
_;
}
modifier isStillHotOrNonExist(uint256 id){
require(coolingTimes[id] == 0 || coolingTimes[id] >= block.timestamp, "NFT must be either non-exist or still mutable");
_;
}
function contractURI() public view returns (string memory) {
return _contractUri;
}
function setContractUri(string memory uri_) public isAdmin() {
_contractUri = uri_;
}
function mint(uint256 id, uint256 amount, string memory metadataUri, address initialOwner, bytes calldata data) public isAdmin() isStillHotOrNonExist(id) {
coolingTimes[id] = block.timestamp + coolingPeriod;
metadataUris[id] = metadataUri;
ERC1155._mint(initialOwner, id, amount, data);
emit CyberManufactureCoMint(id, amount, metadataUri, initialOwner, data);
}
function burn(uint256 id, uint256 amount, address account) public isAdmin() isStillHot(id) {
ERC1155._burn(account, id, amount);
emit CyberManufactureCoBurn(id, amount, account);
}
function setUri(uint256 id, string memory uri_) public isAdmin() isStillHot(id) {
metadataUris[id] = uri_;
}
function transferAdmin(address newAdmin) public isAdmin() {
_admin = newAdmin;
}
function uri(uint256 id) override public view returns (string memory){
return metadataUris[id];
}
function _beforeTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) override internal {
for (uint i = 0; i < ids.length; i++) {
emit CyberManufactureCoTransfer(ids[i], amounts[i], from, to, operator, data);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint32","name":"coolingPeriod_","type":"uint32"},{"internalType":"string","name":"creator_","type":"string"},{"internalType":"string","name":"contractUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"CyberManufactureCoBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"metadataUri","type":"string"},{"indexed":false,"internalType":"address","name":"initialOwner","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"CyberManufactureCoMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"coolingPeriod_","type":"uint32"},{"indexed":false,"internalType":"string","name":"creator_","type":"string"},{"indexed":false,"internalType":"string","name":"contractUri","type":"string"}],"name":"CyberManufactureCoSetup","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"CyberManufactureCoTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"name":"setContractUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"name":"setNameSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"uri_","type":"string"}],"name":"setUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620024213803806200242183398101604081905262000034916200023f565b6040805160208101909152600081526200004e81620000f1565b506003805463ffffffff60a01b1916600160a01b63ffffffff8616021790558151620000829060049060208501906200010a565b50600380546001600160a01b031916331790558051620000aa9060079060208401906200010a565b507f3dda09bf734275931dccfce227852d2d00852d9455d22db46057f82fb4dfe87e838383604051620000e093929190620002f0565b60405180910390a1505050620003ab565b8051620001069060029060208401906200010a565b5050565b828054620001189062000358565b90600052602060002090601f0160209004810192826200013c576000855562000187565b82601f106200015757805160ff191683800117855562000187565b8280016001018555821562000187579182015b82811115620001875782518255916020019190600101906200016a565b506200019592915062000199565b5090565b5b808211156200019557600081556001016200019a565b600082601f830112620001c1578081fd5b81516001600160401b0380821115620001de57620001de62000395565b604051601f8301601f19908116603f0116810190828211818310171562000209576200020962000395565b8160405283815286602085880101111562000222578485fd5b6200023584602083016020890162000325565b9695505050505050565b60008060006060848603121562000254578283fd5b835163ffffffff8116811462000268578384fd5b60208501519093506001600160401b038082111562000285578384fd5b6200029387838801620001b0565b93506040860151915080821115620002a9578283fd5b50620002b886828701620001b0565b9150509250925092565b60008151808452620002dc81602086016020860162000325565b601f01601f19169290920160200192915050565b63ffffffff84168152606060208201526000620003116060830185620002c2565b8281036040840152620002358185620002c2565b60005b838110156200034257818101518382015260200162000328565b8381111562000352576000848401525b50505050565b600181811c908216806200036d57607f821691505b602082108114156200038f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61206680620003bb6000396000f3fe608060405234801561001057600080fd5b50600436106100e55760003560e01c8062fdd58e146100ea57806301ffc9a71461011057806306fdde03146101335780630e89341c146101485780632eb2c2d61461015b57806338e71419146101705780634e1273f414610183578063504334c2146101a3578063749388c4146101b657806375829def146101c9578063782f08ae146101dc57806395d89b41146101ef578063a22cb465146101f7578063c87b56dd14610148578063ccb4807b1461020a578063e8a3d4851461021d578063e985e9c514610225578063f242432a14610261575b600080fd5b6100fd6100f8366004611805565b610274565b6040519081526020015b60405180910390f35b61012361011e3660046118f8565b61030b565b6040519015158152602001610107565b61013b610351565b6040516101079190611c62565b61013b6101563660046119c0565b6103e3565b61016e6101693660046116c4565b610485565b005b61016e61017e366004611a46565b61075a565b61019661019136600461182e565b6108e2565b6040516101079190611c21565b61016e6101b136600461196a565b610a43565b61016e6101c4366004611a12565b610a99565b61016e6101d7366004611671565b610b4c565b61016e6101ea3660046119d8565b610b98565b61013b610c17565b61016e6102053660046117cb565b610c26565b61016e610218366004611930565b610cfd565b61013b610d3e565b610123610233366004611692565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61016e61026f366004611769565b610d4d565b60006001600160a01b0383166102e55760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b031982166306fdde0360e01b148061033c57506001600160e01b031982166395d89b4160e01b145b8061034b575061034b82610eea565b92915050565b60606008805461036090611ea8565b80601f016020809104026020016040519081016040528092919081815260200182805461038c90611ea8565b80156103d95780601f106103ae576101008083540402835291602001916103d9565b820191906000526020600020905b8154815290600101906020018083116103bc57829003601f168201915b5050505050905090565b600081815260066020526040902080546060919061040090611ea8565b80601f016020809104026020016040519081016040528092919081815260200182805461042c90611ea8565b80156104795780601f1061044e57610100808354040283529160200191610479565b820191906000526020600020905b81548152906001019060200180831161045c57829003601f168201915b50505050509050919050565b81518351146104e75760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016102dc565b6001600160a01b03841661050d5760405162461bcd60e51b81526004016102dc90611cbd565b6001600160a01b03851633148061052957506105298533610233565b6105905760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016102dc565b3361059f818787878787610f3a565b60005b84518110156106ec5760008582815181106105cd57634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008583815181106105f957634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156106495760405162461bcd60e51b81526004016102dc90611d68565b6106538282611e91565b60008085815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055508160008085815260200190815260200160002060008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546106d19190611e79565b92505081905550505050806106e590611f0f565b90506105a2565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161073c929190611c34565b60405180910390a4610752818787878787610fe7565b505050505050565b6003546001600160a01b031633146107845760405162461bcd60e51b81526004016102dc90611d02565b600086815260056020526040902054869015806107af57506000818152600560205260409020544211155b6108115760405162461bcd60e51b815260206004820152602d60248201527f4e4654206d75737420626520656974686572206e6f6e2d6578697374206f722060448201526c7374696c6c206d757461626c6560981b60648201526084016102dc565b60035461082b90600160a01b900463ffffffff1642611e79565b600088815260056020908152604080832093909355600681529190208651610855928801906114da565b5061089884888886868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061115292505050565b7f4ba8773b4b46457bd554ed2ba03749d4c55b9d53305c96f30d610e63ca8259228787878787876040516108d196959493929190611df3565b60405180910390a150505050505050565b606081518351146109475760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016102dc565b600083516001600160401b0381111561097057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610999578160200160208202803683370190505b50905060005b8451811015610a3b57610a008582815181106109cb57634e487b7160e01b600052603260045260246000fd5b60200260200101518583815181106109f357634e487b7160e01b600052603260045260246000fd5b6020026020010151610274565b828281518110610a2057634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610a3481611f0f565b905061099f565b509392505050565b6003546001600160a01b03163314610a6d5760405162461bcd60e51b81526004016102dc90611d02565b8151610a809060089060208501906114da565b508051610a949060099060208401906114da565b505050565b6003546001600160a01b03163314610ac35760405162461bcd60e51b81526004016102dc90611d02565b6000838152600560205260409020548390421115610af35760405162461bcd60e51b81526004016102dc90611d32565b610afe828585611248565b60408051858152602081018590526001600160a01b0384168183015290517fffaea98798540aa71459a0259886a2f16e826e6a87bcc3521cce529e25c2a36e9181900360600190a150505050565b6003546001600160a01b03163314610b765760405162461bcd60e51b81526004016102dc90611d02565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314610bc25760405162461bcd60e51b81526004016102dc90611d02565b6000828152600560205260409020548290421115610bf25760405162461bcd60e51b81526004016102dc90611d32565b60008381526006602090815260409091208351610c11928501906114da565b50505050565b60606009805461036090611ea8565b336001600160a01b0383161415610c915760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016102dc565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6003546001600160a01b03163314610d275760405162461bcd60e51b81526004016102dc90611d02565b8051610d3a9060079060208401906114da565b5050565b60606007805461036090611ea8565b6001600160a01b038416610d735760405162461bcd60e51b81526004016102dc90611cbd565b6001600160a01b038516331480610d8f5750610d8f8533610233565b610ded5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084016102dc565b33610e0c818787610dfd886113b7565b610e06886113b7565b87610f3a565b6000848152602081815260408083206001600160a01b038a16845290915290205483811015610e4d5760405162461bcd60e51b81526004016102dc90611d68565b610e578482611e91565b6000868152602081815260408083206001600160a01b038c81168552925280832093909355881681529081208054869290610e93908490611e79565b909155505060408051868152602081018690526001600160a01b03808916928a82169291861691600080516020612011833981519152910160405180910390a4610ee1828888888888611410565b50505050505050565b60006001600160e01b03198216636cdb3d1360e11b1480610f1b57506001600160e01b031982166303a24d0760e21b145b8061034b57506301ffc9a760e01b6001600160e01b031983161461034b565b60005b8351811015610ee1577f162c63dda8f55438d302c62c5906574574069fa14ca47eab45c60e025d8ba35d848281518110610f8757634e487b7160e01b600052603260045260246000fd5b6020026020010151848381518110610faf57634e487b7160e01b600052603260045260246000fd5b602002602001015188888b87604051610fcd96959493929190611db2565b60405180910390a180610fdf81611f0f565b915050610f3d565b6001600160a01b0384163b156107525760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061102b9089908990889088908890600401611b7e565b602060405180830381600087803b15801561104557600080fd5b505af1925050508015611075575060408051601f3d908101601f1916820190925261107291810190611914565b60015b61112257611081611f56565b806308c379a014156110bb5750611096611f6e565b806110a157506110bd565b8060405162461bcd60e51b81526004016102dc9190611c62565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016102dc565b6001600160e01b0319811663bc197c8160e01b14610ee15760405162461bcd60e51b81526004016102dc90611c75565b6001600160a01b0384166111b25760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016102dc565b336111c381600087610dfd886113b7565b6000848152602081815260408083206001600160a01b0389168452909152812080548592906111f3908490611e79565b909155505060408051858152602081018590526001600160a01b038088169260009291851691600080516020612011833981519152910160405180910390a461124181600087878787611410565b5050505050565b6001600160a01b0383166112aa5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016102dc565b336112d9818560006112bb876113b7565b6112c4876113b7565b60405180602001604052806000815250610f3a565b6000838152602081815260408083206001600160a01b0388168452909152902054828110156113565760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016102dc565b6113608382611e91565b6000858152602081815260408083206001600160a01b038a81168086529184528285209590955581518981529283018890529293861691600080516020612011833981519152910160405180910390a45050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106113ff57634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b156107525760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906114549089908990889088908890600401611bdc565b602060405180830381600087803b15801561146e57600080fd5b505af192505050801561149e575060408051601f3d908101601f1916820190925261149b91810190611914565b60015b6114aa57611081611f56565b6001600160e01b0319811663f23a6e6160e01b14610ee15760405162461bcd60e51b81526004016102dc90611c75565b8280546114e690611ea8565b90600052602060002090601f016020900481019282611508576000855561154e565b82601f1061152157805160ff191683800117855561154e565b8280016001018555821561154e579182015b8281111561154e578251825591602001919060010190611533565b5061155a92915061155e565b5090565b5b8082111561155a576000815560010161155f565b80356001600160a01b038116811461158a57600080fd5b919050565b600082601f83011261159f578081fd5b813560206115ac82611e56565b6040516115b98282611ee3565b8381528281019150858301600585901b870184018810156115d8578586fd5b855b858110156115f6578135845292840192908401906001016115da565b5090979650505050505050565b600082601f830112611613578081fd5b81356001600160401b0381111561162c5761162c611f40565b604051611643601f8301601f191660200182611ee3565b818152846020838601011115611657578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215611682578081fd5b61168b82611573565b9392505050565b600080604083850312156116a4578081fd5b6116ad83611573565b91506116bb60208401611573565b90509250929050565b600080600080600060a086880312156116db578081fd5b6116e486611573565b94506116f260208701611573565b935060408601356001600160401b038082111561170d578283fd5b61171989838a0161158f565b9450606088013591508082111561172e578283fd5b61173a89838a0161158f565b9350608088013591508082111561174f578283fd5b5061175c88828901611603565b9150509295509295909350565b600080600080600060a08688031215611780578081fd5b61178986611573565b945061179760208701611573565b9350604086013592506060860135915060808601356001600160401b038111156117bf578182fd5b61175c88828901611603565b600080604083850312156117dd578182fd5b6117e683611573565b9150602083013580151581146117fa578182fd5b809150509250929050565b60008060408385031215611817578182fd5b61182083611573565b946020939093013593505050565b60008060408385031215611840578182fd5b82356001600160401b0380821115611856578384fd5b818501915085601f830112611869578384fd5b8135602061187682611e56565b6040516118838282611ee3565b8381528281019150858301600585901b870184018b10156118a2578889fd5b8896505b848710156118cb576118b781611573565b8352600196909601959183019183016118a6565b50965050860135925050808211156118e1578283fd5b506118ee8582860161158f565b9150509250929050565b600060208284031215611909578081fd5b813561168b81611ff7565b600060208284031215611925578081fd5b815161168b81611ff7565b600060208284031215611941578081fd5b81356001600160401b03811115611956578182fd5b61196284828501611603565b949350505050565b6000806040838503121561197c578182fd5b82356001600160401b0380821115611992578384fd5b61199e86838701611603565b935060208501359150808211156119b3578283fd5b506118ee85828601611603565b6000602082840312156119d1578081fd5b5035919050565b600080604083850312156119ea578182fd5b8235915060208301356001600160401b03811115611a06578182fd5b6118ee85828601611603565b600080600060608486031215611a26578081fd5b8335925060208401359150611a3d60408501611573565b90509250925092565b60008060008060008060a08789031215611a5e578384fd5b863595506020870135945060408701356001600160401b0380821115611a82578586fd5b611a8e8a838b01611603565b9550611a9c60608a01611573565b94506080890135915080821115611ab1578283fd5b818901915089601f830112611ac4578283fd5b813581811115611ad2578384fd5b8a6020828501011115611ae3578384fd5b6020830194508093505050509295509295509295565b6000815180845260208085019450808401835b83811015611b2857815187529582019590820190600101611b0c565b509495945050505050565b60008151808452815b81811015611b5857602081850181015186830182015201611b3c565b81811115611b695782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0386811682528516602082015260a060408201819052600090611baa90830186611af9565b8281036060840152611bbc8186611af9565b90508281036080840152611bd08185611b33565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611c1690830184611b33565b979650505050505050565b60208152600061168b6020830184611af9565b604081526000611c476040830185611af9565b8281036020840152611c598185611af9565b95945050505050565b60208152600061168b6020830184611b33565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252601690820152756f6e6c792061646d696e2063616e20646f207468697360501b604082015260600190565b6020808252601c908201527b4e465420616c726561647920626563616d6520696d6d757461626c6560201b604082015260600190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b868152602081018690526001600160a01b03858116604083015284811660608301528316608082015260c060a08201819052600090611bd090830184611b33565b86815285602082015260a060408201526000611e1260a0830187611b33565b6001600160a01b038616606084015282810360808401528381528385602083013781602085830101526020601f19601f860116820101915050979650505050505050565b60006001600160401b03821115611e6f57611e6f611f40565b5060051b60200190565b60008219821115611e8c57611e8c611f2a565b500190565b600082821015611ea357611ea3611f2a565b500390565b600181811c90821680611ebc57607f821691505b60208210811415611edd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f191681016001600160401b0381118282101715611f0857611f08611f40565b6040525050565b6000600019821415611f2357611f23611f2a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d1115611f6b57600481823e5160e01c5b90565b600060443d1015611f7c5790565b6040516003193d81016004833e81513d6001600160401b038083116024840183101715611fab57505050505090565b8285019150815181811115611fc35750505050505090565b843d8701016020828501011115611fdd5750505050505090565b611fec60208286010187611ee3565b509095945050505050565b6001600160e01b03198116811461200d57600080fd5b5056fec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62a264697066735822122061bcd325ac292f17a2aa845d098ef4abc0d46228fe9098494d05cd4598722b3f64736f6c634300080400330000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000c6368656e6368656e6368656e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d513167354d48384c797147736d344d62653559426578796e47797354794462457542585872796d427439326a0000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100e55760003560e01c8062fdd58e146100ea57806301ffc9a71461011057806306fdde03146101335780630e89341c146101485780632eb2c2d61461015b57806338e71419146101705780634e1273f414610183578063504334c2146101a3578063749388c4146101b657806375829def146101c9578063782f08ae146101dc57806395d89b41146101ef578063a22cb465146101f7578063c87b56dd14610148578063ccb4807b1461020a578063e8a3d4851461021d578063e985e9c514610225578063f242432a14610261575b600080fd5b6100fd6100f8366004611805565b610274565b6040519081526020015b60405180910390f35b61012361011e3660046118f8565b61030b565b6040519015158152602001610107565b61013b610351565b6040516101079190611c62565b61013b6101563660046119c0565b6103e3565b61016e6101693660046116c4565b610485565b005b61016e61017e366004611a46565b61075a565b61019661019136600461182e565b6108e2565b6040516101079190611c21565b61016e6101b136600461196a565b610a43565b61016e6101c4366004611a12565b610a99565b61016e6101d7366004611671565b610b4c565b61016e6101ea3660046119d8565b610b98565b61013b610c17565b61016e6102053660046117cb565b610c26565b61016e610218366004611930565b610cfd565b61013b610d3e565b610123610233366004611692565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61016e61026f366004611769565b610d4d565b60006001600160a01b0383166102e55760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b031982166306fdde0360e01b148061033c57506001600160e01b031982166395d89b4160e01b145b8061034b575061034b82610eea565b92915050565b60606008805461036090611ea8565b80601f016020809104026020016040519081016040528092919081815260200182805461038c90611ea8565b80156103d95780601f106103ae576101008083540402835291602001916103d9565b820191906000526020600020905b8154815290600101906020018083116103bc57829003601f168201915b5050505050905090565b600081815260066020526040902080546060919061040090611ea8565b80601f016020809104026020016040519081016040528092919081815260200182805461042c90611ea8565b80156104795780601f1061044e57610100808354040283529160200191610479565b820191906000526020600020905b81548152906001019060200180831161045c57829003601f168201915b50505050509050919050565b81518351146104e75760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016102dc565b6001600160a01b03841661050d5760405162461bcd60e51b81526004016102dc90611cbd565b6001600160a01b03851633148061052957506105298533610233565b6105905760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016102dc565b3361059f818787878787610f3a565b60005b84518110156106ec5760008582815181106105cd57634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008583815181106105f957634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156106495760405162461bcd60e51b81526004016102dc90611d68565b6106538282611e91565b60008085815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055508160008085815260200190815260200160002060008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546106d19190611e79565b92505081905550505050806106e590611f0f565b90506105a2565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161073c929190611c34565b60405180910390a4610752818787878787610fe7565b505050505050565b6003546001600160a01b031633146107845760405162461bcd60e51b81526004016102dc90611d02565b600086815260056020526040902054869015806107af57506000818152600560205260409020544211155b6108115760405162461bcd60e51b815260206004820152602d60248201527f4e4654206d75737420626520656974686572206e6f6e2d6578697374206f722060448201526c7374696c6c206d757461626c6560981b60648201526084016102dc565b60035461082b90600160a01b900463ffffffff1642611e79565b600088815260056020908152604080832093909355600681529190208651610855928801906114da565b5061089884888886868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061115292505050565b7f4ba8773b4b46457bd554ed2ba03749d4c55b9d53305c96f30d610e63ca8259228787878787876040516108d196959493929190611df3565b60405180910390a150505050505050565b606081518351146109475760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016102dc565b600083516001600160401b0381111561097057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610999578160200160208202803683370190505b50905060005b8451811015610a3b57610a008582815181106109cb57634e487b7160e01b600052603260045260246000fd5b60200260200101518583815181106109f357634e487b7160e01b600052603260045260246000fd5b6020026020010151610274565b828281518110610a2057634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610a3481611f0f565b905061099f565b509392505050565b6003546001600160a01b03163314610a6d5760405162461bcd60e51b81526004016102dc90611d02565b8151610a809060089060208501906114da565b508051610a949060099060208401906114da565b505050565b6003546001600160a01b03163314610ac35760405162461bcd60e51b81526004016102dc90611d02565b6000838152600560205260409020548390421115610af35760405162461bcd60e51b81526004016102dc90611d32565b610afe828585611248565b60408051858152602081018590526001600160a01b0384168183015290517fffaea98798540aa71459a0259886a2f16e826e6a87bcc3521cce529e25c2a36e9181900360600190a150505050565b6003546001600160a01b03163314610b765760405162461bcd60e51b81526004016102dc90611d02565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314610bc25760405162461bcd60e51b81526004016102dc90611d02565b6000828152600560205260409020548290421115610bf25760405162461bcd60e51b81526004016102dc90611d32565b60008381526006602090815260409091208351610c11928501906114da565b50505050565b60606009805461036090611ea8565b336001600160a01b0383161415610c915760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016102dc565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6003546001600160a01b03163314610d275760405162461bcd60e51b81526004016102dc90611d02565b8051610d3a9060079060208401906114da565b5050565b60606007805461036090611ea8565b6001600160a01b038416610d735760405162461bcd60e51b81526004016102dc90611cbd565b6001600160a01b038516331480610d8f5750610d8f8533610233565b610ded5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084016102dc565b33610e0c818787610dfd886113b7565b610e06886113b7565b87610f3a565b6000848152602081815260408083206001600160a01b038a16845290915290205483811015610e4d5760405162461bcd60e51b81526004016102dc90611d68565b610e578482611e91565b6000868152602081815260408083206001600160a01b038c81168552925280832093909355881681529081208054869290610e93908490611e79565b909155505060408051868152602081018690526001600160a01b03808916928a82169291861691600080516020612011833981519152910160405180910390a4610ee1828888888888611410565b50505050505050565b60006001600160e01b03198216636cdb3d1360e11b1480610f1b57506001600160e01b031982166303a24d0760e21b145b8061034b57506301ffc9a760e01b6001600160e01b031983161461034b565b60005b8351811015610ee1577f162c63dda8f55438d302c62c5906574574069fa14ca47eab45c60e025d8ba35d848281518110610f8757634e487b7160e01b600052603260045260246000fd5b6020026020010151848381518110610faf57634e487b7160e01b600052603260045260246000fd5b602002602001015188888b87604051610fcd96959493929190611db2565b60405180910390a180610fdf81611f0f565b915050610f3d565b6001600160a01b0384163b156107525760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061102b9089908990889088908890600401611b7e565b602060405180830381600087803b15801561104557600080fd5b505af1925050508015611075575060408051601f3d908101601f1916820190925261107291810190611914565b60015b61112257611081611f56565b806308c379a014156110bb5750611096611f6e565b806110a157506110bd565b8060405162461bcd60e51b81526004016102dc9190611c62565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016102dc565b6001600160e01b0319811663bc197c8160e01b14610ee15760405162461bcd60e51b81526004016102dc90611c75565b6001600160a01b0384166111b25760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016102dc565b336111c381600087610dfd886113b7565b6000848152602081815260408083206001600160a01b0389168452909152812080548592906111f3908490611e79565b909155505060408051858152602081018590526001600160a01b038088169260009291851691600080516020612011833981519152910160405180910390a461124181600087878787611410565b5050505050565b6001600160a01b0383166112aa5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016102dc565b336112d9818560006112bb876113b7565b6112c4876113b7565b60405180602001604052806000815250610f3a565b6000838152602081815260408083206001600160a01b0388168452909152902054828110156113565760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b60648201526084016102dc565b6113608382611e91565b6000858152602081815260408083206001600160a01b038a81168086529184528285209590955581518981529283018890529293861691600080516020612011833981519152910160405180910390a45050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106113ff57634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b156107525760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906114549089908990889088908890600401611bdc565b602060405180830381600087803b15801561146e57600080fd5b505af192505050801561149e575060408051601f3d908101601f1916820190925261149b91810190611914565b60015b6114aa57611081611f56565b6001600160e01b0319811663f23a6e6160e01b14610ee15760405162461bcd60e51b81526004016102dc90611c75565b8280546114e690611ea8565b90600052602060002090601f016020900481019282611508576000855561154e565b82601f1061152157805160ff191683800117855561154e565b8280016001018555821561154e579182015b8281111561154e578251825591602001919060010190611533565b5061155a92915061155e565b5090565b5b8082111561155a576000815560010161155f565b80356001600160a01b038116811461158a57600080fd5b919050565b600082601f83011261159f578081fd5b813560206115ac82611e56565b6040516115b98282611ee3565b8381528281019150858301600585901b870184018810156115d8578586fd5b855b858110156115f6578135845292840192908401906001016115da565b5090979650505050505050565b600082601f830112611613578081fd5b81356001600160401b0381111561162c5761162c611f40565b604051611643601f8301601f191660200182611ee3565b818152846020838601011115611657578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215611682578081fd5b61168b82611573565b9392505050565b600080604083850312156116a4578081fd5b6116ad83611573565b91506116bb60208401611573565b90509250929050565b600080600080600060a086880312156116db578081fd5b6116e486611573565b94506116f260208701611573565b935060408601356001600160401b038082111561170d578283fd5b61171989838a0161158f565b9450606088013591508082111561172e578283fd5b61173a89838a0161158f565b9350608088013591508082111561174f578283fd5b5061175c88828901611603565b9150509295509295909350565b600080600080600060a08688031215611780578081fd5b61178986611573565b945061179760208701611573565b9350604086013592506060860135915060808601356001600160401b038111156117bf578182fd5b61175c88828901611603565b600080604083850312156117dd578182fd5b6117e683611573565b9150602083013580151581146117fa578182fd5b809150509250929050565b60008060408385031215611817578182fd5b61182083611573565b946020939093013593505050565b60008060408385031215611840578182fd5b82356001600160401b0380821115611856578384fd5b818501915085601f830112611869578384fd5b8135602061187682611e56565b6040516118838282611ee3565b8381528281019150858301600585901b870184018b10156118a2578889fd5b8896505b848710156118cb576118b781611573565b8352600196909601959183019183016118a6565b50965050860135925050808211156118e1578283fd5b506118ee8582860161158f565b9150509250929050565b600060208284031215611909578081fd5b813561168b81611ff7565b600060208284031215611925578081fd5b815161168b81611ff7565b600060208284031215611941578081fd5b81356001600160401b03811115611956578182fd5b61196284828501611603565b949350505050565b6000806040838503121561197c578182fd5b82356001600160401b0380821115611992578384fd5b61199e86838701611603565b935060208501359150808211156119b3578283fd5b506118ee85828601611603565b6000602082840312156119d1578081fd5b5035919050565b600080604083850312156119ea578182fd5b8235915060208301356001600160401b03811115611a06578182fd5b6118ee85828601611603565b600080600060608486031215611a26578081fd5b8335925060208401359150611a3d60408501611573565b90509250925092565b60008060008060008060a08789031215611a5e578384fd5b863595506020870135945060408701356001600160401b0380821115611a82578586fd5b611a8e8a838b01611603565b9550611a9c60608a01611573565b94506080890135915080821115611ab1578283fd5b818901915089601f830112611ac4578283fd5b813581811115611ad2578384fd5b8a6020828501011115611ae3578384fd5b6020830194508093505050509295509295509295565b6000815180845260208085019450808401835b83811015611b2857815187529582019590820190600101611b0c565b509495945050505050565b60008151808452815b81811015611b5857602081850181015186830182015201611b3c565b81811115611b695782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0386811682528516602082015260a060408201819052600090611baa90830186611af9565b8281036060840152611bbc8186611af9565b90508281036080840152611bd08185611b33565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611c1690830184611b33565b979650505050505050565b60208152600061168b6020830184611af9565b604081526000611c476040830185611af9565b8281036020840152611c598185611af9565b95945050505050565b60208152600061168b6020830184611b33565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252601690820152756f6e6c792061646d696e2063616e20646f207468697360501b604082015260600190565b6020808252601c908201527b4e465420616c726561647920626563616d6520696d6d757461626c6560201b604082015260600190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b868152602081018690526001600160a01b03858116604083015284811660608301528316608082015260c060a08201819052600090611bd090830184611b33565b86815285602082015260a060408201526000611e1260a0830187611b33565b6001600160a01b038616606084015282810360808401528381528385602083013781602085830101526020601f19601f860116820101915050979650505050505050565b60006001600160401b03821115611e6f57611e6f611f40565b5060051b60200190565b60008219821115611e8c57611e8c611f2a565b500190565b600082821015611ea357611ea3611f2a565b500390565b600181811c90821680611ebc57607f821691505b60208210811415611edd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f191681016001600160401b0381118282101715611f0857611f08611f40565b6040525050565b6000600019821415611f2357611f23611f2a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d1115611f6b57600481823e5160e01c5b90565b600060443d1015611f7c5790565b6040516003193d81016004833e81513d6001600160401b038083116024840183101715611fab57505050505090565b8285019150815181811115611fc35750505050505090565b843d8701016020828501011115611fdd5750505050505090565b611fec60208286010187611ee3565b509095945050505050565b6001600160e01b03198116811461200d57600080fd5b5056fec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62a264697066735822122061bcd325ac292f17a2aa845d098ef4abc0d46228fe9098494d05cd4598722b3f64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000c6368656e6368656e6368656e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d513167354d48384c797147736d344d62653559426578796e47797354794462457542585872796d427439326a0000000000000000000000
-----Decoded View---------------
Arg [0] : coolingPeriod_ (uint32): 86400
Arg [1] : creator_ (string): chenchenchen
Arg [2] : contractUri (string): ipfs://QmQ1g5MH8LyqGsm4Mbe5YBexynGysTyDbEuBXXrymBt92j
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [4] : 6368656e6368656e6368656e0000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [6] : 697066733a2f2f516d513167354d48384c797147736d344d6265355942657879
Arg [7] : 6e47797354794462457542585872796d427439326a0000000000000000000000
Deployed Bytecode Sourcemap
31646:3924:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19798:231;;;;;;:::i;:::-;;:::i;:::-;;;19072:25:1;;;19060:2;19045:18;19798:231:0;;;;;;;;32712:243;;;;;;:::i;:::-;;:::i;:::-;;;12225:14:1;;12218:22;12200:41;;12188:2;12173:18;32712:243:0;12155:92:1;32963:82:0;;;:::i;:::-;;;;;;;:::i;35066:111::-;;;;;;:::i;:::-;;:::i;22501:1239::-;;;;;;:::i;:::-;;:::i;:::-;;34212:403;;;;;;:::i;:::-;;:::i;20195:549::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;33147:144::-;;;;;;:::i;:::-;;:::i;34623:203::-;;;;;;:::i;:::-;;:::i;34964:94::-;;;;;;:::i;:::-;;:::i;34834:122::-;;;;;;:::i;:::-;;:::i;33053:86::-;;;:::i;20817:311::-;;;;;;:::i;:::-;;:::i;34105:99::-;;;;;;:::i;:::-;;:::i;34000:97::-;;;:::i;21200:168::-;;;;;;:::i;:::-;-1:-1:-1;;;;;21323:27:0;;;21299:4;21323:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;21200:168;21440:984;;;;;;:::i;:::-;;:::i;19798:231::-;19884:7;-1:-1:-1;;;;;19912:21:0;;19904:77;;;;-1:-1:-1;;;19904:77:0;;13508:2:1;19904:77:0;;;13490:21:1;13547:2;13527:18;;;13520:30;13586:34;13566:18;;;13559:62;-1:-1:-1;;;13637:18:1;;;13630:41;13688:19;;19904:77:0;;;;;;;;;-1:-1:-1;19999:9:0;:13;;;;;;;;;;;-1:-1:-1;;;;;19999:22:0;;;;;;;;;;;;19798:231::o;32712:243::-;32797:4;-1:-1:-1;;;;;;32822:33:0;;-1:-1:-1;;;32822:33:0;;:72;;-1:-1:-1;;;;;;;32859:35:0;;-1:-1:-1;;;32859:35:0;32822:72;:125;;;;32911:36;32935:11;32911:23;:36::i;:::-;32814:133;32712:243;-1:-1:-1;;32712:243:0:o;32963:82::-;33000:13;33032:5;33025:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32963:82;:::o;35066:111::-;35153:16;;;;:12;:16;;;;;35146:23;;35121:13;;35153:16;35146:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35066:111;;;:::o;22501:1239::-;22766:7;:14;22752:3;:10;:28;22744:81;;;;-1:-1:-1;;;22744:81:0;;18317:2:1;22744:81:0;;;18299:21:1;18356:2;18336:18;;;18329:30;18395:34;18375:18;;;18368:62;-1:-1:-1;;;18446:18:1;;;18439:38;18494:19;;22744:81:0;18289:230:1;22744:81:0;-1:-1:-1;;;;;22844:16:0;;22836:66;;;;-1:-1:-1;;;22836:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22935:20:0;;16586:10;22935:20;;:60;;-1:-1:-1;22959:36:0;22976:4;16586:10;21200:168;:::i;22959:36::-;22913:160;;;;-1:-1:-1;;;22913:160:0;;15141:2:1;22913:160:0;;;15123:21:1;15180:2;15160:18;;;15153:30;15219:34;15199:18;;;15192:62;-1:-1:-1;;;15270:18:1;;;15263:48;15328:19;;22913:160:0;15113:240:1;22913:160:0;16586:10;23130:60;16586:10;23161:4;23167:2;23171:3;23176:7;23185:4;23130:20;:60::i;:::-;23208:9;23203:377;23227:3;:10;23223:1;:14;23203:377;;;23259:10;23272:3;23276:1;23272:6;;;;;;-1:-1:-1;;;23272:6:0;;;;;;;;;;;;;;;23259:19;;23293:14;23310:7;23318:1;23310:10;;;;;;-1:-1:-1;;;23310:10:0;;;;;;;;;;;;;;;;;;;;23337:19;23359:13;;;;;;;;;;-1:-1:-1;;;;;23359:19:0;;;;;;;;;;;;23310:10;;-1:-1:-1;23401:21:0;;;;23393:76;;;;-1:-1:-1;;;23393:76:0;;;;;;;:::i;:::-;23506:20;23520:6;23506:11;:20;:::i;:::-;23484:9;:13;23494:2;23484:13;;;;;;;;;;;:19;23498:4;-1:-1:-1;;;;;23484:19:0;-1:-1:-1;;;;;23484:19:0;;;;;;;;;;;;:42;;;;23562:6;23541:9;:13;23551:2;23541:13;;;;;;;;;;;:17;23555:2;-1:-1:-1;;;;;23541:17:0;-1:-1:-1;;;;;23541:17:0;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;23203:377;;;23239:3;;;;:::i;:::-;;;23203:377;;;;23627:2;-1:-1:-1;;;;;23597:47:0;23621:4;-1:-1:-1;;;;;23597:47:0;23611:8;-1:-1:-1;;;;;23597:47:0;;23631:3;23636:7;23597:47;;;;;;;:::i;:::-;;;;;;;;23657:75;23693:8;23703:4;23709:2;23713:3;23718:7;23727:4;23657:35;:75::i;:::-;22501:1239;;;;;;:::o;34212:403::-;33475:6;;-1:-1:-1;;;;;33475:6:0;33461:10;:20;33453:55;;;;-1:-1:-1;;;33453:55:0;;;;;;;:::i;:::-;33862:16:::1;::::0;;;:12:::1;:16;::::0;;;;;34362:2;;33862:21;;:60:::1;;-1:-1:-1::0;33887:16:0::1;::::0;;;:12:::1;:16;::::0;;;;;33907:15:::1;-1:-1:-1::0;33887:35:0::1;33862:60;33854:118;;;::::0;-1:-1:-1;;;33854:118:0;;17493:2:1;33854:118:0::1;::::0;::::1;17475:21:1::0;17532:2;17512:18;;;17505:30;17571:34;17551:18;;;17544:62;-1:-1:-1;;;17622:18:1;;;17615:43;17675:19;;33854:118:0::1;17465:235:1::0;33854:118:0::1;34414:13:::2;::::0;34396:31:::2;::::0;-1:-1:-1;;;34414:13:0;::::2;;;34396:15;:31;:::i;:::-;34377:16;::::0;;;:12:::2;:16;::::0;;;;;;;:50;;;;34438:12:::2;:16:::0;;;;;:30;;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;;34479:45;34493:12;34507:2;34511:6;34519:4;;34479:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;34479:13:0::2;::::0;-1:-1:-1;;;34479:45:0:i:2;:::-;34540:67;34563:2;34567:6;34575:11;34588:12;34602:4;;34540:67;;;;;;;;;;;:::i;:::-;;;;;;;;33519:1:::1;34212:403:::0;;;;;;:::o;20195:549::-;20376:16;20437:3;:10;20418:8;:15;:29;20410:83;;;;-1:-1:-1;;;20410:83:0;;17907:2:1;20410:83:0;;;17889:21:1;17946:2;17926:18;;;17919:30;17985:34;17965:18;;;17958:62;-1:-1:-1;;;18036:18:1;;;18029:39;18085:19;;20410:83:0;17879:231:1;20410:83:0;20506:30;20553:8;:15;-1:-1:-1;;;;;20539:30:0;;;;;-1:-1:-1;;;20539:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20539:30:0;;20506:63;;20587:9;20582:122;20606:8;:15;20602:1;:19;20582:122;;;20662:30;20672:8;20681:1;20672:11;;;;;;-1:-1:-1;;;20672:11:0;;;;;;;;;;;;;;;20685:3;20689:1;20685:6;;;;;;-1:-1:-1;;;20685:6:0;;;;;;;;;;;;;;;20662:9;:30::i;:::-;20643:13;20657:1;20643:16;;;;;;-1:-1:-1;;;20643:16:0;;;;;;;;;;;;;;;;;;:49;20623:3;;;:::i;:::-;;;20582:122;;;-1:-1:-1;20723:13:0;20195:549;-1:-1:-1;;;20195:549:0:o;33147:144::-;33475:6;;-1:-1:-1;;;;;33475:6:0;33461:10;:20;33453:55;;;;-1:-1:-1;;;33453:55:0;;;;;;;:::i;:::-;33242:13;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;33266:17:0;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;;33147:144:::0;;:::o;34623:203::-;33475:6;;-1:-1:-1;;;;;33475:6:0;33461:10;:20;33453:55;;;;-1:-1:-1;;;33453:55:0;;;;;;;:::i;:::-;33706:16:::1;::::0;;;:12:::1;:16;::::0;;;;;34710:2;;33726:15:::1;-1:-1:-1::0;33706:35:0::1;33698:76;;;;-1:-1:-1::0;;;33698:76:0::1;;;;;;;:::i;:::-;34725:34:::2;34739:7;34748:2;34752:6;34725:13;:34::i;:::-;34775:43;::::0;;19563:25:1;;;19619:2;19604:18;;19597:34;;;-1:-1:-1;;;;;19667:32:1;;19647:18;;;19640:60;34775:43:0;;::::2;::::0;;;;19551:2:1;34775:43:0;;::::2;33519:1:::1;34623:203:::0;;;:::o;34964:94::-;33475:6;;-1:-1:-1;;;;;33475:6:0;33461:10;:20;33453:55;;;;-1:-1:-1;;;33453:55:0;;;;;;;:::i;:::-;35033:6:::1;:17:::0;;-1:-1:-1;;;;;;35033:17:0::1;-1:-1:-1::0;;;;;35033:17:0;;;::::1;::::0;;;::::1;::::0;;34964:94::o;34834:122::-;33475:6;;-1:-1:-1;;;;;33475:6:0;33461:10;:20;33453:55;;;;-1:-1:-1;;;33453:55:0;;;;;;;:::i;:::-;33706:16:::1;::::0;;;:12:::1;:16;::::0;;;;;34910:2;;33726:15:::1;-1:-1:-1::0;33706:35:0::1;33698:76;;;;-1:-1:-1::0;;;33698:76:0::1;;;;;;;:::i;:::-;34925:16:::2;::::0;;;:12:::2;:16;::::0;;;;;;;:23;;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;;33519:1:::1;34834:122:::0;;:::o;33053:86::-;33092:13;33124:7;33117:14;;;;;:::i;20817:311::-;16586:10;-1:-1:-1;;;;;20920:24:0;;;;20912:78;;;;-1:-1:-1;;;20912:78:0;;17083:2:1;20912:78:0;;;17065:21:1;17122:2;17102:18;;;17095:30;17161:34;17141:18;;;17134:62;-1:-1:-1;;;17212:18:1;;;17205:39;17261:19;;20912:78:0;17055:231:1;20912:78:0;16586:10;21003:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;21003:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;21003:53:0;;;;;;;;;;21072:48;;12200:41:1;;;21003:42:0;;16586:10;21072:48;;12173:18:1;21072:48:0;;;;;;;20817:311;;:::o;34105:99::-;33475:6;;-1:-1:-1;;;;;33475:6:0;33461:10;:20;33453:55;;;;-1:-1:-1;;;33453:55:0;;;;;;;:::i;:::-;34177:19;;::::1;::::0;:12:::1;::::0;:19:::1;::::0;::::1;::::0;::::1;:::i;:::-;;34105:99:::0;:::o;34000:97::-;34044:13;34077:12;34070:19;;;;;:::i;21440:984::-;-1:-1:-1;;;;;21666:16:0;;21658:66;;;;-1:-1:-1;;;21658:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21757:20:0;;16586:10;21757:20;;:60;;-1:-1:-1;21781:36:0;21798:4;16586:10;21200:168;:::i;21781:36::-;21735:151;;;;-1:-1:-1;;;21735:151:0;;14325:2:1;21735:151:0;;;14307:21:1;14364:2;14344:18;;;14337:30;14403:34;14383:18;;;14376:62;-1:-1:-1;;;14454:18:1;;;14447:39;14503:19;;21735:151:0;14297:231:1;21735:151:0;16586:10;21943:96;16586:10;21974:4;21980:2;21984:21;22002:2;21984:17;:21::i;:::-;22007:25;22025:6;22007:17;:25::i;:::-;22034:4;21943:20;:96::i;:::-;22052:19;22074:13;;;;;;;;;;;-1:-1:-1;;;;;22074:19:0;;;;;;;;;;22112:21;;;;22104:76;;;;-1:-1:-1;;;22104:76:0;;;;;;;:::i;:::-;22213:20;22227:6;22213:11;:20;:::i;:::-;22191:9;:13;;;;;;;;;;;-1:-1:-1;;;;;22191:19:0;;;;;;;;;;:42;;;;22244:17;;;;;;;:27;;22265:6;;22191:9;22244:27;;22265:6;;22244:27;:::i;:::-;;;;-1:-1:-1;;22289:46:0;;;19282:25:1;;;19338:2;19323:18;;19316:34;;;-1:-1:-1;;;;;22289:46:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22289:46:0;19255:18:1;22289:46:0;;;;;;;22348:68;22379:8;22389:4;22395:2;22399;22403:6;22411:4;22348:30;:68::i;:::-;21440:984;;;;;;;:::o;18834:297::-;18936:4;-1:-1:-1;;;;;;18960:41:0;;-1:-1:-1;;;18960:41:0;;:110;;-1:-1:-1;;;;;;;19018:52:0;;-1:-1:-1;;;19018:52:0;18960:110;:163;;;-1:-1:-1;;;;;;;;;;17761:40:0;;;19087:36;17652:157;35185:382;35421:6;35416:142;35437:3;:10;35433:1;:14;35416:142;;;35474:72;35501:3;35505:1;35501:6;;;;;;-1:-1:-1;;;35501:6:0;;;;;;;;;;;;;;;35509:7;35517:1;35509:10;;;;;;-1:-1:-1;;;35509:10:0;;;;;;;;;;;;;;;35521:4;35527:2;35531:8;35541:4;35474:72;;;;;;;;;;;:::i;:::-;;;;;;;;35449:3;;;;:::i;:::-;;;;35416:142;;30557:799;-1:-1:-1;;;;;30811:13:0;;8990:20;9029:8;30807:542;;30847:79;;-1:-1:-1;;;30847:79:0;;-1:-1:-1;;;;;30847:43:0;;;;;:79;;30891:8;;30901:4;;30907:3;;30912:7;;30921:4;;30847:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30847:79:0;;;;;;;;-1:-1:-1;;30847:79:0;;;;;;;;;;;;:::i;:::-;;;30843:495;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;31211:6;31204:14;;-1:-1:-1;;;31204:14:0;;;;;;;;:::i;30843:495::-;;;31260:62;;-1:-1:-1;;;31260:62:0;;12678:2:1;31260:62:0;;;12660:21:1;12717:2;12697:18;;;12690:30;12756:34;12736:18;;;12729:62;-1:-1:-1;;;12807:18:1;;;12800:50;12867:19;;31260:62:0;12650:242:1;30843:495:0;-1:-1:-1;;;;;;30976:64:0;;-1:-1:-1;;;30976:64:0;30972:163;;31065:50;;-1:-1:-1;;;31065:50:0;;;;;;;:::i;25073:556::-;-1:-1:-1;;;;;25188:21:0;;25180:67;;;;-1:-1:-1;;;25180:67:0;;18726:2:1;25180:67:0;;;18708:21:1;18765:2;18745:18;;;18738:30;18804:34;18784:18;;;18777:62;-1:-1:-1;;;18855:18:1;;;18848:31;18896:19;;25180:67:0;18698:223:1;25180:67:0;16586:10;25304:107;16586:10;25260:16;25347:7;25356:21;25374:2;25356:17;:21::i;25304:107::-;25424:9;:13;;;;;;;;;;;-1:-1:-1;;;;;25424:22:0;;;;;;;;;:32;;25450:6;;25424:9;:32;;25450:6;;25424:32;:::i;:::-;;;;-1:-1:-1;;25472:57:0;;;19282:25:1;;;19338:2;19323:18;;19316:34;;;-1:-1:-1;;;;;25472:57:0;;;;25505:1;;25472:57;;;;-1:-1:-1;;;;;;;;;;;25472:57:0;19255:18:1;25472:57:0;;;;;;;25542:79;25573:8;25591:1;25595:7;25604:2;25608:6;25616:4;25542:30;:79::i;:::-;25073:556;;;;;:::o;26933:605::-;-1:-1:-1;;;;;27029:21:0;;27021:69;;;;-1:-1:-1;;;27021:69:0;;15911:2:1;27021:69:0;;;15893:21:1;15950:2;15930:18;;;15923:30;15989:34;15969:18;;;15962:62;-1:-1:-1;;;16040:18:1;;;16033:33;16083:19;;27021:69:0;15883:225:1;27021:69:0;16586:10;27147:105;16586:10;27178:7;27103:16;27199:21;27217:2;27199:17;:21::i;:::-;27222:25;27240:6;27222:17;:25::i;:::-;27147:105;;;;;;;;;;;;:20;:105::i;:::-;27265:22;27290:13;;;;;;;;;;;-1:-1:-1;;;;;27290:22:0;;;;;;;;;;27331:24;;;;27323:73;;;;-1:-1:-1;;;27323:73:0;;13920:2:1;27323:73:0;;;13902:21:1;13959:2;13939:18;;;13932:30;13998:34;13978:18;;;13971:62;-1:-1:-1;;;14049:18:1;;;14042:34;14093:19;;27323:73:0;13892:226:1;27323:73:0;27432:23;27449:6;27432:14;:23;:::i;:::-;27407:9;:13;;;;;;;;;;;-1:-1:-1;;;;;27407:22:0;;;;;;;;;;;;:48;;;;27473:57;;19282:25:1;;;19323:18;;;19316:34;;;27407:9:0;;27473:57;;;-1:-1:-1;;;;;;;;;;;27473:57:0;19255:18:1;27473:57:0;;;;;;;26933:605;;;;;:::o;31364:198::-;31484:16;;;31498:1;31484:16;;;;;;;;;31430;;31459:22;;31484:16;;;;;;;;;;;;-1:-1:-1;31484:16:0;31459:41;;31522:7;31511:5;31517:1;31511:8;;;;;;-1:-1:-1;;;31511:8:0;;;;;;;;;;;;;;;;;;:18;31549:5;31364:198;-1:-1:-1;;31364:198:0:o;29787:762::-;-1:-1:-1;;;;;30016:13:0;;8990:20;9029:8;30012:530;;30052:72;;-1:-1:-1;;;30052:72:0;;-1:-1:-1;;;;;30052:38:0;;;;;:72;;30091:8;;30101:4;;30107:2;;30111:6;;30119:4;;30052:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30052:72:0;;;;;;;;-1:-1:-1;;30052:72:0;;;;;;;;;;;;:::i;:::-;;;30048:483;;;;:::i;:::-;-1:-1:-1;;;;;;30174:59:0;;-1:-1:-1;;;30174:59:0;30170:158;;30258:50;;-1:-1:-1;;;30258:50:0;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:755::-;246:5;299:3;292:4;284:6;280:17;276:27;266:2;;321:5;314;307:20;266:2;361:6;348:20;387:4;410:43;450:2;410:43;:::i;:::-;482:2;476:9;494:31;522:2;514:6;494:31;:::i;:::-;560:18;;;594:15;;;;-1:-1:-1;629:15:1;;;679:1;675:10;;;663:23;;659:32;;656:41;-1:-1:-1;653:2:1;;;714:5;707;700:20;653:2;740:5;754:163;768:2;765:1;762:9;754:163;;;825:17;;813:30;;863:12;;;;895;;;;786:1;779:9;754:163;;;-1:-1:-1;935:6:1;;256:691;-1:-1:-1;;;;;;;256:691:1:o;952:575::-;994:5;1047:3;1040:4;1032:6;1028:17;1024:27;1014:2;;1069:5;1062;1055:20;1014:2;1096:20;;-1:-1:-1;;;;;1128:26:1;;1125:2;;;1157:18;;:::i;:::-;1206:2;1200:9;1218:67;1273:2;1254:13;;-1:-1:-1;;1250:27:1;1279:4;1246:38;1200:9;1218:67;:::i;:::-;1309:2;1301:6;1294:18;1355:3;1348:4;1343:2;1335:6;1331:15;1327:26;1324:35;1321:2;;;1376:5;1369;1362:20;1321:2;1444;1437:4;1429:6;1425:17;1418:4;1410:6;1406:17;1393:54;1467:15;;;1484:4;1463:26;1456:41;;;;1471:6;1004:523;-1:-1:-1;;1004:523:1:o;1532:196::-;1591:6;1644:2;1632:9;1623:7;1619:23;1615:32;1612:2;;;1665:6;1657;1650:22;1612:2;1693:29;1712:9;1693:29;:::i;:::-;1683:39;1602:126;-1:-1:-1;;;1602:126:1:o;1733:270::-;1801:6;1809;1862:2;1850:9;1841:7;1837:23;1833:32;1830:2;;;1883:6;1875;1868:22;1830:2;1911:29;1930:9;1911:29;:::i;:::-;1901:39;;1959:38;1993:2;1982:9;1978:18;1959:38;:::i;:::-;1949:48;;1820:183;;;;;:::o;2008:983::-;2162:6;2170;2178;2186;2194;2247:3;2235:9;2226:7;2222:23;2218:33;2215:2;;;2269:6;2261;2254:22;2215:2;2297:29;2316:9;2297:29;:::i;:::-;2287:39;;2345:38;2379:2;2368:9;2364:18;2345:38;:::i;:::-;2335:48;-1:-1:-1;2434:2:1;2419:18;;2406:32;-1:-1:-1;;;;;2487:14:1;;;2484:2;;;2519:6;2511;2504:22;2484:2;2547:61;2600:7;2591:6;2580:9;2576:22;2547:61;:::i;:::-;2537:71;;2661:2;2650:9;2646:18;2633:32;2617:48;;2690:2;2680:8;2677:16;2674:2;;;2711:6;2703;2696:22;2674:2;2739:63;2794:7;2783:8;2772:9;2768:24;2739:63;:::i;:::-;2729:73;;2855:3;2844:9;2840:19;2827:33;2811:49;;2885:2;2875:8;2872:16;2869:2;;;2906:6;2898;2891:22;2869:2;;2934:51;2977:7;2966:8;2955:9;2951:24;2934:51;:::i;:::-;2924:61;;;2205:786;;;;;;;;:::o;2996:626::-;3100:6;3108;3116;3124;3132;3185:3;3173:9;3164:7;3160:23;3156:33;3153:2;;;3207:6;3199;3192:22;3153:2;3235:29;3254:9;3235:29;:::i;:::-;3225:39;;3283:38;3317:2;3306:9;3302:18;3283:38;:::i;:::-;3273:48;-1:-1:-1;3368:2:1;3353:18;;3340:32;;-1:-1:-1;3419:2:1;3404:18;;3391:32;;-1:-1:-1;3474:3:1;3459:19;;3446:33;-1:-1:-1;;;;;3491:30:1;;3488:2;;;3539:6;3531;3524:22;3488:2;3567:49;3608:7;3599:6;3588:9;3584:22;3567:49;:::i;3627:367::-;3692:6;3700;3753:2;3741:9;3732:7;3728:23;3724:32;3721:2;;;3774:6;3766;3759:22;3721:2;3802:29;3821:9;3802:29;:::i;:::-;3792:39;;3881:2;3870:9;3866:18;3853:32;3928:5;3921:13;3914:21;3907:5;3904:32;3894:2;;3955:6;3947;3940:22;3894:2;3983:5;3973:15;;;3711:283;;;;;:::o;3999:264::-;4067:6;4075;4128:2;4116:9;4107:7;4103:23;4099:32;4096:2;;;4149:6;4141;4134:22;4096:2;4177:29;4196:9;4177:29;:::i;:::-;4167:39;4253:2;4238:18;;;;4225:32;;-1:-1:-1;;;4086:177:1:o;4268:1274::-;4386:6;4394;4447:2;4435:9;4426:7;4422:23;4418:32;4415:2;;;4468:6;4460;4453:22;4415:2;4500:23;;-1:-1:-1;;;;;4572:14:1;;;4569:2;;;4604:6;4596;4589:22;4569:2;4647:6;4636:9;4632:22;4622:32;;4692:7;4685:4;4681:2;4677:13;4673:27;4663:2;;4719:6;4711;4704:22;4663:2;4760;4747:16;4782:4;4805:43;4845:2;4805:43;:::i;:::-;4877:2;4871:9;4889:31;4917:2;4909:6;4889:31;:::i;:::-;4955:18;;;4989:15;;;;-1:-1:-1;5024:11:1;;;5066:1;5062:10;;;5054:19;;5050:28;;5047:41;-1:-1:-1;5044:2:1;;;5106:6;5098;5091:22;5044:2;5133:6;5124:15;;5148:169;5162:2;5159:1;5156:9;5148:169;;;5219:23;5238:3;5219:23;:::i;:::-;5207:36;;5180:1;5173:9;;;;;5263:12;;;;5295;;5148:169;;;-1:-1:-1;5336:6:1;-1:-1:-1;;5380:18:1;;5367:32;;-1:-1:-1;;5411:16:1;;;5408:2;;;5445:6;5437;5430:22;5408:2;;5473:63;5528:7;5517:8;5506:9;5502:24;5473:63;:::i;:::-;5463:73;;;4405:1137;;;;;:::o;5547:255::-;5605:6;5658:2;5646:9;5637:7;5633:23;5629:32;5626:2;;;5679:6;5671;5664:22;5626:2;5723:9;5710:23;5742:30;5766:5;5742:30;:::i;5807:259::-;5876:6;5929:2;5917:9;5908:7;5904:23;5900:32;5897:2;;;5950:6;5942;5935:22;5897:2;5987:9;5981:16;6006:30;6030:5;6006:30;:::i;6071:341::-;6140:6;6193:2;6181:9;6172:7;6168:23;6164:32;6161:2;;;6214:6;6206;6199:22;6161:2;6246:23;;-1:-1:-1;;;;;6281:30:1;;6278:2;;;6329:6;6321;6314:22;6278:2;6357:49;6398:7;6389:6;6378:9;6374:22;6357:49;:::i;:::-;6347:59;6151:261;-1:-1:-1;;;;6151:261:1:o;6417:571::-;6505:6;6513;6566:2;6554:9;6545:7;6541:23;6537:32;6534:2;;;6587:6;6579;6572:22;6534:2;6619:23;;-1:-1:-1;;;;;6691:14:1;;;6688:2;;;6723:6;6715;6708:22;6688:2;6751:49;6792:7;6783:6;6772:9;6768:22;6751:49;:::i;:::-;6741:59;;6853:2;6842:9;6838:18;6825:32;6809:48;;6882:2;6872:8;6869:16;6866:2;;;6903:6;6895;6888:22;6866:2;;6931:51;6974:7;6963:8;6952:9;6948:24;6931:51;:::i;6993:190::-;7052:6;7105:2;7093:9;7084:7;7080:23;7076:32;7073:2;;;7126:6;7118;7111:22;7073:2;-1:-1:-1;7154:23:1;;7063:120;-1:-1:-1;7063:120:1:o;7188:409::-;7266:6;7274;7327:2;7315:9;7306:7;7302:23;7298:32;7295:2;;;7348:6;7340;7333:22;7295:2;7376:23;;;-1:-1:-1;7450:2:1;7435:18;;7422:32;-1:-1:-1;;;;;7466:30:1;;7463:2;;;7514:6;7506;7499:22;7463:2;7542:49;7583:7;7574:6;7563:9;7559:22;7542:49;:::i;7602:332::-;7679:6;7687;7695;7748:2;7736:9;7727:7;7723:23;7719:32;7716:2;;;7769:6;7761;7754:22;7716:2;7810:9;7797:23;7787:33;;7867:2;7856:9;7852:18;7839:32;7829:42;;7890:38;7924:2;7913:9;7909:18;7890:38;:::i;:::-;7880:48;;7706:228;;;;;:::o;7939:1062::-;8055:6;8063;8071;8079;8087;8095;8148:3;8136:9;8127:7;8123:23;8119:33;8116:2;;;8170:6;8162;8155:22;8116:2;8198:23;;;-1:-1:-1;8268:2:1;8253:18;;8240:32;;-1:-1:-1;8323:2:1;8308:18;;8295:32;-1:-1:-1;;;;;8376:14:1;;;8373:2;;;8408:6;8400;8393:22;8373:2;8436:49;8477:7;8468:6;8457:9;8453:22;8436:49;:::i;:::-;8426:59;;8504:38;8538:2;8527:9;8523:18;8504:38;:::i;:::-;8494:48;;8595:3;8584:9;8580:19;8567:33;8551:49;;8625:2;8615:8;8612:16;8609:2;;;8646:6;8638;8631:22;8609:2;8689:8;8678:9;8674:24;8664:34;;8736:7;8729:4;8725:2;8721:13;8717:27;8707:2;;8763:6;8755;8748:22;8707:2;8808;8795:16;8834:2;8826:6;8823:14;8820:2;;;8855:6;8847;8840:22;8820:2;8905:7;8900:2;8891:6;8887:2;8883:15;8879:24;8876:37;8873:2;;;8931:6;8923;8916:22;8873:2;8967;8963;8959:11;8949:21;;8989:6;8979:16;;;;;8106:895;;;;;;;;:::o;9006:437::-;9059:3;9097:5;9091:12;9124:6;9119:3;9112:19;9150:4;9179:2;9174:3;9170:12;9163:19;;9216:2;9209:5;9205:14;9237:3;9249:169;9263:6;9260:1;9257:13;9249:169;;;9324:13;;9312:26;;9358:12;;;;9393:15;;;;9285:1;9278:9;9249:169;;;-1:-1:-1;9434:3:1;;9067:376;-1:-1:-1;;;;;9067:376:1:o;9448:475::-;9489:3;9527:5;9521:12;9554:6;9549:3;9542:19;9579:3;9591:162;9605:6;9602:1;9599:13;9591:162;;;9667:4;9723:13;;;9719:22;;9713:29;9695:11;;;9691:20;;9684:59;9620:12;9591:162;;;9771:6;9768:1;9765:13;9762:2;;;9837:3;9830:4;9821:6;9816:3;9812:16;9808:27;9801:40;9762:2;-1:-1:-1;9905:2:1;9884:15;-1:-1:-1;;9880:29:1;9871:39;;;;9912:4;9867:50;;9497:426;-1:-1:-1;;9497:426:1:o;9928:826::-;-1:-1:-1;;;;;10325:15:1;;;10307:34;;10377:15;;10372:2;10357:18;;10350:43;10287:3;10424:2;10409:18;;10402:31;;;10250:4;;10456:57;;10493:19;;10485:6;10456:57;:::i;:::-;10561:9;10553:6;10549:22;10544:2;10533:9;10529:18;10522:50;10595:44;10632:6;10624;10595:44;:::i;:::-;10581:58;;10688:9;10680:6;10676:22;10670:3;10659:9;10655:19;10648:51;10716:32;10741:6;10733;10716:32;:::i;:::-;10708:40;10259:495;-1:-1:-1;;;;;;;;10259:495:1:o;10759:560::-;-1:-1:-1;;;;;11056:15:1;;;11038:34;;11108:15;;11103:2;11088:18;;11081:43;11155:2;11140:18;;11133:34;;;11198:2;11183:18;;11176:34;;;11018:3;11241;11226:19;;11219:32;;;10981:4;;11268:45;;11293:19;;11285:6;11268:45;:::i;:::-;11260:53;10990:329;-1:-1:-1;;;;;;;10990:329:1:o;11324:261::-;11503:2;11492:9;11485:21;11466:4;11523:56;11575:2;11564:9;11560:18;11552:6;11523:56;:::i;11590:465::-;11847:2;11836:9;11829:21;11810:4;11873:56;11925:2;11914:9;11910:18;11902:6;11873:56;:::i;:::-;11977:9;11969:6;11965:22;11960:2;11949:9;11945:18;11938:50;12005:44;12042:6;12034;12005:44;:::i;:::-;11997:52;11819:236;-1:-1:-1;;;;;11819:236:1:o;12252:219::-;12401:2;12390:9;12383:21;12364:4;12421:44;12461:2;12450:9;12446:18;12438:6;12421:44;:::i;12897:404::-;13099:2;13081:21;;;13138:2;13118:18;;;13111:30;13177:34;13172:2;13157:18;;13150:62;-1:-1:-1;;;13243:2:1;13228:18;;13221:38;13291:3;13276:19;;13071:230::o;14533:401::-;14735:2;14717:21;;;14774:2;14754:18;;;14747:30;14813:34;14808:2;14793:18;;14786:62;-1:-1:-1;;;14879:2:1;14864:18;;14857:35;14924:3;14909:19;;14707:227::o;15358:346::-;15560:2;15542:21;;;15599:2;15579:18;;;15572:30;-1:-1:-1;;;15633:2:1;15618:18;;15611:52;15695:2;15680:18;;15532:172::o;16113:352::-;16315:2;16297:21;;;16354:2;16334:18;;;16327:30;-1:-1:-1;;;16388:2:1;16373:18;;16366:58;16456:2;16441:18;;16287:178::o;16470:406::-;16672:2;16654:21;;;16711:2;16691:18;;;16684:30;16750:34;16745:2;16730:18;;16723:62;-1:-1:-1;;;16816:2:1;16801:18;;16794:40;16866:3;16851:19;;16644:232::o;19711:641::-;19980:25;;;20036:2;20021:18;;20014:34;;;-1:-1:-1;;;;;20122:15:1;;;20117:2;20102:18;;20095:43;20174:15;;;20169:2;20154:18;;20147:43;20227:15;;20221:3;20206:19;;20199:44;20280:3;20075;20259:19;;20252:32;;;-1:-1:-1;;20301:45:1;;20326:19;;20318:6;20301:45;:::i;20357:786::-;20646:6;20635:9;20628:25;20689:6;20684:2;20673:9;20669:18;20662:34;20732:3;20727:2;20716:9;20712:18;20705:31;20609:4;20759:45;20799:3;20788:9;20784:19;20776:6;20759:45;:::i;:::-;-1:-1:-1;;;;;20840:32:1;;20835:2;20820:18;;20813:60;20910:22;;;20904:3;20889:19;;20882:51;20942:22;;;20957:6;21003;20998:2;20986:15;;20973:45;21064:4;21059:2;21050:6;21042;21038:19;21034:28;21027:42;21134:2;21127;21123:7;21118:2;21110:6;21106:15;21102:29;21094:6;21090:42;21086:51;21078:59;;;20618:525;;;;;;;;;:::o;21148:183::-;21208:4;-1:-1:-1;;;;;21230:30:1;;21227:2;;;21263:18;;:::i;:::-;-1:-1:-1;21308:1:1;21304:14;21320:4;21300:25;;21217:114::o;21336:128::-;21376:3;21407:1;21403:6;21400:1;21397:13;21394:2;;;21413:18;;:::i;:::-;-1:-1:-1;21449:9:1;;21384:80::o;21469:125::-;21509:4;21537:1;21534;21531:8;21528:2;;;21542:18;;:::i;:::-;-1:-1:-1;21579:9:1;;21518:76::o;21599:380::-;21678:1;21674:12;;;;21721;;;21742:2;;21796:4;21788:6;21784:17;21774:27;;21742:2;21849;21841:6;21838:14;21818:18;21815:38;21812:2;;;21895:10;21890:3;21886:20;21883:1;21876:31;21930:4;21927:1;21920:15;21958:4;21955:1;21948:15;21812:2;;21654:325;;;:::o;21984:249::-;22094:2;22075:13;;-1:-1:-1;;22071:27:1;22059:40;;-1:-1:-1;;;;;22114:34:1;;22150:22;;;22111:62;22108:2;;;22176:18;;:::i;:::-;22212:2;22205:22;-1:-1:-1;;22031:202:1:o;22238:135::-;22277:3;-1:-1:-1;;22298:17:1;;22295:2;;;22318:18;;:::i;:::-;-1:-1:-1;22365:1:1;22354:13;;22285:88::o;22378:127::-;22439:10;22434:3;22430:20;22427:1;22420:31;22470:4;22467:1;22460:15;22494:4;22491:1;22484:15;22510:127;22571:10;22566:3;22562:20;22559:1;22552:31;22602:4;22599:1;22592:15;22626:4;22623:1;22616:15;22642:185;22677:3;22719:1;22701:16;22698:23;22695:2;;;22769:1;22764:3;22759;22744:27;22800:10;22795:3;22791:20;22695:2;22685:142;:::o;22832:671::-;22871:3;22913:4;22895:16;22892:26;22889:2;;;22879:624;:::o;22889:2::-;22955;22949:9;-1:-1:-1;;23020:16:1;23016:25;;23013:1;22949:9;22992:50;23065:11;;23095:16;-1:-1:-1;;;;;23163:14:1;;;23194:4;23182:17;;23179:25;-1:-1:-1;23160:45:1;23157:2;;;23208:5;;;;;22879:624;:::o;23157:2::-;23245:6;23239:4;23235:17;23224:28;;23281:3;23275:10;23308:2;23300:6;23297:14;23294:2;;;23314:5;;;;;;22879:624;:::o;23294:2::-;23398;23379:16;23373:4;23369:27;23365:36;23358:4;23349:6;23344:3;23340:16;23336:27;23333:69;23330:2;;;23405:5;;;;;;22879:624;:::o;23330:2::-;23421:57;23472:4;23463:6;23455;23451:19;23447:30;23441:4;23421:57;:::i;:::-;-1:-1:-1;23494:3:1;;22879:624;-1:-1:-1;;;;;22879:624:1:o;23508:131::-;-1:-1:-1;;;;;;23582:32:1;;23572:43;;23562:2;;23629:1;23626;23619:12;23562:2;23552:87;:::o
Swarm Source
ipfs://61bcd325ac292f17a2aa845d098ef4abc0d46228fe9098494d05cd4598722b3f
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 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.