Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 83 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 15639366 | 822 days ago | IN | 0 ETH | 0.00075501 | ||||
Set Approval For... | 15534553 | 836 days ago | IN | 0 ETH | 0.00085075 | ||||
Set Approval For... | 15517792 | 839 days ago | IN | 0 ETH | 0.00032283 | ||||
Set Approval For... | 15217977 | 887 days ago | IN | 0 ETH | 0.00079441 | ||||
Set Approval For... | 14804931 | 955 days ago | IN | 0 ETH | 0.00097598 | ||||
Set Approval For... | 14572447 | 991 days ago | IN | 0 ETH | 0.00222458 | ||||
Pause | 14571651 | 991 days ago | IN | 0 ETH | 0.00330006 | ||||
Set URI | 14571650 | 991 days ago | IN | 0 ETH | 0.00843735 | ||||
Set Approval For... | 14528964 | 998 days ago | IN | 0 ETH | 0.00266575 | ||||
Withdraw | 14487214 | 1005 days ago | IN | 0.01 ETH | 0.00113843 | ||||
Mint | 14476915 | 1006 days ago | IN | 0.17 ETH | 0.00664375 | ||||
Set Approval For... | 14452594 | 1010 days ago | IN | 0 ETH | 0.00177827 | ||||
Mint | 14451452 | 1010 days ago | IN | 0.085 ETH | 0.00343295 | ||||
Safe Transfer Fr... | 14444420 | 1011 days ago | IN | 0 ETH | 0.00212994 | ||||
Set Approval For... | 14443685 | 1011 days ago | IN | 0 ETH | 0.00189164 | ||||
Set Approval For... | 14442803 | 1012 days ago | IN | 0 ETH | 0.00041359 | ||||
Set Approval For... | 14442803 | 1012 days ago | IN | 0 ETH | 0.00072126 | ||||
Mint | 14442666 | 1012 days ago | IN | 0.085 ETH | 0.00136876 | ||||
Withdraw | 14438788 | 1012 days ago | IN | 0 ETH | 0.00153208 | ||||
Mint | 14424266 | 1014 days ago | IN | 0.085 ETH | 0.00162295 | ||||
Set Approval For... | 14421553 | 1015 days ago | IN | 0 ETH | 0.00085931 | ||||
Mint | 14421487 | 1015 days ago | IN | 0.085 ETH | 0.00102853 | ||||
Mint | 14419421 | 1015 days ago | IN | 0.085 ETH | 0.0026806 | ||||
Mint | 14419081 | 1015 days ago | IN | 0.085 ETH | 0.0014097 | ||||
Mint | 14418831 | 1015 days ago | IN | 0.085 ETH | 0.0012168 |
Loading...
Loading
Contract Name:
DieHardDinos
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-18 */ // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://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); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // 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/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (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/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (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/IERC1155Receiver.sol // OpenZeppelin Contracts (last updated v4.5.0) (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. * * NOTE: 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. * * NOTE: 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/IERC1155.sol // OpenZeppelin Contracts v4.4.1 (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/extensions/IERC1155MetadataURI.sol // OpenZeppelin Contracts v4.4.1 (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/Context.sol // OpenZeppelin Contracts v4.4.1 (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/token/ERC1155/ERC1155.sol // OpenZeppelin Contracts v4.4.1 (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 { _setApprovalForAll(_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( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not owner nor approved" ); _safeTransferFrom(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( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: transfer caller is not owner nor approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - `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 memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); 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"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - 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[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); 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"); unchecked { _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 `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _doSafeTransferAcceptanceCheck(operator, address(0), to, 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 (uint256 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 `from` * * Requirements: * * - `from` cannot be the zero address. * - `from` must have at least `amount` tokens of token type `id`. */ function _burn( address from, uint256 id, uint256 amount ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, 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 from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); 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: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @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.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.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: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (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() { _transferOwnership(_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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/DieHardDinos.sol pragma solidity ^0.8.0; /** * @dev contract module which defines DieHardDinos NFT Collection By Dinosphere * and all the interactions it uses */ contract DieHardDinos is ERC1155, Ownable { //@dev Attributes for NFT configuration uint256 internal tokenId; uint256 public cost = 0.1 ether; uint256 public maxSupply = 888; uint256 public totalSupply = 0; uint256 public maxMintAmount = 10; uint256 private _currentTokenID = 0; mapping(address => uint256) public freeMint; bool public paused; // @dev inner attributes of the contract /** * @dev Create an instance of DieHardDinos contract */ constructor( string memory _baseURI ) ERC1155(_baseURI) { tokenId = 0; } /** * @dev Mint edition to a wallet * @param _to wallet receiving the edition(s). * @param _mintAmount number of editions to mint. */ function mint(address _to, uint256 _mintAmount) public payable { require(!paused, "Minting is Paused."); require(_mintAmount <= maxMintAmount, "Only 10 DieHardDinos are Allowed Per Transaction"); require( tokenId + _mintAmount <= maxSupply, "Dinosphere is at Max Capacity" ); if(freeMint[_to] < _mintAmount) require( msg.value >= cost * _mintAmount, "Uh Oh Not Enough ETH Paid" ); else freeMint[_to] -= _mintAmount; for (uint256 i = 0; i < _mintAmount; i++) { tokenId++; _mint(_to, tokenId, 1, ""); totalSupply++; } } function withdraw() public payable onlyOwner{ (bool os, ) = payable(owner()).call{value: address(this).balance}(""); require(os); } /** * @dev change cost of NFT * @param _newCost new cost of each edition */ function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } /** * @dev restrict max mintable amount of edition at a time * @param _newmaxMintAmount new max mintable amount */ function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner { maxMintAmount = _newmaxMintAmount; } /** * @dev restrict max mintable amount of edition at a time * @param _nexMaxSupply new max supply */ function setmaxSupply(uint256 _nexMaxSupply) public onlyOwner { maxSupply = _nexMaxSupply; } /** * @dev set uri * @param _newURI new URI */ function setURI(string memory _newURI) public onlyOwner { _setURI(_newURI); } /** * @dev Disable minting process */ function pause() public onlyOwner { paused = !paused; } /** * @dev Add user to white list * @param _user Users wallet to whitelist */ function freeMintUserBatch( address[] memory _user, uint256[] memory _amount ) public onlyOwner { require(_user.length == _amount.length); for (uint256 i = 0; i < _user.length; i++) freeMint[_user[i]] = _amount[i]; } }
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":"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":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":"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":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"freeMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_user","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"freeMintUserBatch","outputs":[],"stateMutability":"nonpayable","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":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newURI","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nexMaxSupply","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405267016345785d8a00006005556103786006556000600755600a60085560006009553480156200003257600080fd5b50604051620021ec380380620021ec83398101604081905262000055916200018a565b80620000618162000079565b506200006d3362000092565b506000600455620002b9565b80516200008e906002906020840190620000e4565b5050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000f29062000266565b90600052602060002090601f01602090048101928262000116576000855562000161565b82601f106200013157805160ff191683800117855562000161565b8280016001018555821562000161579182015b828111156200016157825182559160200191906001019062000144565b506200016f92915062000173565b5090565b5b808211156200016f576000815560010162000174565b600060208083850312156200019e57600080fd5b82516001600160401b0380821115620001b657600080fd5b818501915085601f830112620001cb57600080fd5b815181811115620001e057620001e0620002a3565b604051601f8201601f19908116603f011681019083821181831017156200020b576200020b620002a3565b8160405282815288868487010111156200022457600080fd5b600093505b8284101562000248578484018601518185018701529285019262000229565b828411156200025a5760008684830101525b98975050505050505050565b600181811c908216806200027b57607f821691505b602082108114156200029d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b611f2380620002c96000396000f3fe6080604052600436106101655760003560e01c80634e1273f4116100d1578063a22cb4651161008a578063e985e9c511610064578063e985e9c5146103e8578063f242432a14610431578063f2fde38b14610451578063fa07ce1d1461047157600080fd5b8063a22cb46514610392578063d04be076146103b2578063d5abeb01146103d257600080fd5b80634e1273f4146102d95780635c975abb14610306578063715018a6146103205780637f00c7a6146103355780638456cb59146103555780638da5cb5b1461036a57600080fd5b8063228025e811610123578063228025e814610248578063239c70ae146102685780632eb2c2d61461027e5780633ccfd60b1461029e57806340c10f19146102a657806344a0d68a146102b957600080fd5b8062fdd58e1461016a57806301ffc9a71461019d57806302fe5305146101cd5780630e89341c146101ef57806313faede61461021c57806318160ddd14610232575b600080fd5b34801561017657600080fd5b5061018a6101853660046118d0565b61049e565b6040519081526020015b60405180910390f35b3480156101a957600080fd5b506101bd6101b83660046119cb565b610535565b6040519015158152602001610194565b3480156101d957600080fd5b506101ed6101e8366004611a05565b610587565b005b3480156101fb57600080fd5b5061020f61020a366004611a56565b6105bd565b6040516101949190611bdb565b34801561022857600080fd5b5061018a60055481565b34801561023e57600080fd5b5061018a60075481565b34801561025457600080fd5b506101ed610263366004611a56565b610651565b34801561027457600080fd5b5061018a60085481565b34801561028a57600080fd5b506101ed610299366004611785565b610680565b6101ed610717565b6101ed6102b43660046118d0565b6107b2565b3480156102c557600080fd5b506101ed6102d4366004611a56565b6109df565b3480156102e557600080fd5b506102f96102f43660046118fa565b610a0e565b6040516101949190611b9a565b34801561031257600080fd5b50600b546101bd9060ff1681565b34801561032c57600080fd5b506101ed610b38565b34801561034157600080fd5b506101ed610350366004611a56565b610b6e565b34801561036157600080fd5b506101ed610b9d565b34801561037657600080fd5b506003546040516001600160a01b039091168152602001610194565b34801561039e57600080fd5b506101ed6103ad366004611894565b610bdb565b3480156103be57600080fd5b506101ed6103cd3660046118fa565b610bea565b3480156103de57600080fd5b5061018a60065481565b3480156103f457600080fd5b506101bd610403366004611752565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b34801561043d57600080fd5b506101ed61044c36600461182f565b610c9d565b34801561045d57600080fd5b506101ed61046c366004611737565b610d24565b34801561047d57600080fd5b5061018a61048c366004611737565b600a6020526000908152604090205481565b60006001600160a01b03831661050f5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061056657506001600160e01b031982166303a24d0760e21b145b8061058157506301ffc9a760e01b6001600160e01b03198316145b92915050565b6003546001600160a01b031633146105b15760405162461bcd60e51b815260040161050690611cc5565b6105ba81610dbc565b50565b6060600280546105cc90611d6c565b80601f01602080910402602001604051908101604052809291908181526020018280546105f890611d6c565b80156106455780601f1061061a57610100808354040283529160200191610645565b820191906000526020600020905b81548152906001019060200180831161062857829003601f168201915b50505050509050919050565b6003546001600160a01b0316331461067b5760405162461bcd60e51b815260040161050690611cc5565b600655565b6001600160a01b03851633148061069c575061069c8533610403565b6107035760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610506565b6107108585858585610dcf565b5050505050565b6003546001600160a01b031633146107415760405162461bcd60e51b815260040161050690611cc5565b60006107556003546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d806000811461079f576040519150601f19603f3d011682016040523d82523d6000602084013e6107a4565b606091505b50509050806105ba57600080fd5b600b5460ff16156107fa5760405162461bcd60e51b815260206004820152601260248201527126b4b73a34b7339034b9902830bab9b2b21760711b6044820152606401610506565b6008548111156108655760405162461bcd60e51b815260206004820152603060248201527f4f6e6c79203130204469654861726444696e6f732061726520416c6c6f77656460448201526f102832b9102a3930b739b0b1ba34b7b760811b6064820152608401610506565b600654816004546108769190611d1e565b11156108c45760405162461bcd60e51b815260206004820152601d60248201527f44696e6f737068657265206973206174204d61782043617061636974790000006044820152606401610506565b6001600160a01b0382166000908152600a602052604090205481111561094657806005546108f29190611d36565b3410156109415760405162461bcd60e51b815260206004820152601960248201527f5568204f68204e6f7420456e6f756768204554482050616964000000000000006044820152606401610506565b610974565b6001600160a01b0382166000908152600a60205260408120805483929061096e908490611d55565b90915550505b60005b818110156109da576004805490600061098f83611dd4565b91905055506109b283600454600160405180602001604052806000815250610fac565b600780549060006109c283611dd4565b919050555080806109d290611dd4565b915050610977565b505050565b6003546001600160a01b03163314610a095760405162461bcd60e51b815260040161050690611cc5565b600555565b60608151835114610a735760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610506565b6000835167ffffffffffffffff811115610a8f57610a8f611e1b565b604051908082528060200260200182016040528015610ab8578160200160208202803683370190505b50905060005b8451811015610b3057610b03858281518110610adc57610adc611e05565b6020026020010151858381518110610af657610af6611e05565b602002602001015161049e565b828281518110610b1557610b15611e05565b6020908102919091010152610b2981611dd4565b9050610abe565b509392505050565b6003546001600160a01b03163314610b625760405162461bcd60e51b815260040161050690611cc5565b610b6c60006110b6565b565b6003546001600160a01b03163314610b985760405162461bcd60e51b815260040161050690611cc5565b600855565b6003546001600160a01b03163314610bc75760405162461bcd60e51b815260040161050690611cc5565b600b805460ff19811660ff90911615179055565b610be6338383611108565b5050565b6003546001600160a01b03163314610c145760405162461bcd60e51b815260040161050690611cc5565b8051825114610c2257600080fd5b60005b82518110156109da57818181518110610c4057610c40611e05565b6020026020010151600a6000858481518110610c5e57610c5e611e05565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080610c9590611dd4565b915050610c25565b6001600160a01b038516331480610cb95750610cb98533610403565b610d175760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610506565b61071085858585856111e9565b6003546001600160a01b03163314610d4e5760405162461bcd60e51b815260040161050690611cc5565b6001600160a01b038116610db35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610506565b6105ba816110b6565b8051610be6906002906020840190611586565b8151835114610e315760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610506565b6001600160a01b038416610e575760405162461bcd60e51b815260040161050690611c36565b3360005b8451811015610f3e576000858281518110610e7857610e78611e05565b602002602001015190506000858381518110610e9657610e96611e05565b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015610ee65760405162461bcd60e51b815260040161050690611c7b565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610f23908490611d1e565b9250508190555050505080610f3790611dd4565b9050610e5b565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610f8e929190611bad565b60405180910390a4610fa4818787878787611306565b505050505050565b6001600160a01b03841661100c5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610506565b336110268160008761101d88611471565b61071088611471565b6000848152602081815260408083206001600160a01b038916845290915281208054859290611056908490611d1e565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610710816000878787876114bc565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316141561117c5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610506565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b03841661120f5760405162461bcd60e51b815260040161050690611c36565b3361121f81878761101d88611471565b6000848152602081815260408083206001600160a01b038a168452909152902054838110156112605760405162461bcd60e51b815260040161050690611c7b565b6000858152602081815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061129d908490611d1e565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46112fd8288888888886114bc565b50505050505050565b6001600160a01b0384163b15610fa45760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061134a9089908990889088908890600401611af7565b602060405180830381600087803b15801561136457600080fd5b505af1925050508015611394575060408051601f3d908101601f19168201909252611391918101906119e8565b60015b611441576113a0611e31565b806308c379a014156113da57506113b5611e4d565b806113c057506113dc565b8060405162461bcd60e51b81526004016105069190611bdb565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610506565b6001600160e01b0319811663bc197c8160e01b146112fd5760405162461bcd60e51b815260040161050690611bee565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106114ab576114ab611e05565b602090810291909101015292915050565b6001600160a01b0384163b15610fa45760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906115009089908990889088908890600401611b55565b602060405180830381600087803b15801561151a57600080fd5b505af192505050801561154a575060408051601f3d908101601f19168201909252611547918101906119e8565b60015b611556576113a0611e31565b6001600160e01b0319811663f23a6e6160e01b146112fd5760405162461bcd60e51b815260040161050690611bee565b82805461159290611d6c565b90600052602060002090601f0160209004810192826115b457600085556115fa565b82601f106115cd57805160ff19168380011785556115fa565b828001600101855582156115fa579182015b828111156115fa5782518255916020019190600101906115df565b5061160692915061160a565b5090565b5b80821115611606576000815560010161160b565b600067ffffffffffffffff83111561163957611639611e1b565b604051611650601f8501601f191660200182611da7565b80915083815284848401111561166557600080fd5b83836020830137600060208583010152509392505050565b80356001600160a01b038116811461169457600080fd5b919050565b600082601f8301126116aa57600080fd5b813560206116b782611cfa565b6040516116c48282611da7565b8381528281019150858301600585901b870184018810156116e457600080fd5b60005b85811015611703578135845292840192908401906001016116e7565b5090979650505050505050565b600082601f83011261172157600080fd5b6117308383356020850161161f565b9392505050565b60006020828403121561174957600080fd5b6117308261167d565b6000806040838503121561176557600080fd5b61176e8361167d565b915061177c6020840161167d565b90509250929050565b600080600080600060a0868803121561179d57600080fd5b6117a68661167d565b94506117b46020870161167d565b9350604086013567ffffffffffffffff808211156117d157600080fd5b6117dd89838a01611699565b945060608801359150808211156117f357600080fd5b6117ff89838a01611699565b9350608088013591508082111561181557600080fd5b5061182288828901611710565b9150509295509295909350565b600080600080600060a0868803121561184757600080fd5b6118508661167d565b945061185e6020870161167d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561188857600080fd5b61182288828901611710565b600080604083850312156118a757600080fd5b6118b08361167d565b9150602083013580151581146118c557600080fd5b809150509250929050565b600080604083850312156118e357600080fd5b6118ec8361167d565b946020939093013593505050565b6000806040838503121561190d57600080fd5b823567ffffffffffffffff8082111561192557600080fd5b818501915085601f83011261193957600080fd5b8135602061194682611cfa565b6040516119538282611da7565b8381528281019150858301600585901b870184018b101561197357600080fd5b600096505b8487101561199d576119898161167d565b835260019690960195918301918301611978565b50965050860135925050808211156119b457600080fd5b506119c185828601611699565b9150509250929050565b6000602082840312156119dd57600080fd5b813561173081611ed7565b6000602082840312156119fa57600080fd5b815161173081611ed7565b600060208284031215611a1757600080fd5b813567ffffffffffffffff811115611a2e57600080fd5b8201601f81018413611a3f57600080fd5b611a4e8482356020840161161f565b949350505050565b600060208284031215611a6857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611a9f57815187529582019590820190600101611a83565b509495945050505050565b6000815180845260005b81811015611ad057602081850181015186830182015201611ab4565b81811115611ae2576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0386811682528516602082015260a060408201819052600090611b2390830186611a6f565b8281036060840152611b358186611a6f565b90508281036080840152611b498185611aaa565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611b8f90830184611aaa565b979650505050505050565b6020815260006117306020830184611a6f565b604081526000611bc06040830185611a6f565b8281036020840152611bd28185611a6f565b95945050505050565b6020815260006117306020830184611aaa565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600067ffffffffffffffff821115611d1457611d14611e1b565b5060051b60200190565b60008219821115611d3157611d31611def565b500190565b6000816000190483118215151615611d5057611d50611def565b500290565b600082821015611d6757611d67611def565b500390565b600181811c90821680611d8057607f821691505b60208210811415611da157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff81118282101715611dcd57611dcd611e1b565b6040525050565b6000600019821415611de857611de8611def565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d1115611e4a5760046000803e5060005160e01c5b90565b600060443d1015611e5b5790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715611e8b57505050505090565b8285019150815181811115611ea35750505050505090565b843d8701016020828501011115611ebd5750505050505090565b611ecc60208286010187611da7565b509095945050505050565b6001600160e01b0319811681146105ba57600080fdfea2646970667358221220ba8daf6f72585526e095037758e12aedd6859606718838749dffeaefd6ccaff764736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101655760003560e01c80634e1273f4116100d1578063a22cb4651161008a578063e985e9c511610064578063e985e9c5146103e8578063f242432a14610431578063f2fde38b14610451578063fa07ce1d1461047157600080fd5b8063a22cb46514610392578063d04be076146103b2578063d5abeb01146103d257600080fd5b80634e1273f4146102d95780635c975abb14610306578063715018a6146103205780637f00c7a6146103355780638456cb59146103555780638da5cb5b1461036a57600080fd5b8063228025e811610123578063228025e814610248578063239c70ae146102685780632eb2c2d61461027e5780633ccfd60b1461029e57806340c10f19146102a657806344a0d68a146102b957600080fd5b8062fdd58e1461016a57806301ffc9a71461019d57806302fe5305146101cd5780630e89341c146101ef57806313faede61461021c57806318160ddd14610232575b600080fd5b34801561017657600080fd5b5061018a6101853660046118d0565b61049e565b6040519081526020015b60405180910390f35b3480156101a957600080fd5b506101bd6101b83660046119cb565b610535565b6040519015158152602001610194565b3480156101d957600080fd5b506101ed6101e8366004611a05565b610587565b005b3480156101fb57600080fd5b5061020f61020a366004611a56565b6105bd565b6040516101949190611bdb565b34801561022857600080fd5b5061018a60055481565b34801561023e57600080fd5b5061018a60075481565b34801561025457600080fd5b506101ed610263366004611a56565b610651565b34801561027457600080fd5b5061018a60085481565b34801561028a57600080fd5b506101ed610299366004611785565b610680565b6101ed610717565b6101ed6102b43660046118d0565b6107b2565b3480156102c557600080fd5b506101ed6102d4366004611a56565b6109df565b3480156102e557600080fd5b506102f96102f43660046118fa565b610a0e565b6040516101949190611b9a565b34801561031257600080fd5b50600b546101bd9060ff1681565b34801561032c57600080fd5b506101ed610b38565b34801561034157600080fd5b506101ed610350366004611a56565b610b6e565b34801561036157600080fd5b506101ed610b9d565b34801561037657600080fd5b506003546040516001600160a01b039091168152602001610194565b34801561039e57600080fd5b506101ed6103ad366004611894565b610bdb565b3480156103be57600080fd5b506101ed6103cd3660046118fa565b610bea565b3480156103de57600080fd5b5061018a60065481565b3480156103f457600080fd5b506101bd610403366004611752565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b34801561043d57600080fd5b506101ed61044c36600461182f565b610c9d565b34801561045d57600080fd5b506101ed61046c366004611737565b610d24565b34801561047d57600080fd5b5061018a61048c366004611737565b600a6020526000908152604090205481565b60006001600160a01b03831661050f5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061056657506001600160e01b031982166303a24d0760e21b145b8061058157506301ffc9a760e01b6001600160e01b03198316145b92915050565b6003546001600160a01b031633146105b15760405162461bcd60e51b815260040161050690611cc5565b6105ba81610dbc565b50565b6060600280546105cc90611d6c565b80601f01602080910402602001604051908101604052809291908181526020018280546105f890611d6c565b80156106455780601f1061061a57610100808354040283529160200191610645565b820191906000526020600020905b81548152906001019060200180831161062857829003601f168201915b50505050509050919050565b6003546001600160a01b0316331461067b5760405162461bcd60e51b815260040161050690611cc5565b600655565b6001600160a01b03851633148061069c575061069c8533610403565b6107035760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610506565b6107108585858585610dcf565b5050505050565b6003546001600160a01b031633146107415760405162461bcd60e51b815260040161050690611cc5565b60006107556003546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d806000811461079f576040519150601f19603f3d011682016040523d82523d6000602084013e6107a4565b606091505b50509050806105ba57600080fd5b600b5460ff16156107fa5760405162461bcd60e51b815260206004820152601260248201527126b4b73a34b7339034b9902830bab9b2b21760711b6044820152606401610506565b6008548111156108655760405162461bcd60e51b815260206004820152603060248201527f4f6e6c79203130204469654861726444696e6f732061726520416c6c6f77656460448201526f102832b9102a3930b739b0b1ba34b7b760811b6064820152608401610506565b600654816004546108769190611d1e565b11156108c45760405162461bcd60e51b815260206004820152601d60248201527f44696e6f737068657265206973206174204d61782043617061636974790000006044820152606401610506565b6001600160a01b0382166000908152600a602052604090205481111561094657806005546108f29190611d36565b3410156109415760405162461bcd60e51b815260206004820152601960248201527f5568204f68204e6f7420456e6f756768204554482050616964000000000000006044820152606401610506565b610974565b6001600160a01b0382166000908152600a60205260408120805483929061096e908490611d55565b90915550505b60005b818110156109da576004805490600061098f83611dd4565b91905055506109b283600454600160405180602001604052806000815250610fac565b600780549060006109c283611dd4565b919050555080806109d290611dd4565b915050610977565b505050565b6003546001600160a01b03163314610a095760405162461bcd60e51b815260040161050690611cc5565b600555565b60608151835114610a735760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610506565b6000835167ffffffffffffffff811115610a8f57610a8f611e1b565b604051908082528060200260200182016040528015610ab8578160200160208202803683370190505b50905060005b8451811015610b3057610b03858281518110610adc57610adc611e05565b6020026020010151858381518110610af657610af6611e05565b602002602001015161049e565b828281518110610b1557610b15611e05565b6020908102919091010152610b2981611dd4565b9050610abe565b509392505050565b6003546001600160a01b03163314610b625760405162461bcd60e51b815260040161050690611cc5565b610b6c60006110b6565b565b6003546001600160a01b03163314610b985760405162461bcd60e51b815260040161050690611cc5565b600855565b6003546001600160a01b03163314610bc75760405162461bcd60e51b815260040161050690611cc5565b600b805460ff19811660ff90911615179055565b610be6338383611108565b5050565b6003546001600160a01b03163314610c145760405162461bcd60e51b815260040161050690611cc5565b8051825114610c2257600080fd5b60005b82518110156109da57818181518110610c4057610c40611e05565b6020026020010151600a6000858481518110610c5e57610c5e611e05565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080610c9590611dd4565b915050610c25565b6001600160a01b038516331480610cb95750610cb98533610403565b610d175760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610506565b61071085858585856111e9565b6003546001600160a01b03163314610d4e5760405162461bcd60e51b815260040161050690611cc5565b6001600160a01b038116610db35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610506565b6105ba816110b6565b8051610be6906002906020840190611586565b8151835114610e315760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610506565b6001600160a01b038416610e575760405162461bcd60e51b815260040161050690611c36565b3360005b8451811015610f3e576000858281518110610e7857610e78611e05565b602002602001015190506000858381518110610e9657610e96611e05565b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015610ee65760405162461bcd60e51b815260040161050690611c7b565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610f23908490611d1e565b9250508190555050505080610f3790611dd4565b9050610e5b565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610f8e929190611bad565b60405180910390a4610fa4818787878787611306565b505050505050565b6001600160a01b03841661100c5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610506565b336110268160008761101d88611471565b61071088611471565b6000848152602081815260408083206001600160a01b038916845290915281208054859290611056908490611d1e565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610710816000878787876114bc565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316141561117c5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610506565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b03841661120f5760405162461bcd60e51b815260040161050690611c36565b3361121f81878761101d88611471565b6000848152602081815260408083206001600160a01b038a168452909152902054838110156112605760405162461bcd60e51b815260040161050690611c7b565b6000858152602081815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061129d908490611d1e565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46112fd8288888888886114bc565b50505050505050565b6001600160a01b0384163b15610fa45760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061134a9089908990889088908890600401611af7565b602060405180830381600087803b15801561136457600080fd5b505af1925050508015611394575060408051601f3d908101601f19168201909252611391918101906119e8565b60015b611441576113a0611e31565b806308c379a014156113da57506113b5611e4d565b806113c057506113dc565b8060405162461bcd60e51b81526004016105069190611bdb565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610506565b6001600160e01b0319811663bc197c8160e01b146112fd5760405162461bcd60e51b815260040161050690611bee565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106114ab576114ab611e05565b602090810291909101015292915050565b6001600160a01b0384163b15610fa45760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906115009089908990889088908890600401611b55565b602060405180830381600087803b15801561151a57600080fd5b505af192505050801561154a575060408051601f3d908101601f19168201909252611547918101906119e8565b60015b611556576113a0611e31565b6001600160e01b0319811663f23a6e6160e01b146112fd5760405162461bcd60e51b815260040161050690611bee565b82805461159290611d6c565b90600052602060002090601f0160209004810192826115b457600085556115fa565b82601f106115cd57805160ff19168380011785556115fa565b828001600101855582156115fa579182015b828111156115fa5782518255916020019190600101906115df565b5061160692915061160a565b5090565b5b80821115611606576000815560010161160b565b600067ffffffffffffffff83111561163957611639611e1b565b604051611650601f8501601f191660200182611da7565b80915083815284848401111561166557600080fd5b83836020830137600060208583010152509392505050565b80356001600160a01b038116811461169457600080fd5b919050565b600082601f8301126116aa57600080fd5b813560206116b782611cfa565b6040516116c48282611da7565b8381528281019150858301600585901b870184018810156116e457600080fd5b60005b85811015611703578135845292840192908401906001016116e7565b5090979650505050505050565b600082601f83011261172157600080fd5b6117308383356020850161161f565b9392505050565b60006020828403121561174957600080fd5b6117308261167d565b6000806040838503121561176557600080fd5b61176e8361167d565b915061177c6020840161167d565b90509250929050565b600080600080600060a0868803121561179d57600080fd5b6117a68661167d565b94506117b46020870161167d565b9350604086013567ffffffffffffffff808211156117d157600080fd5b6117dd89838a01611699565b945060608801359150808211156117f357600080fd5b6117ff89838a01611699565b9350608088013591508082111561181557600080fd5b5061182288828901611710565b9150509295509295909350565b600080600080600060a0868803121561184757600080fd5b6118508661167d565b945061185e6020870161167d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561188857600080fd5b61182288828901611710565b600080604083850312156118a757600080fd5b6118b08361167d565b9150602083013580151581146118c557600080fd5b809150509250929050565b600080604083850312156118e357600080fd5b6118ec8361167d565b946020939093013593505050565b6000806040838503121561190d57600080fd5b823567ffffffffffffffff8082111561192557600080fd5b818501915085601f83011261193957600080fd5b8135602061194682611cfa565b6040516119538282611da7565b8381528281019150858301600585901b870184018b101561197357600080fd5b600096505b8487101561199d576119898161167d565b835260019690960195918301918301611978565b50965050860135925050808211156119b457600080fd5b506119c185828601611699565b9150509250929050565b6000602082840312156119dd57600080fd5b813561173081611ed7565b6000602082840312156119fa57600080fd5b815161173081611ed7565b600060208284031215611a1757600080fd5b813567ffffffffffffffff811115611a2e57600080fd5b8201601f81018413611a3f57600080fd5b611a4e8482356020840161161f565b949350505050565b600060208284031215611a6857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611a9f57815187529582019590820190600101611a83565b509495945050505050565b6000815180845260005b81811015611ad057602081850181015186830182015201611ab4565b81811115611ae2576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0386811682528516602082015260a060408201819052600090611b2390830186611a6f565b8281036060840152611b358186611a6f565b90508281036080840152611b498185611aaa565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611b8f90830184611aaa565b979650505050505050565b6020815260006117306020830184611a6f565b604081526000611bc06040830185611a6f565b8281036020840152611bd28185611a6f565b95945050505050565b6020815260006117306020830184611aaa565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600067ffffffffffffffff821115611d1457611d14611e1b565b5060051b60200190565b60008219821115611d3157611d31611def565b500190565b6000816000190483118215151615611d5057611d50611def565b500290565b600082821015611d6757611d67611def565b500390565b600181811c90821680611d8057607f821691505b60208210811415611da157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff81118282101715611dcd57611dcd611e1b565b6040525050565b6000600019821415611de857611de8611def565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d1115611e4a5760046000803e5060005160e01c5b90565b600060443d1015611e5b5790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715611e8b57505050505090565b8285019150815181811115611ea35750505050505090565b843d8701016020828501011115611ebd5750505050505090565b611ecc60208286010187611da7565b509095945050505050565b6001600160e01b0319811681146105ba57600080fdfea2646970667358221220ba8daf6f72585526e095037758e12aedd6859606718838749dffeaefd6ccaff764736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _baseURI (string):
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
37080:3098:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20847:231;;;;;;;;;;-1:-1:-1;20847:231:0;;;;;:::i;:::-;;:::i;:::-;;;17415:25:1;;;17403:2;17388:18;20847:231:0;;;;;;;;19870:310;;;;;;;;;;-1:-1:-1;19870:310:0;;;;;:::i;:::-;;:::i;:::-;;;10255:14:1;;10248:22;10230:41;;10218:2;10203:18;19870:310:0;10090:187:1;39568:91:0;;;;;;;;;;-1:-1:-1;39568:91:0;;;;;:::i;:::-;;:::i;:::-;;20591:105;;;;;;;;;;-1:-1:-1;20591:105:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;37205:31::-;;;;;;;;;;;;;;;;37280:30;;;;;;;;;;;;;;;;39380:106;;;;;;;;;;-1:-1:-1;39380:106:0;;;;;:::i;:::-;;:::i;37317:33::-;;;;;;;;;;;;;;;;22786:442;;;;;;;;;;-1:-1:-1;22786:442:0;;;;;:::i;:::-;;:::i;38632:154::-;;;:::i;37868:752::-;;;;;;:::i;:::-;;:::i;38893:86::-;;;;;;;;;;-1:-1:-1;38893:86:0;;;;;:::i;:::-;;:::i;21244:524::-;;;;;;;;;;-1:-1:-1;21244:524:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;37449:18::-;;;;;;;;;;-1:-1:-1;37449:18:0;;;;;;;;36063:103;;;;;;;;;;;;;:::i;39125:122::-;;;;;;;;;;-1:-1:-1;39125:122:0;;;;;:::i;:::-;;:::i;39722:69::-;;;;;;;;;;;;;:::i;35412:87::-;;;;;;;;;;-1:-1:-1;35485:6:0;;35412:87;;-1:-1:-1;;;;;35485:6:0;;;7896:51:1;;7884:2;7869:18;35412:87:0;7750:203:1;21841:155:0;;;;;;;;;;-1:-1:-1;21841:155:0;;;;;:::i;:::-;;:::i;39900:275::-;;;;;;;;;;-1:-1:-1;39900:275:0;;;;;:::i;:::-;;:::i;37243:30::-;;;;;;;;;;;;;;;;22068:168;;;;;;;;;;-1:-1:-1;22068:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;22191:27:0;;;22167:4;22191:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;22068:168;22308:401;;;;;;;;;;-1:-1:-1;22308:401:0;;;;;:::i;:::-;;:::i;36321:201::-;;;;;;;;;;-1:-1:-1;36321:201:0;;;;;:::i;:::-;;:::i;37399:43::-;;;;;;;;;;-1:-1:-1;37399:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;20847:231;20933:7;-1:-1:-1;;;;;20961:21:0;;20953:77;;;;-1:-1:-1;;;20953:77:0;;11538:2:1;20953:77:0;;;11520:21:1;11577:2;11557:18;;;11550:30;11616:34;11596:18;;;11589:62;-1:-1:-1;;;11667:18:1;;;11660:41;11718:19;;20953:77:0;;;;;;;;;-1:-1:-1;21048:9:0;:13;;;;;;;;;;;-1:-1:-1;;;;;21048:22:0;;;;;;;;;;;;20847:231::o;19870:310::-;19972:4;-1:-1:-1;;;;;;20009:41:0;;-1:-1:-1;;;20009:41:0;;:110;;-1:-1:-1;;;;;;;20067:52:0;;-1:-1:-1;;;20067:52:0;20009:110;:163;;;-1:-1:-1;;;;;;;;;;10394:40:0;;;20136:36;19989:183;19870:310;-1:-1:-1;;19870:310:0:o;39568:91::-;35485:6;;-1:-1:-1;;;;;35485:6:0;18659:10;35632:23;35624:68;;;;-1:-1:-1;;;35624:68:0;;;;;;;:::i;:::-;39635:16:::1;39643:7;39635;:16::i;:::-;39568:91:::0;:::o;20591:105::-;20651:13;20684:4;20677:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20591:105;;;:::o;39380:106::-;35485:6;;-1:-1:-1;;;;;35485:6:0;18659:10;35632:23;35624:68;;;;-1:-1:-1;;;35624:68:0;;;;;;;:::i;:::-;39453:9:::1;:25:::0;39380:106::o;22786:442::-;-1:-1:-1;;;;;23019:20:0;;18659:10;23019:20;;:60;;-1:-1:-1;23043:36:0;23060:4;18659:10;22068:168;:::i;23043:36::-;22997:160;;;;-1:-1:-1;;;22997:160:0;;13944:2:1;22997:160:0;;;13926:21:1;13983:2;13963:18;;;13956:30;14022:34;14002:18;;;13995:62;-1:-1:-1;;;14073:18:1;;;14066:48;14131:19;;22997:160:0;13742:414:1;22997:160:0;23168:52;23191:4;23197:2;23201:3;23206:7;23215:4;23168:22;:52::i;:::-;22786:442;;;;;:::o;38632:154::-;35485:6;;-1:-1:-1;;;;;35485:6:0;18659:10;35632:23;35624:68;;;;-1:-1:-1;;;35624:68:0;;;;;;;:::i;:::-;38688:7:::1;38709;35485:6:::0;;-1:-1:-1;;;;;35485:6:0;;35412:87;38709:7:::1;-1:-1:-1::0;;;;;38701:21:0::1;38730;38701:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38687:69;;;38775:2;38767:11;;;::::0;::::1;37868:752:::0;37951:6;;;;37950:7;37942:38;;;;-1:-1:-1;;;37942:38:0;;15135:2:1;37942:38:0;;;15117:21:1;15174:2;15154:18;;;15147:30;-1:-1:-1;;;15193:18:1;;;15186:48;15251:18;;37942:38:0;14933:342:1;37942:38:0;38014:13;;37999:11;:28;;37991:89;;;;-1:-1:-1;;;37991:89:0;;13121:2:1;37991:89:0;;;13103:21:1;13160:2;13140:18;;;13133:30;13199:34;13179:18;;;13172:62;-1:-1:-1;;;13250:18:1;;;13243:46;13306:19;;37991:89:0;12919:412:1;37991:89:0;38138:9;;38123:11;38113:7;;:21;;;;:::i;:::-;:34;;38091:113;;;;-1:-1:-1;;;38091:113:0;;16302:2:1;38091:113:0;;;16284:21:1;16341:2;16321:18;;;16314:30;16380:31;16360:18;;;16353:59;16429:18;;38091:113:0;16100:353:1;38091:113:0;-1:-1:-1;;;;;38228:13:0;;;;;;:8;:13;;;;;;:27;-1:-1:-1;38225:220:0;;;38316:11;38309:4;;:18;;;;:::i;:::-;38296:9;:31;;38270:118;;;;-1:-1:-1;;;38270:118:0;;11950:2:1;38270:118:0;;;11932:21:1;11989:2;11969:18;;;11962:30;12028:27;12008:18;;;12001:55;12073:18;;38270:118:0;11748:349:1;38270:118:0;38225:220;;;-1:-1:-1;;;;;38417:13:0;;;;;;:8;:13;;;;;:28;;38434:11;;38417:13;:28;;38434:11;;38417:28;:::i;:::-;;;;-1:-1:-1;;38225:220:0;38471:9;38466:147;38490:11;38486:1;:15;38466:147;;;38523:7;:9;;;:7;:9;;;:::i;:::-;;;;;;38547:26;38553:3;38558:7;;38567:1;38547:26;;;;;;;;;;;;:5;:26::i;:::-;38588:11;:13;;;:11;:13;;;:::i;:::-;;;;;;38503:3;;;;;:::i;:::-;;;;38466:147;;;;37868:752;;:::o;38893:86::-;35485:6;;-1:-1:-1;;;;;35485:6:0;18659:10;35632:23;35624:68;;;;-1:-1:-1;;;35624:68:0;;;;;;;:::i;:::-;38956:4:::1;:15:::0;38893:86::o;21244:524::-;21400:16;21461:3;:10;21442:8;:15;:29;21434:83;;;;-1:-1:-1;;;21434:83:0;;15892:2:1;21434:83:0;;;15874:21:1;15931:2;15911:18;;;15904:30;15970:34;15950:18;;;15943:62;-1:-1:-1;;;16021:18:1;;;16014:39;16070:19;;21434:83:0;15690:405:1;21434:83:0;21530:30;21577:8;:15;21563:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21563:30:0;;21530:63;;21611:9;21606:122;21630:8;:15;21626:1;:19;21606:122;;;21686:30;21696:8;21705:1;21696:11;;;;;;;;:::i;:::-;;;;;;;21709:3;21713:1;21709:6;;;;;;;;:::i;:::-;;;;;;;21686:9;:30::i;:::-;21667:13;21681:1;21667:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;21647:3;;;:::i;:::-;;;21606:122;;;-1:-1:-1;21747:13:0;21244:524;-1:-1:-1;;;21244:524:0:o;36063:103::-;35485:6;;-1:-1:-1;;;;;35485:6:0;18659:10;35632:23;35624:68;;;;-1:-1:-1;;;35624:68:0;;;;;;;:::i;:::-;36128:30:::1;36155:1;36128:18;:30::i;:::-;36063:103::o:0;39125:122::-;35485:6;;-1:-1:-1;;;;;35485:6:0;18659:10;35632:23;35624:68;;;;-1:-1:-1;;;35624:68:0;;;;;;;:::i;:::-;39206:13:::1;:33:::0;39125:122::o;39722:69::-;35485:6;;-1:-1:-1;;;;;35485:6:0;18659:10;35632:23;35624:68;;;;-1:-1:-1;;;35624:68:0;;;;;;;:::i;:::-;39777:6:::1;::::0;;-1:-1:-1;;39767:16:0;::::1;39777:6;::::0;;::::1;39776:7;39767:16;::::0;;39722:69::o;21841:155::-;21936:52;18659:10;21969:8;21979;21936:18;:52::i;:::-;21841:155;;:::o;39900:275::-;35485:6;;-1:-1:-1;;;;;35485:6:0;18659:10;35632:23;35624:68;;;;-1:-1:-1;;;35624:68:0;;;;;;;:::i;:::-;40054:7:::1;:14;40038:5;:12;:30;40030:39;;;::::0;::::1;;40085:9;40080:87;40104:5;:12;40100:1;:16;40080:87;;;40157:7;40165:1;40157:10;;;;;;;;:::i;:::-;;;;;;;40136:8;:18;40145:5;40151:1;40145:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;40136:18:0::1;-1:-1:-1::0;;;;;40136:18:0::1;;;;;;;;;;;;:31;;;;40118:3;;;;;:::i;:::-;;;;40080:87;;22308:401:::0;-1:-1:-1;;;;;22516:20:0;;18659:10;22516:20;;:60;;-1:-1:-1;22540:36:0;22557:4;18659:10;22068:168;:::i;22540:36::-;22494:151;;;;-1:-1:-1;;;22494:151:0;;12711:2:1;22494:151:0;;;12693:21:1;12750:2;12730:18;;;12723:30;12789:34;12769:18;;;12762:62;-1:-1:-1;;;12840:18:1;;;12833:39;12889:19;;22494:151:0;12509:405:1;22494:151:0;22656:45;22674:4;22680:2;22684;22688:6;22696:4;22656:17;:45::i;36321:201::-;35485:6;;-1:-1:-1;;;;;35485:6:0;18659:10;35632:23;35624:68;;;;-1:-1:-1;;;35624:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36410:22:0;::::1;36402:73;;;::::0;-1:-1:-1;;;36402:73:0;;12304:2:1;36402:73:0::1;::::0;::::1;12286:21:1::0;12343:2;12323:18;;;12316:30;12382:34;12362:18;;;12355:62;-1:-1:-1;;;12433:18:1;;;12426:36;12479:19;;36402:73:0::1;12102:402:1::0;36402:73:0::1;36486:28;36505:8;36486:18;:28::i;26788:88::-:0;26855:13;;;;:4;;:13;;;;;:::i;24870:1074::-;25097:7;:14;25083:3;:10;:28;25075:81;;;;-1:-1:-1;;;25075:81:0;;16660:2:1;25075:81:0;;;16642:21:1;16699:2;16679:18;;;16672:30;16738:34;16718:18;;;16711:62;-1:-1:-1;;;16789:18:1;;;16782:38;16837:19;;25075:81:0;16458:404:1;25075:81:0;-1:-1:-1;;;;;25175:16:0;;25167:66;;;;-1:-1:-1;;;25167:66:0;;;;;;;:::i;:::-;18659:10;25246:16;25363:421;25387:3;:10;25383:1;:14;25363:421;;;25419:10;25432:3;25436:1;25432:6;;;;;;;;:::i;:::-;;;;;;;25419:19;;25453:14;25470:7;25478:1;25470:10;;;;;;;;:::i;:::-;;;;;;;;;;;;25497:19;25519:13;;;;;;;;;;-1:-1:-1;;;;;25519:19:0;;;;;;;;;;;;25470:10;;-1:-1:-1;25561:21:0;;;;25553:76;;;;-1:-1:-1;;;25553:76:0;;;;;;;:::i;:::-;25673:9;:13;;;;;;;;;;;-1:-1:-1;;;;;25673:19:0;;;;;;;;;;25695:20;;;25673:42;;25745:17;;;;;;;:27;;25695:20;;25673:9;25745:27;;25695:20;;25745:27;:::i;:::-;;;;;;;;25404:380;;;25399:3;;;;:::i;:::-;;;25363:421;;;;25831:2;-1:-1:-1;;;;;25801:47:0;25825:4;-1:-1:-1;;;;;25801:47:0;25815:8;-1:-1:-1;;;;;25801:47:0;;25835:3;25840:7;25801:47;;;;;;;:::i;:::-;;;;;;;;25861:75;25897:8;25907:4;25913:2;25917:3;25922:7;25931:4;25861:35;:75::i;:::-;25064:880;24870:1074;;;;;:::o;27262:569::-;-1:-1:-1;;;;;27415:16:0;;27407:62;;;;-1:-1:-1;;;27407:62:0;;17069:2:1;27407:62:0;;;17051:21:1;17108:2;17088:18;;;17081:30;17147:34;17127:18;;;17120:62;-1:-1:-1;;;17198:18:1;;;17191:31;17239:19;;27407:62:0;16867:397:1;27407:62:0;18659:10;27526:102;18659:10;27482:16;27569:2;27573:21;27591:2;27573:17;:21::i;:::-;27596:25;27614:6;27596:17;:25::i;27526:102::-;27641:9;:13;;;;;;;;;;;-1:-1:-1;;;;;27641:17:0;;;;;;;;;:27;;27662:6;;27641:9;:27;;27662:6;;27641:27;:::i;:::-;;;;-1:-1:-1;;27684:52:0;;;17625:25:1;;;17681:2;17666:18;;17659:34;;;-1:-1:-1;;;;;27684:52:0;;;;27717:1;;27684:52;;;;;;17598:18:1;27684:52:0;;;;;;;27749:74;27780:8;27798:1;27802:2;27806;27810:6;27818:4;27749:30;:74::i;36682:191::-;36775:6;;;-1:-1:-1;;;;;36792:17:0;;;-1:-1:-1;;;;;;36792:17:0;;;;;;;36825:40;;36775:6;;;36792:17;36775:6;;36825:40;;36756:16;;36825:40;36745:128;36682:191;:::o;31056:331::-;31211:8;-1:-1:-1;;;;;31202:17:0;:5;-1:-1:-1;;;;;31202:17:0;;;31194:71;;;;-1:-1:-1;;;31194:71:0;;15482:2:1;31194:71:0;;;15464:21:1;15521:2;15501:18;;;15494:30;15560:34;15540:18;;;15533:62;-1:-1:-1;;;15611:18:1;;;15604:39;15660:19;;31194:71:0;15280:405:1;31194:71:0;-1:-1:-1;;;;;31276:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;31276:46:0;;;;;;;;;;31338:41;;10230::1;;;31338::0;;10203:18:1;31338:41:0;;;;;;;31056:331;;;:::o;23692:820::-;-1:-1:-1;;;;;23880:16:0;;23872:66;;;;-1:-1:-1;;;23872:66:0;;;;;;;:::i;:::-;18659:10;23995:96;18659:10;24026:4;24032:2;24036:21;24054:2;24036:17;:21::i;23995:96::-;24104:19;24126:13;;;;;;;;;;;-1:-1:-1;;;;;24126:19:0;;;;;;;;;;24164:21;;;;24156:76;;;;-1:-1:-1;;;24156:76:0;;;;;;;:::i;:::-;24268:9;:13;;;;;;;;;;;-1:-1:-1;;;;;24268:19:0;;;;;;;;;;24290:20;;;24268:42;;24332:17;;;;;;;:27;;24290:20;;24268:9;24332:27;;24290:20;;24332:27;:::i;:::-;;;;-1:-1:-1;;24377:46:0;;;17625:25:1;;;17681:2;17666:18;;17659:34;;;-1:-1:-1;;;;;24377:46:0;;;;;;;;;;;;;;17598:18:1;24377:46:0;;;;;;;24436:68;24467:8;24477:4;24483:2;24487;24491:6;24499:4;24436:30;:68::i;:::-;23861:651;;23692:820;;;;;:::o;33324:813::-;-1:-1:-1;;;;;33564:13:0;;1528:19;:23;33560:570;;33600:79;;-1:-1:-1;;;33600:79:0;;-1:-1:-1;;;;;33600:43:0;;;;;:79;;33644:8;;33654:4;;33660:3;;33665:7;;33674:4;;33600:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33600:79:0;;;;;;;;-1:-1:-1;;33600:79:0;;;;;;;;;;;;:::i;:::-;;;33596:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;33992:6;33985:14;;-1:-1:-1;;;33985:14:0;;;;;;;;:::i;33596:523::-;;;34041:62;;-1:-1:-1;;;34041:62:0;;10708:2:1;34041:62:0;;;10690:21:1;10747:2;10727:18;;;10720:30;10786:34;10766:18;;;10759:62;-1:-1:-1;;;10837:18:1;;;10830:50;10897:19;;34041:62:0;10506:416:1;33596:523:0;-1:-1:-1;;;;;;33761:60:0;;-1:-1:-1;;;33761:60:0;33757:159;;33846:50;;-1:-1:-1;;;33846:50:0;;;;;;;:::i;34145:198::-;34265:16;;;34279:1;34265:16;;;;;;;;;34211;;34240:22;;34265:16;;;;;;;;;;;;-1:-1:-1;34265:16:0;34240:41;;34303:7;34292:5;34298:1;34292:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;34330:5;34145:198;-1:-1:-1;;34145:198:0:o;32572:744::-;-1:-1:-1;;;;;32787:13:0;;1528:19;:23;32783:526;;32823:72;;-1:-1:-1;;;32823:72:0;;-1:-1:-1;;;;;32823:38:0;;;;;:72;;32862:8;;32872:4;;32878:2;;32882:6;;32890:4;;32823:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32823:72:0;;;;;;;;-1:-1:-1;;32823:72:0;;;;;;;;;;;;:::i;:::-;;;32819:479;;;;:::i;:::-;-1:-1:-1;;;;;;32945:55:0;;-1:-1:-1;;;32945:55:0;32941:154;;33025:50;;-1:-1:-1;;;33025:50:0;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:468:1;78:5;112:18;104:6;101:30;98:56;;;134:18;;:::i;:::-;183:2;177:9;195:69;252:2;231:15;;-1:-1:-1;;227:29:1;258:4;223:40;177:9;195:69;:::i;:::-;282:6;273:15;;312:6;304;297:22;352:3;343:6;338:3;334:16;331:25;328:45;;;369:1;366;359:12;328:45;419:6;414:3;407:4;399:6;395:17;382:44;474:1;467:4;458:6;450;446:19;442:30;435:41;;14:468;;;;;:::o;487:173::-;555:20;;-1:-1:-1;;;;;604:31:1;;594:42;;584:70;;650:1;647;640:12;584:70;487:173;;;:::o;665:735::-;719:5;772:3;765:4;757:6;753:17;749:27;739:55;;790:1;787;780:12;739:55;826:6;813:20;852:4;875:43;915:2;875:43;:::i;:::-;947:2;941:9;959:31;987:2;979:6;959:31;:::i;:::-;1025:18;;;1059:15;;;;-1:-1:-1;1094:15:1;;;1144:1;1140:10;;;1128:23;;1124:32;;1121:41;-1:-1:-1;1118:61:1;;;1175:1;1172;1165:12;1118:61;1197:1;1207:163;1221:2;1218:1;1215:9;1207:163;;;1278:17;;1266:30;;1316:12;;;;1348;;;;1239:1;1232:9;1207:163;;;-1:-1:-1;1388:6:1;;665:735;-1:-1:-1;;;;;;;665:735:1:o;1405:220::-;1447:5;1500:3;1493:4;1485:6;1481:17;1477:27;1467:55;;1518:1;1515;1508:12;1467:55;1540:79;1615:3;1606:6;1593:20;1586:4;1578:6;1574:17;1540:79;:::i;:::-;1531:88;1405:220;-1:-1:-1;;;1405:220:1:o;1630:186::-;1689:6;1742:2;1730:9;1721:7;1717:23;1713:32;1710:52;;;1758:1;1755;1748:12;1710:52;1781:29;1800:9;1781:29;:::i;1821:260::-;1889:6;1897;1950:2;1938:9;1929:7;1925:23;1921:32;1918:52;;;1966:1;1963;1956:12;1918:52;1989:29;2008:9;1989:29;:::i;:::-;1979:39;;2037:38;2071:2;2060:9;2056:18;2037:38;:::i;:::-;2027:48;;1821:260;;;;;:::o;2086:943::-;2240:6;2248;2256;2264;2272;2325:3;2313:9;2304:7;2300:23;2296:33;2293:53;;;2342:1;2339;2332:12;2293:53;2365:29;2384:9;2365:29;:::i;:::-;2355:39;;2413:38;2447:2;2436:9;2432:18;2413:38;:::i;:::-;2403:48;;2502:2;2491:9;2487:18;2474:32;2525:18;2566:2;2558:6;2555:14;2552:34;;;2582:1;2579;2572:12;2552:34;2605:61;2658:7;2649:6;2638:9;2634:22;2605:61;:::i;:::-;2595:71;;2719:2;2708:9;2704:18;2691:32;2675:48;;2748:2;2738:8;2735:16;2732:36;;;2764:1;2761;2754:12;2732:36;2787:63;2842:7;2831:8;2820:9;2816:24;2787:63;:::i;:::-;2777:73;;2903:3;2892:9;2888:19;2875:33;2859:49;;2933:2;2923:8;2920:16;2917:36;;;2949:1;2946;2939:12;2917:36;;2972:51;3015:7;3004:8;2993:9;2989:24;2972:51;:::i;:::-;2962:61;;;2086:943;;;;;;;;:::o;3034:606::-;3138:6;3146;3154;3162;3170;3223:3;3211:9;3202:7;3198:23;3194:33;3191:53;;;3240:1;3237;3230:12;3191:53;3263:29;3282:9;3263:29;:::i;:::-;3253:39;;3311:38;3345:2;3334:9;3330:18;3311:38;:::i;:::-;3301:48;;3396:2;3385:9;3381:18;3368:32;3358:42;;3447:2;3436:9;3432:18;3419:32;3409:42;;3502:3;3491:9;3487:19;3474:33;3530:18;3522:6;3519:30;3516:50;;;3562:1;3559;3552:12;3516:50;3585:49;3626:7;3617:6;3606:9;3602:22;3585:49;:::i;3645:347::-;3710:6;3718;3771:2;3759:9;3750:7;3746:23;3742:32;3739:52;;;3787:1;3784;3777:12;3739:52;3810:29;3829:9;3810:29;:::i;:::-;3800:39;;3889:2;3878:9;3874:18;3861:32;3936:5;3929:13;3922:21;3915:5;3912:32;3902:60;;3958:1;3955;3948:12;3902:60;3981:5;3971:15;;;3645:347;;;;;:::o;3997:254::-;4065:6;4073;4126:2;4114:9;4105:7;4101:23;4097:32;4094:52;;;4142:1;4139;4132:12;4094:52;4165:29;4184:9;4165:29;:::i;:::-;4155:39;4241:2;4226:18;;;;4213:32;;-1:-1:-1;;;3997:254:1:o;4256:1219::-;4374:6;4382;4435:2;4423:9;4414:7;4410:23;4406:32;4403:52;;;4451:1;4448;4441:12;4403:52;4491:9;4478:23;4520:18;4561:2;4553:6;4550:14;4547:34;;;4577:1;4574;4567:12;4547:34;4615:6;4604:9;4600:22;4590:32;;4660:7;4653:4;4649:2;4645:13;4641:27;4631:55;;4682:1;4679;4672:12;4631:55;4718:2;4705:16;4740:4;4763:43;4803:2;4763:43;:::i;:::-;4835:2;4829:9;4847:31;4875:2;4867:6;4847:31;:::i;:::-;4913:18;;;4947:15;;;;-1:-1:-1;4982:11:1;;;5024:1;5020:10;;;5012:19;;5008:28;;5005:41;-1:-1:-1;5002:61:1;;;5059:1;5056;5049:12;5002:61;5081:1;5072:10;;5091:169;5105:2;5102:1;5099:9;5091:169;;;5162:23;5181:3;5162:23;:::i;:::-;5150:36;;5123:1;5116:9;;;;;5206:12;;;;5238;;5091:169;;;-1:-1:-1;5279:6:1;-1:-1:-1;;5323:18:1;;5310:32;;-1:-1:-1;;5354:16:1;;;5351:36;;;5383:1;5380;5373:12;5351:36;;5406:63;5461:7;5450:8;5439:9;5435:24;5406:63;:::i;:::-;5396:73;;;4256:1219;;;;;:::o;5480:245::-;5538:6;5591:2;5579:9;5570:7;5566:23;5562:32;5559:52;;;5607:1;5604;5597:12;5559:52;5646:9;5633:23;5665:30;5689:5;5665:30;:::i;5730:249::-;5799:6;5852:2;5840:9;5831:7;5827:23;5823:32;5820:52;;;5868:1;5865;5858:12;5820:52;5900:9;5894:16;5919:30;5943:5;5919:30;:::i;5984:450::-;6053:6;6106:2;6094:9;6085:7;6081:23;6077:32;6074:52;;;6122:1;6119;6112:12;6074:52;6162:9;6149:23;6195:18;6187:6;6184:30;6181:50;;;6227:1;6224;6217:12;6181:50;6250:22;;6303:4;6295:13;;6291:27;-1:-1:-1;6281:55:1;;6332:1;6329;6322:12;6281:55;6355:73;6420:7;6415:2;6402:16;6397:2;6393;6389:11;6355:73;:::i;:::-;6345:83;5984:450;-1:-1:-1;;;;5984:450:1:o;6439:180::-;6498:6;6551:2;6539:9;6530:7;6526:23;6522:32;6519:52;;;6567:1;6564;6557:12;6519:52;-1:-1:-1;6590:23:1;;6439:180;-1:-1:-1;6439:180:1:o;6624:435::-;6677:3;6715:5;6709:12;6742:6;6737:3;6730:19;6768:4;6797:2;6792:3;6788:12;6781:19;;6834:2;6827:5;6823:14;6855:1;6865:169;6879:6;6876:1;6873:13;6865:169;;;6940:13;;6928:26;;6974:12;;;;7009:15;;;;6901:1;6894:9;6865:169;;;-1:-1:-1;7050:3:1;;6624:435;-1:-1:-1;;;;;6624:435:1:o;7064:471::-;7105:3;7143:5;7137:12;7170:6;7165:3;7158:19;7195:1;7205:162;7219:6;7216:1;7213:13;7205:162;;;7281:4;7337:13;;;7333:22;;7327:29;7309:11;;;7305:20;;7298:59;7234:12;7205:162;;;7385:6;7382:1;7379:13;7376:87;;;7451:1;7444:4;7435:6;7430:3;7426:16;7422:27;7415:38;7376:87;-1:-1:-1;7517:2:1;7496:15;-1:-1:-1;;7492:29:1;7483:39;;;;7524:4;7479:50;;7064:471;-1:-1:-1;;7064:471:1:o;7958:826::-;-1:-1:-1;;;;;8355:15:1;;;8337:34;;8407:15;;8402:2;8387:18;;8380:43;8317:3;8454:2;8439:18;;8432:31;;;8280:4;;8486:57;;8523:19;;8515:6;8486:57;:::i;:::-;8591:9;8583:6;8579:22;8574:2;8563:9;8559:18;8552:50;8625:44;8662:6;8654;8625:44;:::i;:::-;8611:58;;8718:9;8710:6;8706:22;8700:3;8689:9;8685:19;8678:51;8746:32;8771:6;8763;8746:32;:::i;:::-;8738:40;7958:826;-1:-1:-1;;;;;;;;7958:826:1:o;8789:560::-;-1:-1:-1;;;;;9086:15:1;;;9068:34;;9138:15;;9133:2;9118:18;;9111:43;9185:2;9170:18;;9163:34;;;9228:2;9213:18;;9206:34;;;9048:3;9271;9256:19;;9249:32;;;9011:4;;9298:45;;9323:19;;9315:6;9298:45;:::i;:::-;9290:53;8789:560;-1:-1:-1;;;;;;;8789:560:1:o;9354:261::-;9533:2;9522:9;9515:21;9496:4;9553:56;9605:2;9594:9;9590:18;9582:6;9553:56;:::i;9620:465::-;9877:2;9866:9;9859:21;9840:4;9903:56;9955:2;9944:9;9940:18;9932:6;9903:56;:::i;:::-;10007:9;9999:6;9995:22;9990:2;9979:9;9975:18;9968:50;10035:44;10072:6;10064;10035:44;:::i;:::-;10027:52;9620:465;-1:-1:-1;;;;;9620:465:1:o;10282:219::-;10431:2;10420:9;10413:21;10394:4;10451:44;10491:2;10480:9;10476:18;10468:6;10451:44;:::i;10927:404::-;11129:2;11111:21;;;11168:2;11148:18;;;11141:30;11207:34;11202:2;11187:18;;11180:62;-1:-1:-1;;;11273:2:1;11258:18;;11251:38;11321:3;11306:19;;10927:404::o;13336:401::-;13538:2;13520:21;;;13577:2;13557:18;;;13550:30;13616:34;13611:2;13596:18;;13589:62;-1:-1:-1;;;13682:2:1;13667:18;;13660:35;13727:3;13712:19;;13336:401::o;14161:406::-;14363:2;14345:21;;;14402:2;14382:18;;;14375:30;14441:34;14436:2;14421:18;;14414:62;-1:-1:-1;;;14507:2:1;14492:18;;14485:40;14557:3;14542:19;;14161:406::o;14572:356::-;14774:2;14756:21;;;14793:18;;;14786:30;14852:34;14847:2;14832:18;;14825:62;14919:2;14904:18;;14572:356::o;17704:183::-;17764:4;17797:18;17789:6;17786:30;17783:56;;;17819:18;;:::i;:::-;-1:-1:-1;17864:1:1;17860:14;17876:4;17856:25;;17704:183::o;17892:128::-;17932:3;17963:1;17959:6;17956:1;17953:13;17950:39;;;17969:18;;:::i;:::-;-1:-1:-1;18005:9:1;;17892:128::o;18025:168::-;18065:7;18131:1;18127;18123:6;18119:14;18116:1;18113:21;18108:1;18101:9;18094:17;18090:45;18087:71;;;18138:18;;:::i;:::-;-1:-1:-1;18178:9:1;;18025:168::o;18198:125::-;18238:4;18266:1;18263;18260:8;18257:34;;;18271:18;;:::i;:::-;-1:-1:-1;18308:9:1;;18198:125::o;18328:380::-;18407:1;18403:12;;;;18450;;;18471:61;;18525:4;18517:6;18513:17;18503:27;;18471:61;18578:2;18570:6;18567:14;18547:18;18544:38;18541:161;;;18624:10;18619:3;18615:20;18612:1;18605:31;18659:4;18656:1;18649:15;18687:4;18684:1;18677:15;18541:161;;18328:380;;;:::o;18713:249::-;18823:2;18804:13;;-1:-1:-1;;18800:27:1;18788:40;;18858:18;18843:34;;18879:22;;;18840:62;18837:88;;;18905:18;;:::i;:::-;18941:2;18934:22;-1:-1:-1;;18713:249:1:o;18967:135::-;19006:3;-1:-1:-1;;19027:17:1;;19024:43;;;19047:18;;:::i;:::-;-1:-1:-1;19094:1:1;19083:13;;18967:135::o;19107:127::-;19168:10;19163:3;19159:20;19156:1;19149:31;19199:4;19196:1;19189:15;19223:4;19220:1;19213:15;19239:127;19300:10;19295:3;19291:20;19288:1;19281:31;19331:4;19328:1;19321:15;19355:4;19352:1;19345:15;19371:127;19432:10;19427:3;19423:20;19420:1;19413:31;19463:4;19460:1;19453:15;19487:4;19484:1;19477:15;19503:179;19538:3;19580:1;19562:16;19559:23;19556:120;;;19626:1;19623;19620;19605:23;-1:-1:-1;19663:1:1;19657:8;19652:3;19648:18;19556:120;19503:179;:::o;19687:671::-;19726:3;19768:4;19750:16;19747:26;19744:39;;;19687:671;:::o;19744:39::-;19810:2;19804:9;-1:-1:-1;;19875:16:1;19871:25;;19868:1;19804:9;19847:50;19926:4;19920:11;19950:16;19985:18;20056:2;20049:4;20041:6;20037:17;20034:25;20029:2;20021:6;20018:14;20015:45;20012:58;;;20063:5;;;;;19687:671;:::o;20012:58::-;20100:6;20094:4;20090:17;20079:28;;20136:3;20130:10;20163:2;20155:6;20152:14;20149:27;;;20169:5;;;;;;19687:671;:::o;20149:27::-;20253:2;20234:16;20228:4;20224:27;20220:36;20213:4;20204:6;20199:3;20195:16;20191:27;20188:69;20185:82;;;20260:5;;;;;;19687:671;:::o;20185:82::-;20276:57;20327:4;20318:6;20310;20306:19;20302:30;20296:4;20276:57;:::i;:::-;-1:-1:-1;20349:3:1;;19687:671;-1:-1:-1;;;;;19687:671:1:o;20363:131::-;-1:-1:-1;;;;;;20437:32:1;;20427:43;;20417:71;;20484:1;20481;20474:12
Swarm Source
ipfs://ba8daf6f72585526e095037758e12aedd6859606718838749dffeaefd6ccaff7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.