Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 37 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer From | 19367080 | 157 days ago | IN | 0 ETH | 0.00402613 | ||||
Transfer From | 18893807 | 224 days ago | IN | 0 ETH | 0.00113158 | ||||
Safe Transfer Fr... | 16731159 | 527 days ago | IN | 0 ETH | 0.00058987 | ||||
Safe Transfer Fr... | 16731159 | 527 days ago | IN | 0 ETH | 0.00126988 | ||||
Safe Transfer Fr... | 15535582 | 695 days ago | IN | 0 ETH | 0.0008904 | ||||
Safe Transfer Fr... | 15227559 | 744 days ago | IN | 0 ETH | 0.00110431 | ||||
Safe Transfer Fr... | 15125274 | 759 days ago | IN | 0 ETH | 0.00116777 | ||||
Safe Transfer Fr... | 15118607 | 760 days ago | IN | 0 ETH | 0.00266207 | ||||
Safe Transfer Fr... | 15016335 | 777 days ago | IN | 0 ETH | 0.00144565 | ||||
Safe Transfer Fr... | 15016331 | 777 days ago | IN | 0 ETH | 0.0017663 | ||||
Safe Transfer Fr... | 15016308 | 777 days ago | IN | 0 ETH | 0.00196272 | ||||
Safe Transfer Fr... | 15016279 | 777 days ago | IN | 0 ETH | 0.00316219 | ||||
Safe Transfer Fr... | 14997857 | 781 days ago | IN | 0 ETH | 0.00218626 | ||||
Safe Transfer Fr... | 14970579 | 785 days ago | IN | 0 ETH | 0.00193857 | ||||
Safe Transfer Fr... | 14927919 | 793 days ago | IN | 0 ETH | 0.00224833 | ||||
Safe Transfer Fr... | 14923858 | 793 days ago | IN | 0 ETH | 0.00352994 | ||||
Safe Transfer Fr... | 14923850 | 793 days ago | IN | 0 ETH | 0.00507033 | ||||
Safe Transfer Fr... | 14923812 | 793 days ago | IN | 0 ETH | 0.00489486 | ||||
Safe Transfer Fr... | 14918016 | 794 days ago | IN | 0 ETH | 0.00160089 | ||||
Safe Transfer Fr... | 14918010 | 794 days ago | IN | 0 ETH | 0.00218861 | ||||
Safe Transfer Fr... | 14917981 | 794 days ago | IN | 0 ETH | 0.00461352 | ||||
Transfer Ownersh... | 14914354 | 795 days ago | IN | 0 ETH | 0.00156758 | ||||
Safe Transfer Fr... | 14893223 | 799 days ago | IN | 0 ETH | 0.00316559 | ||||
Safe Transfer Fr... | 14893179 | 799 days ago | IN | 0 ETH | 0.00873699 | ||||
Safe Transfer Fr... | 14888026 | 799 days ago | IN | 0 ETH | 0.00308951 |
Loading...
Loading
Contract Name:
TheArchivesOfAlexLifeson
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-23 */ // SPDX-License-Identifier: MIT // 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) { return msg.data; } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol 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/ERC721/IERC721.sol pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer( address indexed from, address indexed to, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval( address indexed owner, address indexed approved, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // 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/utils/Strings.sol pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // 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; 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" ); (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"); (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"); (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"); (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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require( owner != address(0), "ERC721: balance query for the zero address" ); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require( owner != address(0), "ERC721: owner query for nonexistent token" ); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require( _exists(tokenId), "ERC721: approved query for nonexistent token" ); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require( _isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved" ); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require( _isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved" ); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require( _checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require( _exists(tokenId), "ERC721: operator query for nonexistent token" ); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require( ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own" ); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received( _msgSender(), from, tokenId, _data ) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert( "ERC721: transfer to non ERC721Receiver implementer" ); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } pragma solidity ^0.8.0; contract TheArchivesOfAlexLifeson is ERC721, Ownable { uint16 private mintCount = 0; uint256 public MAX_SUPPLY = 63; string baseTokenURI; event NFTMinted(uint256 totalMinted); constructor(string memory baseURI) ERC721("The Archives of Alex Lifeson", "LIFESON") { setBaseURI(baseURI); } function setBaseURI(string memory baseURI) public onlyOwner { baseTokenURI = baseURI; } function totalSupply() public view returns (uint16) { return mintCount; } //mint NFT function mintNFT(uint32 _count, address _mintToAddress) public onlyOwner { //require(totalSupply() + _count <= MAX_SUPPLY,"You can not mint more than 45 NFTs"); for(uint32 i = 1; i <= _count; i++ ){ _safeMint(_mintToAddress, ++mintCount); emit NFTMinted(mintCount); } } function setMaxSupply (uint256 _newMaxSupply) public onlyOwner { MAX_SUPPLY = _newMaxSupply; } function _baseURI() internal view virtual override returns (string memory) { return baseTokenURI; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","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":"totalMinted","type":"uint256"}],"name":"NFTMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_count","type":"uint32"},{"internalType":"address","name":"_mintToAddress","type":"address"}],"name":"mintNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","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":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxSupply","type":"uint256"}],"name":"setMaxSupply","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":[],"name":"totalSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526006805461ffff60a01b19169055603f6007553480156200002457600080fd5b5060405162001c6638038062001c66833981016040819052620000479162000264565b604080518082018252601c81527f546865204172636869766573206f6620416c6578204c696665736f6e000000006020808301918252835180850190945260078452662624a322a9a7a760c91b908401528151919291620000ab91600091620001be565b508051620000c1906001906020840190620001be565b505050620000de620000d8620000f060201b60201c565b620000f4565b620000e98162000146565b5062000393565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6006546001600160a01b03163314620001a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b8051620001ba906008906020840190620001be565b5050565b828054620001cc9062000340565b90600052602060002090601f016020900481019282620001f057600085556200023b565b82601f106200020b57805160ff19168380011785556200023b565b828001600101855582156200023b579182015b828111156200023b5782518255916020019190600101906200021e565b50620002499291506200024d565b5090565b5b808211156200024957600081556001016200024e565b600060208083850312156200027857600080fd5b82516001600160401b03808211156200029057600080fd5b818501915085601f830112620002a557600080fd5b815181811115620002ba57620002ba6200037d565b604051601f8201601f19908116603f01168101908382118183101715620002e557620002e56200037d565b816040528281528886848701011115620002fe57600080fd5b600093505b8284101562000322578484018601518185018701529285019262000303565b82841115620003345760008684830101525b98975050505050505050565b600181811c908216806200035557607f821691505b602082108114156200037757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6118c380620003a36000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636352211e116100b857806395d89b411161007c57806395d89b411461028f578063a22cb46514610297578063b88d4fde146102aa578063c87b56dd146102bd578063e985e9c5146102d0578063f2fde38b1461030c57600080fd5b80636352211e1461023d5780636f8b44b01461025057806370a0823114610263578063715018a6146102765780638da5cb5b1461027e57600080fd5b806323b872dd116100ff57806323b872dd146101da57806332cb6b0c146101ed5780633c06a9b71461020457806342842e0e1461021757806355f804b31461022a57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063081812fc14610179578063095ea7b3146101a457806318160ddd146101b9575b600080fd5b61014f61014a3660046114c4565b61031f565b60405190151581526020015b60405180910390f35b61016c610371565b60405161015b919061161f565b61018c610187366004611547565b610403565b6040516001600160a01b03909116815260200161015b565b6101b76101b236600461149a565b61049d565b005b600654600160a01b900461ffff1660405161ffff909116815260200161015b565b6101b76101e83660046113a6565b6105b3565b6101f660075481565b60405190815260200161015b565b6101b7610212366004611560565b6105e4565b6101b76102253660046113a6565b6106b9565b6101b76102383660046114fe565b6106d4565b61018c61024b366004611547565b610715565b6101b761025e366004611547565b61078c565b6101f6610271366004611358565b6107bb565b6101b7610842565b6006546001600160a01b031661018c565b61016c610878565b6101b76102a536600461145e565b610887565b6101b76102b83660046113e2565b61094c565b61016c6102cb366004611547565b610984565b61014f6102de366004611373565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101b761031a366004611358565b610a5f565b60006001600160e01b031982166380ac58cd60e01b148061035057506001600160e01b03198216635b5e139f60e01b145b8061036b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461038090611779565b80601f01602080910402602001604051908101604052809291908181526020018280546103ac90611779565b80156103f95780601f106103ce576101008083540402835291602001916103f9565b820191906000526020600020905b8154815290600101906020018083116103dc57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166104815760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006104a882610715565b9050806001600160a01b0316836001600160a01b031614156105165760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610478565b336001600160a01b0382161480610532575061053281336102de565b6105a45760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610478565b6105ae8383610afa565b505050565b6105bd3382610b68565b6105d95760405162461bcd60e51b8152600401610478906116b9565b6105ae838383610c5f565b6006546001600160a01b0316331461060e5760405162461bcd60e51b815260040161047890611684565b60015b8263ffffffff168163ffffffff16116105ae57610666826006601481819054906101000a900461ffff16610644906117b4565b91906101000a81548161ffff021916908361ffff160217905561ffff16610dff565b600654604051600160a01b90910461ffff1681527fd9dc24857f317ed9abbbb42e920ede0104231eb1d3d70236a74887ffaf1598689060200160405180910390a1806106b1816117f1565b915050610611565b6105ae8383836040518060200160405280600081525061094c565b6006546001600160a01b031633146106fe5760405162461bcd60e51b815260040161047890611684565b805161071190600890602084019061122d565b5050565b6000818152600260205260408120546001600160a01b03168061036b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610478565b6006546001600160a01b031633146107b65760405162461bcd60e51b815260040161047890611684565b600755565b60006001600160a01b0382166108265760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610478565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b0316331461086c5760405162461bcd60e51b815260040161047890611684565b6108766000610e19565b565b60606001805461038090611779565b6001600160a01b0382163314156108e05760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610478565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109563383610b68565b6109725760405162461bcd60e51b8152600401610478906116b9565b61097e84848484610e6b565b50505050565b6000818152600260205260409020546060906001600160a01b0316610a035760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610478565b6000610a0d610e9e565b90506000815111610a2d5760405180602001604052806000815250610a58565b80610a3784610ead565b604051602001610a489291906115b3565b6040516020818303038152906040525b9392505050565b6006546001600160a01b03163314610a895760405162461bcd60e51b815260040161047890611684565b6001600160a01b038116610aee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610478565b610af781610e19565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610b2f82610715565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316610be15760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610478565b6000610bec83610715565b9050806001600160a01b0316846001600160a01b03161480610c275750836001600160a01b0316610c1c84610403565b6001600160a01b0316145b80610c5757506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316610c7282610715565b6001600160a01b031614610cda5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610478565b6001600160a01b038216610d3c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610478565b610d47600082610afa565b6001600160a01b0383166000908152600360205260408120805460019290610d70908490611736565b90915550506001600160a01b0382166000908152600360205260408120805460019290610d9e90849061170a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610711828260405180602001604052806000815250610fab565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610e76848484610c5f565b610e8284848484610fde565b61097e5760405162461bcd60e51b815260040161047890611632565b60606008805461038090611779565b606081610ed15750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610efb5780610ee5816117d6565b9150610ef49050600a83611722565b9150610ed5565b60008167ffffffffffffffff811115610f1657610f16611861565b6040519080825280601f01601f191660200182016040528015610f40576020820181803683370190505b5090505b8415610c5757610f55600183611736565b9150610f62600a8661180b565b610f6d90603061170a565b60f81b818381518110610f8257610f8261184b565b60200101906001600160f81b031916908160001a905350610fa4600a86611722565b9450610f44565b610fb583836110eb565b610fc26000848484610fde565b6105ae5760405162461bcd60e51b815260040161047890611632565b60006001600160a01b0384163b156110e057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906110229033908990889088906004016115e2565b602060405180830381600087803b15801561103c57600080fd5b505af192505050801561106c575060408051601f3d908101601f19168201909252611069918101906114e1565b60015b6110c6573d80801561109a576040519150601f19603f3d011682016040523d82523d6000602084013e61109f565b606091505b5080516110be5760405162461bcd60e51b815260040161047890611632565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610c57565b506001949350505050565b6001600160a01b0382166111415760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610478565b6000818152600260205260409020546001600160a01b0316156111a65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610478565b6001600160a01b03821660009081526003602052604081208054600192906111cf90849061170a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461123990611779565b90600052602060002090601f01602090048101928261125b57600085556112a1565b82601f1061127457805160ff19168380011785556112a1565b828001600101855582156112a1579182015b828111156112a1578251825591602001919060010190611286565b506112ad9291506112b1565b5090565b5b808211156112ad57600081556001016112b2565b600067ffffffffffffffff808411156112e1576112e1611861565b604051601f8501601f19908116603f0116810190828211818310171561130957611309611861565b8160405280935085815286868601111561132257600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461135357600080fd5b919050565b60006020828403121561136a57600080fd5b610a588261133c565b6000806040838503121561138657600080fd5b61138f8361133c565b915061139d6020840161133c565b90509250929050565b6000806000606084860312156113bb57600080fd5b6113c48461133c565b92506113d26020850161133c565b9150604084013590509250925092565b600080600080608085870312156113f857600080fd5b6114018561133c565b935061140f6020860161133c565b925060408501359150606085013567ffffffffffffffff81111561143257600080fd5b8501601f8101871361144357600080fd5b611452878235602084016112c6565b91505092959194509250565b6000806040838503121561147157600080fd5b61147a8361133c565b91506020830135801515811461148f57600080fd5b809150509250929050565b600080604083850312156114ad57600080fd5b6114b68361133c565b946020939093013593505050565b6000602082840312156114d657600080fd5b8135610a5881611877565b6000602082840312156114f357600080fd5b8151610a5881611877565b60006020828403121561151057600080fd5b813567ffffffffffffffff81111561152757600080fd5b8201601f8101841361153857600080fd5b610c57848235602084016112c6565b60006020828403121561155957600080fd5b5035919050565b6000806040838503121561157357600080fd5b823563ffffffff8116811461138f57600080fd5b6000815180845261159f81602086016020860161174d565b601f01601f19169290920160200192915050565b600083516115c581846020880161174d565b8351908301906115d981836020880161174d565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061161590830184611587565b9695505050505050565b602081526000610a586020830184611587565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561171d5761171d61181f565b500190565b60008261173157611731611835565b500490565b6000828210156117485761174861181f565b500390565b60005b83811015611768578181015183820152602001611750565b8381111561097e5750506000910152565b600181811c9082168061178d57607f821691505b602082108114156117ae57634e487b7160e01b600052602260045260246000fd5b50919050565b600061ffff808316818114156117cc576117cc61181f565b6001019392505050565b60006000198214156117ea576117ea61181f565b5060010190565b600063ffffffff808316818114156117cc576117cc61181f565b60008261181a5761181a611835565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610af757600080fdfea264697066735822122096b450e9f11f1000fd5ab78994c6fafcf680a7713f5f5522876a4d7b5026ccd064736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d6439457773646b614a4b5a324e466f6974554265643968645041667254365167323937366e394446345961542f00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c80636352211e116100b857806395d89b411161007c57806395d89b411461028f578063a22cb46514610297578063b88d4fde146102aa578063c87b56dd146102bd578063e985e9c5146102d0578063f2fde38b1461030c57600080fd5b80636352211e1461023d5780636f8b44b01461025057806370a0823114610263578063715018a6146102765780638da5cb5b1461027e57600080fd5b806323b872dd116100ff57806323b872dd146101da57806332cb6b0c146101ed5780633c06a9b71461020457806342842e0e1461021757806355f804b31461022a57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063081812fc14610179578063095ea7b3146101a457806318160ddd146101b9575b600080fd5b61014f61014a3660046114c4565b61031f565b60405190151581526020015b60405180910390f35b61016c610371565b60405161015b919061161f565b61018c610187366004611547565b610403565b6040516001600160a01b03909116815260200161015b565b6101b76101b236600461149a565b61049d565b005b600654600160a01b900461ffff1660405161ffff909116815260200161015b565b6101b76101e83660046113a6565b6105b3565b6101f660075481565b60405190815260200161015b565b6101b7610212366004611560565b6105e4565b6101b76102253660046113a6565b6106b9565b6101b76102383660046114fe565b6106d4565b61018c61024b366004611547565b610715565b6101b761025e366004611547565b61078c565b6101f6610271366004611358565b6107bb565b6101b7610842565b6006546001600160a01b031661018c565b61016c610878565b6101b76102a536600461145e565b610887565b6101b76102b83660046113e2565b61094c565b61016c6102cb366004611547565b610984565b61014f6102de366004611373565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101b761031a366004611358565b610a5f565b60006001600160e01b031982166380ac58cd60e01b148061035057506001600160e01b03198216635b5e139f60e01b145b8061036b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461038090611779565b80601f01602080910402602001604051908101604052809291908181526020018280546103ac90611779565b80156103f95780601f106103ce576101008083540402835291602001916103f9565b820191906000526020600020905b8154815290600101906020018083116103dc57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166104815760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006104a882610715565b9050806001600160a01b0316836001600160a01b031614156105165760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610478565b336001600160a01b0382161480610532575061053281336102de565b6105a45760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610478565b6105ae8383610afa565b505050565b6105bd3382610b68565b6105d95760405162461bcd60e51b8152600401610478906116b9565b6105ae838383610c5f565b6006546001600160a01b0316331461060e5760405162461bcd60e51b815260040161047890611684565b60015b8263ffffffff168163ffffffff16116105ae57610666826006601481819054906101000a900461ffff16610644906117b4565b91906101000a81548161ffff021916908361ffff160217905561ffff16610dff565b600654604051600160a01b90910461ffff1681527fd9dc24857f317ed9abbbb42e920ede0104231eb1d3d70236a74887ffaf1598689060200160405180910390a1806106b1816117f1565b915050610611565b6105ae8383836040518060200160405280600081525061094c565b6006546001600160a01b031633146106fe5760405162461bcd60e51b815260040161047890611684565b805161071190600890602084019061122d565b5050565b6000818152600260205260408120546001600160a01b03168061036b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610478565b6006546001600160a01b031633146107b65760405162461bcd60e51b815260040161047890611684565b600755565b60006001600160a01b0382166108265760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610478565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b0316331461086c5760405162461bcd60e51b815260040161047890611684565b6108766000610e19565b565b60606001805461038090611779565b6001600160a01b0382163314156108e05760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610478565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109563383610b68565b6109725760405162461bcd60e51b8152600401610478906116b9565b61097e84848484610e6b565b50505050565b6000818152600260205260409020546060906001600160a01b0316610a035760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610478565b6000610a0d610e9e565b90506000815111610a2d5760405180602001604052806000815250610a58565b80610a3784610ead565b604051602001610a489291906115b3565b6040516020818303038152906040525b9392505050565b6006546001600160a01b03163314610a895760405162461bcd60e51b815260040161047890611684565b6001600160a01b038116610aee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610478565b610af781610e19565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610b2f82610715565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316610be15760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610478565b6000610bec83610715565b9050806001600160a01b0316846001600160a01b03161480610c275750836001600160a01b0316610c1c84610403565b6001600160a01b0316145b80610c5757506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316610c7282610715565b6001600160a01b031614610cda5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610478565b6001600160a01b038216610d3c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610478565b610d47600082610afa565b6001600160a01b0383166000908152600360205260408120805460019290610d70908490611736565b90915550506001600160a01b0382166000908152600360205260408120805460019290610d9e90849061170a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610711828260405180602001604052806000815250610fab565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610e76848484610c5f565b610e8284848484610fde565b61097e5760405162461bcd60e51b815260040161047890611632565b60606008805461038090611779565b606081610ed15750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610efb5780610ee5816117d6565b9150610ef49050600a83611722565b9150610ed5565b60008167ffffffffffffffff811115610f1657610f16611861565b6040519080825280601f01601f191660200182016040528015610f40576020820181803683370190505b5090505b8415610c5757610f55600183611736565b9150610f62600a8661180b565b610f6d90603061170a565b60f81b818381518110610f8257610f8261184b565b60200101906001600160f81b031916908160001a905350610fa4600a86611722565b9450610f44565b610fb583836110eb565b610fc26000848484610fde565b6105ae5760405162461bcd60e51b815260040161047890611632565b60006001600160a01b0384163b156110e057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906110229033908990889088906004016115e2565b602060405180830381600087803b15801561103c57600080fd5b505af192505050801561106c575060408051601f3d908101601f19168201909252611069918101906114e1565b60015b6110c6573d80801561109a576040519150601f19603f3d011682016040523d82523d6000602084013e61109f565b606091505b5080516110be5760405162461bcd60e51b815260040161047890611632565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610c57565b506001949350505050565b6001600160a01b0382166111415760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610478565b6000818152600260205260409020546001600160a01b0316156111a65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610478565b6001600160a01b03821660009081526003602052604081208054600192906111cf90849061170a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461123990611779565b90600052602060002090601f01602090048101928261125b57600085556112a1565b82601f1061127457805160ff19168380011785556112a1565b828001600101855582156112a1579182015b828111156112a1578251825591602001919060010190611286565b506112ad9291506112b1565b5090565b5b808211156112ad57600081556001016112b2565b600067ffffffffffffffff808411156112e1576112e1611861565b604051601f8501601f19908116603f0116810190828211818310171561130957611309611861565b8160405280935085815286868601111561132257600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461135357600080fd5b919050565b60006020828403121561136a57600080fd5b610a588261133c565b6000806040838503121561138657600080fd5b61138f8361133c565b915061139d6020840161133c565b90509250929050565b6000806000606084860312156113bb57600080fd5b6113c48461133c565b92506113d26020850161133c565b9150604084013590509250925092565b600080600080608085870312156113f857600080fd5b6114018561133c565b935061140f6020860161133c565b925060408501359150606085013567ffffffffffffffff81111561143257600080fd5b8501601f8101871361144357600080fd5b611452878235602084016112c6565b91505092959194509250565b6000806040838503121561147157600080fd5b61147a8361133c565b91506020830135801515811461148f57600080fd5b809150509250929050565b600080604083850312156114ad57600080fd5b6114b68361133c565b946020939093013593505050565b6000602082840312156114d657600080fd5b8135610a5881611877565b6000602082840312156114f357600080fd5b8151610a5881611877565b60006020828403121561151057600080fd5b813567ffffffffffffffff81111561152757600080fd5b8201601f8101841361153857600080fd5b610c57848235602084016112c6565b60006020828403121561155957600080fd5b5035919050565b6000806040838503121561157357600080fd5b823563ffffffff8116811461138f57600080fd5b6000815180845261159f81602086016020860161174d565b601f01601f19169290920160200192915050565b600083516115c581846020880161174d565b8351908301906115d981836020880161174d565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061161590830184611587565b9695505050505050565b602081526000610a586020830184611587565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561171d5761171d61181f565b500190565b60008261173157611731611835565b500490565b6000828210156117485761174861181f565b500390565b60005b83811015611768578181015183820152602001611750565b8381111561097e5750506000910152565b600181811c9082168061178d57607f821691505b602082108114156117ae57634e487b7160e01b600052602260045260246000fd5b50919050565b600061ffff808316818114156117cc576117cc61181f565b6001019392505050565b60006000198214156117ea576117ea61181f565b5060010190565b600063ffffffff808316818114156117cc576117cc61181f565b60008261181a5761181a611835565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610af757600080fdfea264697066735822122096b450e9f11f1000fd5ab78994c6fafcf680a7713f5f5522876a4d7b5026ccd064736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d6439457773646b614a4b5a324e466f6974554265643968645041667254365167323937366e394446345961542f00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : baseURI (string): https://ipfs.io/ipfs/Qmd9EwsdkaJKZ2NFoitUBed9hdPAfrT6Qg2976n9DF4YaT/
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000044
Arg [2] : 68747470733a2f2f697066732e696f2f697066732f516d6439457773646b614a
Arg [3] : 4b5a324e466f6974554265643968645041667254365167323937366e39444634
Arg [4] : 5961542f00000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
36559:1132:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23445:355;;;;;;:::i;:::-;;:::i;:::-;;;6001:14:1;;5994:22;5976:41;;5964:2;5949:18;23445:355:0;;;;;;;;24614:100;;;:::i;:::-;;;;;;;:::i;26307:308::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;5299:32:1;;;5281:51;;5269:2;5254:18;26307:308:0;5135:203:1;25830:411:0;;;;;;:::i;:::-;;:::i;:::-;;37010:87;37080:9;;-1:-1:-1;;;37080:9:0;;;;37010:87;;12808:6:1;12796:19;;;12778:38;;12766:2;12751:18;37010:87:0;12634:188:1;27366:376:0;;;;;;:::i;:::-;;:::i;36656:30::-;;;;;;;;;13167:25:1;;;13155:2;13140:18;36656:30:0;13021:177:1;37123:328:0;;;;;;:::i;:::-;;:::i;27813:185::-;;;;;;:::i;:::-;;:::i;36897:101::-;;;;;;:::i;:::-;;:::i;24221:326::-;;;;;;:::i;:::-;;:::i;37459:108::-;;;;;;:::i;:::-;;:::i;23864:295::-;;;;;;:::i;:::-;;:::i;8333:94::-;;;:::i;7682:87::-;7755:6;;-1:-1:-1;;;;;7755:6:0;7682:87;;24783:104;;;:::i;26687:327::-;;;;;;:::i;:::-;;:::i;28069:365::-;;;;;;:::i;:::-;;:::i;24958:468::-;;;;;;:::i;:::-;;:::i;27085:214::-;;;;;;:::i;:::-;-1:-1:-1;;;;;27256:25:0;;;27227:4;27256:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;27085:214;8582:229;;;;;;:::i;:::-;;:::i;23445:355::-;23592:4;-1:-1:-1;;;;;;23634:40:0;;-1:-1:-1;;;23634:40:0;;:105;;-1:-1:-1;;;;;;;23691:48:0;;-1:-1:-1;;;23691:48:0;23634:105;:158;;;-1:-1:-1;;;;;;;;;;9950:40:0;;;23756:36;23614:178;23445:355;-1:-1:-1;;23445:355:0:o;24614:100::-;24668:13;24701:5;24694:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24614:100;:::o;26307:308::-;26428:7;30070:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30070:16:0;26453:110;;;;-1:-1:-1;;;26453:110:0;;10416:2:1;26453:110:0;;;10398:21:1;10455:2;10435:18;;;10428:30;10494:34;10474:18;;;10467:62;-1:-1:-1;;;10545:18:1;;;10538:42;10597:19;;26453:110:0;;;;;;;;;-1:-1:-1;26583:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;26583:24:0;;26307:308::o;25830:411::-;25911:13;25927:23;25942:7;25927:14;:23::i;:::-;25911:39;;25975:5;-1:-1:-1;;;;;25969:11:0;:2;-1:-1:-1;;;;;25969:11:0;;;25961:57;;;;-1:-1:-1;;;25961:57:0;;12016:2:1;25961:57:0;;;11998:21:1;12055:2;12035:18;;;12028:30;12094:34;12074:18;;;12067:62;-1:-1:-1;;;12145:18:1;;;12138:31;12186:19;;25961:57:0;11814:397:1;25961:57:0;735:10;-1:-1:-1;;;;;26053:21:0;;;;:62;;-1:-1:-1;26078:37:0;26095:5;735:10;27085:214;:::i;26078:37::-;26031:168;;;;-1:-1:-1;;;26031:168:0;;8809:2:1;26031:168:0;;;8791:21:1;8848:2;8828:18;;;8821:30;8887:34;8867:18;;;8860:62;8958:26;8938:18;;;8931:54;9002:19;;26031:168:0;8607:420:1;26031:168:0;26212:21;26221:2;26225:7;26212:8;:21::i;:::-;25900:341;25830:411;;:::o;27366:376::-;27575:41;735:10;27608:7;27575:18;:41::i;:::-;27553:140;;;;-1:-1:-1;;;27553:140:0;;;;;;;:::i;:::-;27706:28;27716:4;27722:2;27726:7;27706:9;:28::i;37123:328::-;7755:6;;-1:-1:-1;;;;;7755:6:0;735:10;7902:23;7894:68;;;;-1:-1:-1;;;7894:68:0;;;;;;;:::i;:::-;37318:1:::1;37303:141;37326:6;37321:11;;:1;:11;;;37303:141;;37354:38;37364:14;37382:9;;37380:11;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;37354:38;;:9;:38::i;:::-;37422:9;::::0;37412:20:::1;::::0;-1:-1:-1;;;37422:9:0;;::::1;;;12778:38:1::0;;37412:20:0::1;::::0;12766:2:1;12751:18;37412:20:0::1;;;;;;;37334:3:::0;::::1;::::0;::::1;:::i;:::-;;;;37303:141;;27813:185:::0;27951:39;27968:4;27974:2;27978:7;27951:39;;;;;;;;;;;;:16;:39::i;36897:101::-;7755:6;;-1:-1:-1;;;;;7755:6:0;735:10;7902:23;7894:68;;;;-1:-1:-1;;;7894:68:0;;;;;;;:::i;:::-;36968:22;;::::1;::::0;:12:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;;36897:101:::0;:::o;24221:326::-;24338:7;24379:16;;;:7;:16;;;;;;-1:-1:-1;;;;;24379:16:0;24428:19;24406:110;;;;-1:-1:-1;;;24406:110:0;;9645:2:1;24406:110:0;;;9627:21:1;9684:2;9664:18;;;9657:30;9723:34;9703:18;;;9696:62;-1:-1:-1;;;9774:18:1;;;9767:39;9823:19;;24406:110:0;9443:405:1;37459:108:0;7755:6;;-1:-1:-1;;;;;7755:6:0;735:10;7902:23;7894:68;;;;-1:-1:-1;;;7894:68:0;;;;;;;:::i;:::-;37533:10:::1;:26:::0;37459:108::o;23864:295::-;23981:7;-1:-1:-1;;;;;24028:19:0;;24006:111;;;;-1:-1:-1;;;24006:111:0;;9234:2:1;24006:111:0;;;9216:21:1;9273:2;9253:18;;;9246:30;9312:34;9292:18;;;9285:62;-1:-1:-1;;;9363:18:1;;;9356:40;9413:19;;24006:111:0;9032:406:1;24006:111:0;-1:-1:-1;;;;;;24135:16:0;;;;;:9;:16;;;;;;;23864:295::o;8333:94::-;7755:6;;-1:-1:-1;;;;;7755:6:0;735:10;7902:23;7894:68;;;;-1:-1:-1;;;7894:68:0;;;;;;;:::i;:::-;8398:21:::1;8416:1;8398:9;:21::i;:::-;8333:94::o:0;24783:104::-;24839:13;24872:7;24865:14;;;;;:::i;26687:327::-;-1:-1:-1;;;;;26822:24:0;;735:10;26822:24;;26814:62;;;;-1:-1:-1;;;26814:62:0;;8042:2:1;26814:62:0;;;8024:21:1;8081:2;8061:18;;;8054:30;8120:27;8100:18;;;8093:55;8165:18;;26814:62:0;7840:349:1;26814:62:0;735:10;26889:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;26889:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;26889:53:0;;;;;;;;;;26958:48;;5976:41:1;;;26889:42:0;;735:10;26958:48;;5949:18:1;26958:48:0;;;;;;;26687:327;;:::o;28069:365::-;28258:41;735:10;28291:7;28258:18;:41::i;:::-;28236:140;;;;-1:-1:-1;;;28236:140:0;;;;;;;:::i;:::-;28387:39;28401:4;28407:2;28411:7;28420:5;28387:13;:39::i;:::-;28069:365;;;;:::o;24958:468::-;30046:4;30070:16;;;:7;:16;;;;;;25076:13;;-1:-1:-1;;;;;30070:16:0;25107:113;;;;-1:-1:-1;;;25107:113:0;;11600:2:1;25107:113:0;;;11582:21:1;11639:2;11619:18;;;11612:30;11678:34;11658:18;;;11651:62;-1:-1:-1;;;11729:18:1;;;11722:45;11784:19;;25107:113:0;11398:411:1;25107:113:0;25233:21;25257:10;:8;:10::i;:::-;25233:34;;25322:1;25304:7;25298:21;:25;:120;;;;;;;;;;;;;;;;;25367:7;25376:18;:7;:16;:18::i;:::-;25350:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;25298:120;25278:140;24958:468;-1:-1:-1;;;24958:468:0:o;8582:229::-;7755:6;;-1:-1:-1;;;;;7755:6:0;735:10;7902:23;7894:68;;;;-1:-1:-1;;;7894:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8685:22:0;::::1;8663:110;;;::::0;-1:-1:-1;;;8663:110:0;;6873:2:1;8663:110:0::1;::::0;::::1;6855:21:1::0;6912:2;6892:18;;;6885:30;6951:34;6931:18;;;6924:62;-1:-1:-1;;;7002:18:1;;;6995:36;7048:19;;8663:110:0::1;6671:402:1::0;8663:110:0::1;8784:19;8794:8;8784:9;:19::i;:::-;8582:229:::0;:::o;34104:174::-;34179:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;34179:29:0;-1:-1:-1;;;;;34179:29:0;;;;;;;;:24;;34233:23;34179:24;34233:14;:23::i;:::-;-1:-1:-1;;;;;34224:46:0;;;;;;;;;;;34104:174;;:::o;30275:452::-;30404:4;30070:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30070:16:0;30426:110;;;;-1:-1:-1;;;30426:110:0;;8396:2:1;30426:110:0;;;8378:21:1;8435:2;8415:18;;;8408:30;8474:34;8454:18;;;8447:62;-1:-1:-1;;;8525:18:1;;;8518:42;8577:19;;30426:110:0;8194:408:1;30426:110:0;30547:13;30563:23;30578:7;30563:14;:23::i;:::-;30547:39;;30616:5;-1:-1:-1;;;;;30605:16:0;:7;-1:-1:-1;;;;;30605:16:0;;:64;;;;30662:7;-1:-1:-1;;;;;30638:31:0;:20;30650:7;30638:11;:20::i;:::-;-1:-1:-1;;;;;30638:31:0;;30605:64;:113;;;-1:-1:-1;;;;;;27256:25:0;;;27227:4;27256:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;30686:32;30597:122;30275:452;-1:-1:-1;;;;30275:452:0:o;33371:615::-;33544:4;-1:-1:-1;;;;;33517:31:0;:23;33532:7;33517:14;:23::i;:::-;-1:-1:-1;;;;;33517:31:0;;33495:122;;;;-1:-1:-1;;;33495:122:0;;11190:2:1;33495:122:0;;;11172:21:1;11229:2;11209:18;;;11202:30;11268:34;11248:18;;;11241:62;-1:-1:-1;;;11319:18:1;;;11312:39;11368:19;;33495:122:0;10988:405:1;33495:122:0;-1:-1:-1;;;;;33636:16:0;;33628:65;;;;-1:-1:-1;;;33628:65:0;;7637:2:1;33628:65:0;;;7619:21:1;7676:2;7656:18;;;7649:30;7715:34;7695:18;;;7688:62;-1:-1:-1;;;7766:18:1;;;7759:34;7810:19;;33628:65:0;7435:400:1;33628:65:0;33810:29;33827:1;33831:7;33810:8;:29::i;:::-;-1:-1:-1;;;;;33852:15:0;;;;;;:9;:15;;;;;:20;;33871:1;;33852:15;:20;;33871:1;;33852:20;:::i;:::-;;;;-1:-1:-1;;;;;;;33883:13:0;;;;;;:9;:13;;;;;:18;;33900:1;;33883:13;:18;;33900:1;;33883:18;:::i;:::-;;;;-1:-1:-1;;33912:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;33912:21:0;-1:-1:-1;;;;;33912:21:0;;;;;;;;;33951:27;;33912:16;;33951:27;;;;;;;33371:615;;;:::o;31069:110::-;31145:26;31155:2;31159:7;31145:26;;;;;;;;;;;;:9;:26::i;8819:173::-;8894:6;;;-1:-1:-1;;;;;8911:17:0;;;-1:-1:-1;;;;;;8911:17:0;;;;;;;8944:40;;8894:6;;;8911:17;8894:6;;8944:40;;8875:16;;8944:40;8864:128;8819:173;:::o;29316:352::-;29473:28;29483:4;29489:2;29493:7;29473:9;:28::i;:::-;29534:48;29557:4;29563:2;29567:7;29576:5;29534:22;:48::i;:::-;29512:148;;;;-1:-1:-1;;;29512:148:0;;;;;;;:::i;37575:113::-;37635:13;37668:12;37661:19;;;;;:::i;10312:723::-;10368:13;10589:10;10585:53;;-1:-1:-1;;10616:10:0;;;;;;;;;;;;-1:-1:-1;;;10616:10:0;;;;;10312:723::o;10585:53::-;10663:5;10648:12;10704:78;10711:9;;10704:78;;10737:8;;;;:::i;:::-;;-1:-1:-1;10760:10:0;;-1:-1:-1;10768:2:0;10760:10;;:::i;:::-;;;10704:78;;;10792:19;10824:6;10814:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10814:17:0;;10792:39;;10842:154;10849:10;;10842:154;;10876:11;10886:1;10876:11;;:::i;:::-;;-1:-1:-1;10945:10:0;10953:2;10945:5;:10;:::i;:::-;10932:24;;:2;:24;:::i;:::-;10919:39;;10902:6;10909;10902:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;10902:56:0;;;;;;;;-1:-1:-1;10973:11:0;10982:2;10973:11;;:::i;:::-;;;10842:154;;31406:321;31536:18;31542:2;31546:7;31536:5;:18::i;:::-;31587:54;31618:1;31622:2;31626:7;31635:5;31587:22;:54::i;:::-;31565:154;;;;-1:-1:-1;;;31565:154:0;;;;;;;:::i;34843:984::-;34998:4;-1:-1:-1;;;;;35019:13:0;;13188:20;13236:8;35015:805;;35072:175;;-1:-1:-1;;;35072:175:0;;-1:-1:-1;;;;;35072:36:0;;;;;:175;;735:10;;35166:4;;35193:7;;35223:5;;35072:175;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35072:175:0;;;;;;;;-1:-1:-1;;35072:175:0;;;;;;;;;;;;:::i;:::-;;;35051:714;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35434:13:0;;35430:320;;35477:108;;-1:-1:-1;;;35477:108:0;;;;;;;:::i;35430:320::-;35700:6;35694:13;35685:6;35681:2;35677:15;35670:38;35051:714;-1:-1:-1;;;;;;35311:55:0;-1:-1:-1;;;35311:55:0;;-1:-1:-1;35304:62:0;;35015:805;-1:-1:-1;35804:4:0;34843:984;;;;;;:::o;32063:382::-;-1:-1:-1;;;;;32143:16:0;;32135:61;;;;-1:-1:-1;;;32135:61:0;;10055:2:1;32135:61:0;;;10037:21:1;;;10074:18;;;10067:30;10133:34;10113:18;;;10106:62;10185:18;;32135:61:0;9853:356:1;32135:61:0;30046:4;30070:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30070:16:0;:30;32207:58;;;;-1:-1:-1;;;32207:58:0;;7280:2:1;32207:58:0;;;7262:21:1;7319:2;7299:18;;;7292:30;7358;7338:18;;;7331:58;7406:18;;32207:58:0;7078:352:1;32207:58:0;-1:-1:-1;;;;;32336:13:0;;;;;;:9;:13;;;;;:18;;32353:1;;32336:13;:18;;32353:1;;32336:18;:::i;:::-;;;;-1:-1:-1;;32365:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;32365:21:0;-1:-1:-1;;;;;32365:21:0;;;;;;;;32404:33;;32365:16;;;32404:33;;32365:16;;32404:33;32063:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:186::-;887:6;940:2;928:9;919:7;915:23;911:32;908:52;;;956:1;953;946:12;908:52;979:29;998:9;979:29;:::i;1019:260::-;1087:6;1095;1148:2;1136:9;1127:7;1123:23;1119:32;1116:52;;;1164:1;1161;1154:12;1116:52;1187:29;1206:9;1187:29;:::i;:::-;1177:39;;1235:38;1269:2;1258:9;1254:18;1235:38;:::i;:::-;1225:48;;1019:260;;;;;:::o;1284:328::-;1361:6;1369;1377;1430:2;1418:9;1409:7;1405:23;1401:32;1398:52;;;1446:1;1443;1436:12;1398:52;1469:29;1488:9;1469:29;:::i;:::-;1459:39;;1517:38;1551:2;1540:9;1536:18;1517:38;:::i;:::-;1507:48;;1602:2;1591:9;1587:18;1574:32;1564:42;;1284:328;;;;;:::o;1617:666::-;1712:6;1720;1728;1736;1789:3;1777:9;1768:7;1764:23;1760:33;1757:53;;;1806:1;1803;1796:12;1757:53;1829:29;1848:9;1829:29;:::i;:::-;1819:39;;1877:38;1911:2;1900:9;1896:18;1877:38;:::i;:::-;1867:48;;1962:2;1951:9;1947:18;1934:32;1924:42;;2017:2;2006:9;2002:18;1989:32;2044:18;2036:6;2033:30;2030:50;;;2076:1;2073;2066:12;2030:50;2099:22;;2152:4;2144:13;;2140:27;-1:-1:-1;2130:55:1;;2181:1;2178;2171:12;2130:55;2204:73;2269:7;2264:2;2251:16;2246:2;2242;2238:11;2204:73;:::i;:::-;2194:83;;;1617:666;;;;;;;:::o;2288:347::-;2353:6;2361;2414:2;2402:9;2393:7;2389:23;2385:32;2382:52;;;2430:1;2427;2420:12;2382:52;2453:29;2472:9;2453:29;:::i;:::-;2443:39;;2532:2;2521:9;2517:18;2504:32;2579:5;2572:13;2565:21;2558:5;2555:32;2545:60;;2601:1;2598;2591:12;2545:60;2624:5;2614:15;;;2288:347;;;;;:::o;2640:254::-;2708:6;2716;2769:2;2757:9;2748:7;2744:23;2740:32;2737:52;;;2785:1;2782;2775:12;2737:52;2808:29;2827:9;2808:29;:::i;:::-;2798:39;2884:2;2869:18;;;;2856:32;;-1:-1:-1;;;2640:254:1:o;2899:245::-;2957:6;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3065:9;3052:23;3084:30;3108:5;3084:30;:::i;3149:249::-;3218:6;3271:2;3259:9;3250:7;3246:23;3242:32;3239:52;;;3287:1;3284;3277:12;3239:52;3319:9;3313:16;3338:30;3362:5;3338:30;:::i;3403:450::-;3472:6;3525:2;3513:9;3504:7;3500:23;3496:32;3493:52;;;3541:1;3538;3531:12;3493:52;3581:9;3568:23;3614:18;3606:6;3603:30;3600:50;;;3646:1;3643;3636:12;3600:50;3669:22;;3722:4;3714:13;;3710:27;-1:-1:-1;3700:55:1;;3751:1;3748;3741:12;3700:55;3774:73;3839:7;3834:2;3821:16;3816:2;3812;3808:11;3774:73;:::i;3858:180::-;3917:6;3970:2;3958:9;3949:7;3945:23;3941:32;3938:52;;;3986:1;3983;3976:12;3938:52;-1:-1:-1;4009:23:1;;3858:180;-1:-1:-1;3858:180:1:o;4043:350::-;4110:6;4118;4171:2;4159:9;4150:7;4146:23;4142:32;4139:52;;;4187:1;4184;4177:12;4139:52;4226:9;4213:23;4276:10;4269:5;4265:22;4258:5;4255:33;4245:61;;4302:1;4299;4292:12;4398:257;4439:3;4477:5;4471:12;4504:6;4499:3;4492:19;4520:63;4576:6;4569:4;4564:3;4560:14;4553:4;4546:5;4542:16;4520:63;:::i;:::-;4637:2;4616:15;-1:-1:-1;;4612:29:1;4603:39;;;;4644:4;4599:50;;4398:257;-1:-1:-1;;4398:257:1:o;4660:470::-;4839:3;4877:6;4871:13;4893:53;4939:6;4934:3;4927:4;4919:6;4915:17;4893:53;:::i;:::-;5009:13;;4968:16;;;;5031:57;5009:13;4968:16;5065:4;5053:17;;5031:57;:::i;:::-;5104:20;;4660:470;-1:-1:-1;;;;4660:470:1:o;5343:488::-;-1:-1:-1;;;;;5612:15:1;;;5594:34;;5664:15;;5659:2;5644:18;;5637:43;5711:2;5696:18;;5689:34;;;5759:3;5754:2;5739:18;;5732:31;;;5537:4;;5780:45;;5805:19;;5797:6;5780:45;:::i;:::-;5772:53;5343:488;-1:-1:-1;;;;;;5343:488:1:o;6028:219::-;6177:2;6166:9;6159:21;6140:4;6197:44;6237:2;6226:9;6222:18;6214:6;6197:44;:::i;6252:414::-;6454:2;6436:21;;;6493:2;6473:18;;;6466:30;6532:34;6527:2;6512:18;;6505:62;-1:-1:-1;;;6598:2:1;6583:18;;6576:48;6656:3;6641:19;;6252:414::o;10627:356::-;10829:2;10811:21;;;10848:18;;;10841:30;10907:34;10902:2;10887:18;;10880:62;10974:2;10959:18;;10627:356::o;12216:413::-;12418:2;12400:21;;;12457:2;12437:18;;;12430:30;12496:34;12491:2;12476:18;;12469:62;-1:-1:-1;;;12562:2:1;12547:18;;12540:47;12619:3;12604:19;;12216:413::o;13203:128::-;13243:3;13274:1;13270:6;13267:1;13264:13;13261:39;;;13280:18;;:::i;:::-;-1:-1:-1;13316:9:1;;13203:128::o;13336:120::-;13376:1;13402;13392:35;;13407:18;;:::i;:::-;-1:-1:-1;13441:9:1;;13336:120::o;13461:125::-;13501:4;13529:1;13526;13523:8;13520:34;;;13534:18;;:::i;:::-;-1:-1:-1;13571:9:1;;13461:125::o;13591:258::-;13663:1;13673:113;13687:6;13684:1;13681:13;13673:113;;;13763:11;;;13757:18;13744:11;;;13737:39;13709:2;13702:10;13673:113;;;13804:6;13801:1;13798:13;13795:48;;;-1:-1:-1;;13839:1:1;13821:16;;13814:27;13591:258::o;13854:380::-;13933:1;13929:12;;;;13976;;;13997:61;;14051:4;14043:6;14039:17;14029:27;;13997:61;14104:2;14096:6;14093:14;14073:18;14070:38;14067:161;;;14150:10;14145:3;14141:20;14138:1;14131:31;14185:4;14182:1;14175:15;14213:4;14210:1;14203:15;14067:161;;13854:380;;;:::o;14239:197::-;14277:3;14305:6;14346:2;14339:5;14335:14;14373:2;14364:7;14361:15;14358:41;;;14379:18;;:::i;:::-;14428:1;14415:15;;14239:197;-1:-1:-1;;;14239:197:1:o;14441:135::-;14480:3;-1:-1:-1;;14501:17:1;;14498:43;;;14521:18;;:::i;:::-;-1:-1:-1;14568:1:1;14557:13;;14441:135::o;14581:201::-;14619:3;14647:10;14692:2;14685:5;14681:14;14719:2;14710:7;14707:15;14704:41;;;14725:18;;:::i;14787:112::-;14819:1;14845;14835:35;;14850:18;;:::i;:::-;-1:-1:-1;14884:9:1;;14787:112::o;14904:127::-;14965:10;14960:3;14956:20;14953:1;14946:31;14996:4;14993:1;14986:15;15020:4;15017:1;15010:15;15036:127;15097:10;15092:3;15088:20;15085:1;15078:31;15128:4;15125:1;15118:15;15152:4;15149:1;15142:15;15168:127;15229:10;15224:3;15220:20;15217:1;15210:31;15260:4;15257:1;15250:15;15284:4;15281:1;15274:15;15300:127;15361:10;15356:3;15352:20;15349:1;15342:31;15392:4;15389:1;15382:15;15416:4;15413:1;15406:15;15432:131;-1:-1:-1;;;;;;15506:32:1;;15496:43;;15486:71;;15553:1;15550;15543:12
Swarm Source
ipfs://96b450e9f11f1000fd5ab78994c6fafcf680a7713f5f5522876a4d7b5026ccd0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.