Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
278 WW
Holders
93
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 WWLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
WickedWitchWorld
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-10-28 */ // File @openzeppelin/contracts/security/[email protected] // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File @openzeppelin/contracts/utils/introspection/[email protected] pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File @openzeppelin/contracts/token/ERC721/[email protected] pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File @openzeppelin/contracts/token/ERC721/[email protected] pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File @openzeppelin/contracts/utils/[email protected] pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @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/[email protected] pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/utils/[email protected] pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File @openzeppelin/contracts/utils/introspection/[email protected] 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/ERC721/[email protected] pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] pragma solidity ^0.8.0; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // File @openzeppelin/contracts/access/[email protected] pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/utils/math/[email protected] pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File @openzeppelin/contracts/utils/[email protected] pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } pragma solidity ^0.8.0; contract WickedWitchWorld is ERC721Enumerable, Ownable, ReentrancyGuard { using Strings for uint256; string public baseURI; string public baseExtension = ".json"; string public notRevealedUri; uint256 public constant price = 0.0666 ether; uint256 public constant maxSupply = 10000; uint256 public maxMintAmount = 25; uint256 public nftPerAddressLimit = 11; // for whitlist uint256 public goldMintAmount = 25; //for goldWhitlist bool public paused = true; bool public revealed = false; bool public onlyWhitelisted = true; address payable public witcher = payable(0x9eecd6d36f016f66E27a8d823F3D8D8720eda2f4); address payable commissions = payable(0x30fd1B812FA699E8e18305E9139A6638b572ebFc); address[] public whitelistedAddresses; address[] public goldWhitelistedAddresses; mapping(address => uint256) public addressMintedBalance; constructor( string memory _name, string memory _symbol, string memory _initBaseURI, string memory _initNotRevealedUri, uint preMintedTokensCount ) ERC721(_name, _symbol) { setBaseURI(_initBaseURI); setNotRevealedURI(_initNotRevealedUri); _preMint(preMintedTokensCount); } // internal functions function _baseURI() internal view virtual override returns(string memory) { return baseURI; } function _preMint(uint256 _mintAmount) internal { uint256 supply = totalSupply(); for (uint256 i = 1; i <= _mintAmount; i++) { addressMintedBalance[msg.sender]++; _safeMint(msg.sender, supply + i); } } // public functions function mintWitch(uint256 _mintAmount) public payable nonReentrant { require(!paused, "The contract is paused"); uint256 supply = totalSupply(); require(_mintAmount > 0, "Need to mint atleast 1 Witch"); require(_mintAmount <= maxMintAmount, "Can only mint 20 per Transaction"); require(supply + _mintAmount <= maxSupply, "Max supply reached!"); if (msg.sender != owner()) { if(onlyWhitelisted == true) { require(isWhitelisted(msg.sender) || isGoldWhitelisted(msg.sender), "user not whitelisted"); uint256 ownerMintedCount = addressMintedBalance[msg.sender]; if(isGoldWhitelisted(msg.sender)) { require(ownerMintedCount + _mintAmount <= goldMintAmount, "max Witches per address for presale"); } else { require(ownerMintedCount + _mintAmount <= nftPerAddressLimit, "max Witches per address for presale"); } } require(msg.value >= price * _mintAmount, "insufficient funds"); } for (uint256 i = 1; i <= _mintAmount; i++) { addressMintedBalance[msg.sender]++; _safeMint(msg.sender, supply + i); } (bool success, ) = payable(commissions).call{value: (price * _mintAmount) * 5 / 100}(""); require(success); (bool transferToWitcher, ) = payable(witcher).call{value: (price * _mintAmount) * 95 / 100}(""); require( transferToWitcher, "Address: unable to send value, recipient may have reverted" ); uint256 excessAmount = msg.value - (price * _mintAmount); if (excessAmount > 0) { (bool returnExcessStatus, ) = _msgSender().call{value: excessAmount}(""); require(returnExcessStatus, "Failed to return excess."); } } // whitelist check function isWhitelisted(address _user) public view returns (bool) { for (uint i = 0; i < whitelistedAddresses.length; i++) { if (whitelistedAddresses[i] == _user) { return true; } } return false; } function isGoldWhitelisted(address _user) public view returns (bool) { for (uint i = 0; i < goldWhitelistedAddresses.length; i++) { if (goldWhitelistedAddresses[i] == _user) { return true; } } return false; } function walletOfOwner(address _owner) public view returns (uint256[] memory) { uint256 ownerTokenCount= balanceOf(_owner); uint256[] memory tokenIds = new uint256[](ownerTokenCount); for (uint256 i; i < ownerTokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(_owner, i); } return tokenIds; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); if(revealed == false) { return notRevealedUri; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(),baseExtension)) : ""; } // only owner functions function reveal() public onlyOwner() { revealed = true; } function setMaxMintAmount(uint256 _newMaxMintAmount) public onlyOwner() { maxMintAmount = _newMaxMintAmount; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner { notRevealedUri = _notRevealedURI; } function pause(bool _state) public onlyOwner { paused = _state; } function setOnlyWhitelisted(bool _state) public onlyOwner { onlyWhitelisted = _state; } function whitelistUsers(address[] calldata _users) public onlyOwner { delete whitelistedAddresses; whitelistedAddresses = _users; } function goldWhitelistUsers(address[] calldata _users) public onlyOwner { delete goldWhitelistedAddresses; goldWhitelistedAddresses = _users; } function withdraw() public payable onlyOwner { (bool success, ) = payable(msg.sender).call{value: address(this).balance}(""); require(success); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"},{"internalType":"uint256","name":"preMintedTokensCount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressMintedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"goldWhitelistUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"goldWhitelistedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isGoldWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isWhitelisted","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":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mintWitch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onlyWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxMintAmount","type":"uint256"}],"name":"setMaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setOnlyWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"whitelistUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"witcher","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60c06040526005608081905264173539b7b760d91b60a09081526200002891600d919062000899565b506019600f819055600b6010556011556012805462010000600160ff199092169190911762ffff001916176301000000600160b81b031916769eecd6d36f016f66e27a8d823f3d8d8720eda2f4000000179055601380547330fd1b812fa699e8e18305e9139a6638b572ebfc6001600160a01b0319909116179055348015620000b057600080fd5b5060405162003de838038062003de8833981016040819052620000d391620009f9565b845185908590620000ec90600090602085019062000899565b5080516200010290600190602084019062000899565b5050506200011f620001196200015060201b60201c565b62000154565b6001600b556200012f83620001a6565b6200013a826200020e565b620001458162000269565b505050505062000d39565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620001b062000150565b6001600160a01b0316620001c3620002d6565b6001600160a01b031614620001f55760405162461bcd60e51b8152600401620001ec9062000c15565b60405180910390fd5b80516200020a90600c90602084019062000899565b5050565b6200021862000150565b6001600160a01b03166200022b620002d6565b6001600160a01b031614620002545760405162461bcd60e51b8152600401620001ec9062000c15565b80516200020a90600e90602084019062000899565b600062000275620002e5565b905060015b828111620002d1573360009081526016602052604081208054916200029f8362000cef565b90915550620002bc905033620002b6838562000c4a565b620002eb565b80620002c88162000cef565b9150506200027a565b505050565b600a546001600160a01b031690565b60085490565b6200020a8282604051806020016040528060008152506200030d60201b60201c565b62000319838362000347565b62000328600084848462000432565b620002d15760405162461bcd60e51b8152600401620001ec9062000b0d565b6001600160a01b038216620003705760405162461bcd60e51b8152600401620001ec9062000be0565b6200037b816200056b565b156200039b5760405162461bcd60e51b8152600401620001ec9062000b5f565b620003a96000838362000588565b6001600160a01b0382166000908152600360205260408120805460019290620003d490849062000c4a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600062000453846001600160a01b03166200062c60201b620019031760201c565b156200055f576001600160a01b03841663150b7a026200047262000150565b8786866040518563ffffffff1660e01b815260040162000496949392919062000ab7565b602060405180830381600087803b158015620004b157600080fd5b505af1925050508015620004e4575060408051601f3d908101601f19168201909252620004e191810190620009c8565b60015b62000544573d80801562000515576040519150601f19603f3d011682016040523d82523d6000602084013e6200051a565b606091505b5080516200053c5760405162461bcd60e51b8152600401620001ec9062000b0d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905062000563565b5060015b949350505050565b6000908152600260205260409020546001600160a01b0316151590565b620005a0838383620002d160201b62000abb1760201c565b6001600160a01b038316620005c057620005ba8162000632565b620005e6565b816001600160a01b0316836001600160a01b031614620005e657620005e6838262000676565b6001600160a01b0382166200060657620006008162000723565b620002d1565b826001600160a01b0316826001600160a01b031614620002d157620002d1828262000801565b3b151590565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6000600162000690846200085260201b62000f401760201c565b6200069c919062000c65565b600083815260076020526040902054909150808214620006f0576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090620007379060019062000c65565b600083815260096020526040812054600880549394509092849081106200076e57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600883815481106200079e57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480620007e557634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600062000819836200085260201b62000f401760201c565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b60006001600160a01b0382166200087d5760405162461bcd60e51b8152600401620001ec9062000b96565b506001600160a01b031660009081526003602052604090205490565b828054620008a79062000cb2565b90600052602060002090601f016020900481019282620008cb576000855562000916565b82601f10620008e657805160ff191683800117855562000916565b8280016001018555821562000916579182015b8281111562000916578251825591602001919060010190620008f9565b506200092492915062000928565b5090565b5b8082111562000924576000815560010162000929565b600082601f83011262000950578081fd5b81516001600160401b03808211156200096d576200096d62000d23565b604051601f8301601f19168101602001828111828210171562000994576200099462000d23565b604052828152848301602001861015620009ac578384fd5b620009bf83602083016020880162000c7f565b95945050505050565b600060208284031215620009da578081fd5b81516001600160e01b031981168114620009f2578182fd5b9392505050565b600080600080600060a0868803121562000a11578081fd5b85516001600160401b038082111562000a28578283fd5b62000a3689838a016200093f565b9650602088015191508082111562000a4c578283fd5b62000a5a89838a016200093f565b9550604088015191508082111562000a70578283fd5b62000a7e89838a016200093f565b9450606088015191508082111562000a94578283fd5b5062000aa3888289016200093f565b925050608086015190509295509295909350565b600060018060a01b03808716835280861660208401525083604083015260806060830152825180608084015262000af68160a085016020870162000c7f565b601f01601f19169190910160a00195945050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111562000c605762000c6062000d0d565b500190565b60008282101562000c7a5762000c7a62000d0d565b500390565b60005b8381101562000c9c57818101518382015260200162000c82565b8381111562000cac576000848401525b50505050565b60028104600182168062000cc757607f821691505b6020821081141562000ce957634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141562000d065762000d0662000d0d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61309f8062000d496000396000f3fe6080604052600436106102935760003560e01c80636c0360eb1161015a578063ba7d2c76116100c1578063da3ef23f1161007a578063da3ef23f14610746578063e47b6c5b14610766578063e985e9c514610779578063edec5f2714610799578063f2c4ce1e146107b9578063f2fde38b146107d957610293565b8063ba7d2c76146106a7578063c61f67c7146106bc578063c6682862146106dc578063c87b56dd146106f1578063d00eac1c14610711578063d5abeb011461073157610293565b8063a035b1fe11610113578063a035b1fe14610608578063a22cb4651461061d578063a475b5dd1461063d578063b4025fcf14610652578063b88d4fde14610667578063ba4e5c491461068757610293565b80636c0360eb1461057f57806370a0823114610594578063715018a6146105b45780638da5cb5b146105c957806395d89b41146105de5780639c70b512146105f357610293565b80633af32abf116101fe5780634fe935e1116101b75780634fe935e1146104e057806350e27578146104f5578063518302271461051557806355f804b31461052a5780635c975abb1461054a5780636352211e1461055f57610293565b80633af32abf1461042b5780633c9527641461044b5780633ccfd60b1461046b57806342842e0e14610473578063438b6300146104935780634f6ccce7146104c057610293565b8063095ea7b311610250578063095ea7b31461037457806318160ddd1461039457806318cae269146103b6578063239c70ae146103d657806323b872dd146103eb5780632f745c591461040b57610293565b806301ffc9a71461029857806302329a29146102ce57806306fdde03146102f0578063081812fc14610312578063081c8c441461033f578063088a4ed014610354575b600080fd5b3480156102a457600080fd5b506102b86102b336600461259c565b6107f9565b6040516102c591906127b8565b60405180910390f35b3480156102da57600080fd5b506102ee6102e9366004612582565b610826565b005b3480156102fc57600080fd5b50610305610881565b6040516102c591906127c3565b34801561031e57600080fd5b5061033261032d36600461261a565b610913565b6040516102c59190612723565b34801561034b57600080fd5b50610305610956565b34801561036057600080fd5b506102ee61036f36600461261a565b6109e4565b34801561038057600080fd5b506102ee61038f3660046124ea565b610a28565b3480156103a057600080fd5b506103a9610ac0565b6040516102c59190612f04565b3480156103c257600080fd5b506103a96103d13660046123c1565b610ac6565b3480156103e257600080fd5b506103a9610ad8565b3480156103f757600080fd5b506102ee61040636600461240d565b610ade565b34801561041757600080fd5b506103a96104263660046124ea565b610b16565b34801561043757600080fd5b506102b86104463660046123c1565b610b68565b34801561045757600080fd5b506102ee610466366004612582565b610be1565b6102ee610c3c565b34801561047f57600080fd5b506102ee61048e36600461240d565b610ce7565b34801561049f57600080fd5b506104b36104ae3660046123c1565b610d02565b6040516102c59190612774565b3480156104cc57600080fd5b506103a96104db36600461261a565b610dc0565b3480156104ec57600080fd5b506103a9610e1b565b34801561050157600080fd5b506102b86105103660046123c1565b610e21565b34801561052157600080fd5b506102b8610e91565b34801561053657600080fd5b506102ee6105453660046125d4565b610e9f565b34801561055657600080fd5b506102b8610ef5565b34801561056b57600080fd5b5061033261057a36600461261a565b610efe565b34801561058b57600080fd5b50610305610f33565b3480156105a057600080fd5b506103a96105af3660046123c1565b610f40565b3480156105c057600080fd5b506102ee610f84565b3480156105d557600080fd5b50610332610fcf565b3480156105ea57600080fd5b50610305610fde565b3480156105ff57600080fd5b506102b8610fed565b34801561061457600080fd5b506103a9610ffc565b34801561062957600080fd5b506102ee6106383660046124c1565b611007565b34801561064957600080fd5b506102ee6110d5565b34801561065e57600080fd5b50610332611125565b34801561067357600080fd5b506102ee610682366004612448565b61113b565b34801561069357600080fd5b506103326106a236600461261a565b61117a565b3480156106b357600080fd5b506103a96111a4565b3480156106c857600080fd5b506103326106d736600461261a565b6111aa565b3480156106e857600080fd5b506103056111ba565b3480156106fd57600080fd5b5061030561070c36600461261a565b6111c7565b34801561071d57600080fd5b506102ee61072c366004612513565b6112ee565b34801561073d57600080fd5b506103a9611345565b34801561075257600080fd5b506102ee6107613660046125d4565b61134b565b6102ee61077436600461261a565b61139d565b34801561078557600080fd5b506102b86107943660046123db565b6117be565b3480156107a557600080fd5b506102ee6107b4366004612513565b6117ec565b3480156107c557600080fd5b506102ee6107d43660046125d4565b611843565b3480156107e557600080fd5b506102ee6107f43660046123c1565b611895565b60006001600160e01b0319821663780e9d6360e01b148061081e575061081e82611909565b90505b919050565b61082e611949565b6001600160a01b031661083f610fcf565b6001600160a01b03161461086e5760405162461bcd60e51b815260040161086590612c66565b60405180910390fd5b6012805460ff1916911515919091179055565b60606000805461089090612fa7565b80601f01602080910402602001604051908101604052809291908181526020018280546108bc90612fa7565b80156109095780601f106108de57610100808354040283529160200191610909565b820191906000526020600020905b8154815290600101906020018083116108ec57829003601f168201915b5050505050905090565b600061091e8261194d565b61093a5760405162461bcd60e51b815260040161086590612c1a565b506000908152600460205260409020546001600160a01b031690565b600e805461096390612fa7565b80601f016020809104026020016040519081016040528092919081815260200182805461098f90612fa7565b80156109dc5780601f106109b1576101008083540402835291602001916109dc565b820191906000526020600020905b8154815290600101906020018083116109bf57829003601f168201915b505050505081565b6109ec611949565b6001600160a01b03166109fd610fcf565b6001600160a01b031614610a235760405162461bcd60e51b815260040161086590612c66565b600f55565b6000610a3382610efe565b9050806001600160a01b0316836001600160a01b03161415610a675760405162461bcd60e51b815260040161086590612d33565b806001600160a01b0316610a79611949565b6001600160a01b03161480610a955750610a9581610794611949565b610ab15760405162461bcd60e51b815260040161086590612af5565b610abb838361196a565b505050565b60085490565b60166020526000908152604090205481565b600f5481565b610aef610ae9611949565b826119d8565b610b0b5760405162461bcd60e51b815260040161086590612dd5565b610abb838383611a5d565b6000610b2183610f40565b8210610b3f5760405162461bcd60e51b81526004016108659061280d565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6000805b601454811015610bd857826001600160a01b031660148281548110610ba157634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610bc6576001915050610821565b80610bd081612fe2565b915050610b6c565b50600092915050565b610be9611949565b6001600160a01b0316610bfa610fcf565b6001600160a01b031614610c205760405162461bcd60e51b815260040161086590612c66565b60128054911515620100000262ff000019909216919091179055565b610c44611949565b6001600160a01b0316610c55610fcf565b6001600160a01b031614610c7b5760405162461bcd60e51b815260040161086590612c66565b6000336001600160a01b031647604051610c9490612720565b60006040518083038185875af1925050503d8060008114610cd1576040519150601f19603f3d011682016040523d82523d6000602084013e610cd6565b606091505b5050905080610ce457600080fd5b50565b610abb8383836040518060200160405280600081525061113b565b60606000610d0f83610f40565b905060008167ffffffffffffffff811115610d3a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d63578160200160208202803683370190505b50905060005b82811015610db857610d7b8582610b16565b828281518110610d9b57634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610db081612fe2565b915050610d69565b509392505050565b6000610dca610ac0565b8210610de85760405162461bcd60e51b815260040161086590612e53565b60088281548110610e0957634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b60115481565b6000805b601554811015610bd857826001600160a01b031660158281548110610e5a57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610e7f576001915050610821565b80610e8981612fe2565b915050610e25565b601254610100900460ff1681565b610ea7611949565b6001600160a01b0316610eb8610fcf565b6001600160a01b031614610ede5760405162461bcd60e51b815260040161086590612c66565b8051610ef190600c906020840190612220565b5050565b60125460ff1681565b6000818152600260205260408120546001600160a01b03168061081e5760405162461bcd60e51b815260040161086590612b9c565b600c805461096390612fa7565b60006001600160a01b038216610f685760405162461bcd60e51b815260040161086590612b52565b506001600160a01b031660009081526003602052604090205490565b610f8c611949565b6001600160a01b0316610f9d610fcf565b6001600160a01b031614610fc35760405162461bcd60e51b815260040161086590612c66565b610fcd6000611b8a565b565b600a546001600160a01b031690565b60606001805461089090612fa7565b60125462010000900460ff1681565b66ec9c58de0a800081565b61100f611949565b6001600160a01b0316826001600160a01b031614156110405760405162461bcd60e51b8152600401610865906129de565b806005600061104d611949565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155611091611949565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110c991906127b8565b60405180910390a35050565b6110dd611949565b6001600160a01b03166110ee610fcf565b6001600160a01b0316146111145760405162461bcd60e51b815260040161086590612c66565b6012805461ff001916610100179055565b601254630100000090046001600160a01b031681565b61114c611146611949565b836119d8565b6111685760405162461bcd60e51b815260040161086590612dd5565b61117484848484611bdc565b50505050565b6014818154811061118a57600080fd5b6000918252602090912001546001600160a01b0316905081565b60105481565b6015818154811061118a57600080fd5b600d805461096390612fa7565b60606111d28261194d565b6111ee5760405162461bcd60e51b815260040161086590612ce4565b601254610100900460ff1661128f57600e805461120a90612fa7565b80601f016020809104026020016040519081016040528092919081815260200182805461123690612fa7565b80156112835780601f1061125857610100808354040283529160200191611283565b820191906000526020600020905b81548152906001019060200180831161126657829003601f168201915b50505050509050610821565b6000611299611c0f565b905060008151116112b957604051806020016040528060008152506112e7565b806112c384611c1e565b600d6040516020016112d79392919061265e565b6040516020818303038152906040525b9392505050565b6112f6611949565b6001600160a01b0316611307610fcf565b6001600160a01b03161461132d5760405162461bcd60e51b815260040161086590612c66565b611339601560006122a4565b610abb601583836122c2565b61271081565b611353611949565b6001600160a01b0316611364610fcf565b6001600160a01b03161461138a5760405162461bcd60e51b815260040161086590612c66565b8051610ef190600d906020840190612220565b6002600b5414156113c05760405162461bcd60e51b815260040161086590612e9f565b6002600b5560125460ff16156113e85760405162461bcd60e51b8152600401610865906128aa565b60006113f2610ac0565b9050600082116114145760405162461bcd60e51b815260040161086590612a15565b600f548211156114365760405162461bcd60e51b815260040161086590612d74565b6127106114438383612f19565b11156114615760405162461bcd60e51b815260040161086590612e26565b611469610fcf565b6001600160a01b0316336001600160a01b0316146115775760125462010000900460ff16151560011415611547576114a033610b68565b806114af57506114af33610e21565b6114cb5760405162461bcd60e51b815260040161086590612ed6565b33600081815260166020526040902054906114e590610e21565b1561151a576011546114f78483612f19565b11156115155760405162461bcd60e51b815260040161086590612957565b611545565b6010546115278483612f19565b11156115455760405162461bcd60e51b815260040161086590612957565b505b6115588266ec9c58de0a8000612f45565b3410156115775760405162461bcd60e51b815260040161086590612da9565b60015b8281116115c75733600090815260166020526040812080549161159c83612fe2565b909155506115b59050336115b08385612f19565b611d39565b806115bf81612fe2565b91505061157a565b506013546000906001600160a01b031660646115ea8566ec9c58de0a8000612f45565b6115f5906005612f45565b6115ff9190612f31565b60405161160b90612720565b60006040518083038185875af1925050503d8060008114611648576040519150601f19603f3d011682016040523d82523d6000602084013e61164d565b606091505b505090508061165b57600080fd5b601254600090630100000090046001600160a01b031660646116848666ec9c58de0a8000612f45565b61168f90605f612f45565b6116999190612f31565b6040516116a590612720565b60006040518083038185875af1925050503d80600081146116e2576040519150601f19603f3d011682016040523d82523d6000602084013e6116e7565b606091505b50509050806117085760405162461bcd60e51b815260040161086590612a4c565b600061171b8566ec9c58de0a8000612f45565b6117259034612f64565b905080156117b2576000611737611949565b6001600160a01b03168260405161174d90612720565b60006040518083038185875af1925050503d806000811461178a576040519150601f19603f3d011682016040523d82523d6000602084013e61178f565b606091505b50509050806117b05760405162461bcd60e51b8152600401610865906127d6565b505b50506001600b55505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6117f4611949565b6001600160a01b0316611805610fcf565b6001600160a01b03161461182b5760405162461bcd60e51b815260040161086590612c66565b611837601460006122a4565b610abb601483836122c2565b61184b611949565b6001600160a01b031661185c610fcf565b6001600160a01b0316146118825760405162461bcd60e51b815260040161086590612c66565b8051610ef190600e906020840190612220565b61189d611949565b6001600160a01b03166118ae610fcf565b6001600160a01b0316146118d45760405162461bcd60e51b815260040161086590612c66565b6001600160a01b0381166118fa5760405162461bcd60e51b8152600401610865906128da565b610ce481611b8a565b3b151590565b60006001600160e01b031982166380ac58cd60e01b148061193a57506001600160e01b03198216635b5e139f60e01b145b8061081e575061081e82611d53565b3390565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061199f82610efe565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006119e38261194d565b6119ff5760405162461bcd60e51b815260040161086590612aa9565b6000611a0a83610efe565b9050806001600160a01b0316846001600160a01b03161480611a455750836001600160a01b0316611a3a84610913565b6001600160a01b0316145b80611a555750611a5581856117be565b949350505050565b826001600160a01b0316611a7082610efe565b6001600160a01b031614611a965760405162461bcd60e51b815260040161086590612c9b565b6001600160a01b038216611abc5760405162461bcd60e51b81526004016108659061299a565b611ac7838383611d6c565b611ad260008261196a565b6001600160a01b0383166000908152600360205260408120805460019290611afb908490612f64565b90915550506001600160a01b0382166000908152600360205260408120805460019290611b29908490612f19565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611be7848484611a5d565b611bf384848484611df5565b6111745760405162461bcd60e51b815260040161086590612858565b6060600c805461089090612fa7565b606081611c4357506040805180820190915260018152600360fc1b6020820152610821565b8160005b8115611c6d5780611c5781612fe2565b9150611c669050600a83612f31565b9150611c47565b60008167ffffffffffffffff811115611c9657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611cc0576020820181803683370190505b5090505b8415611a5557611cd5600183612f64565b9150611ce2600a86612ffd565b611ced906030612f19565b60f81b818381518110611d1057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611d32600a86612f31565b9450611cc4565b610ef1828260405180602001604052806000815250611f10565b6001600160e01b031981166301ffc9a760e01b14919050565b611d77838383610abb565b6001600160a01b038316611d9357611d8e81611f43565b611db6565b816001600160a01b0316836001600160a01b031614611db657611db68382611f87565b6001600160a01b038216611dd257611dcd81612024565b610abb565b826001600160a01b0316826001600160a01b031614610abb57610abb82826120fd565b6000611e09846001600160a01b0316611903565b15611f0557836001600160a01b031663150b7a02611e25611949565b8786866040518563ffffffff1660e01b8152600401611e479493929190612737565b602060405180830381600087803b158015611e6157600080fd5b505af1925050508015611e91575060408051601f3d908101601f19168201909252611e8e918101906125b8565b60015b611eeb573d808015611ebf576040519150601f19603f3d011682016040523d82523d6000602084013e611ec4565b606091505b508051611ee35760405162461bcd60e51b815260040161086590612858565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611a55565b506001949350505050565b611f1a8383612141565b611f276000848484611df5565b610abb5760405162461bcd60e51b815260040161086590612858565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b60006001611f9484610f40565b611f9e9190612f64565b600083815260076020526040902054909150808214611ff1576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061203690600190612f64565b6000838152600960205260408120546008805493945090928490811061206c57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050806008838154811061209b57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806120e157634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061210883610f40565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166121675760405162461bcd60e51b815260040161086590612be5565b6121708161194d565b1561218d5760405162461bcd60e51b815260040161086590612920565b61219960008383611d6c565b6001600160a01b03821660009081526003602052604081208054600192906121c2908490612f19565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461222c90612fa7565b90600052602060002090601f01602090048101928261224e5760008555612294565b82601f1061226757805160ff1916838001178555612294565b82800160010185558215612294579182015b82811115612294578251825591602001919060010190612279565b506122a0929150612315565b5090565b5080546000825590600052602060002090810190610ce49190612315565b828054828255906000526020600020908101928215612294579160200282015b828111156122945781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906122e2565b5b808211156122a05760008155600101612316565b600067ffffffffffffffff808411156123455761234561303d565b604051601f8501601f1916810160200182811182821017156123695761236961303d565b60405284815291508183850186101561238157600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b038116811461082157600080fd5b8035801515811461082157600080fd5b6000602082840312156123d2578081fd5b6112e78261239a565b600080604083850312156123ed578081fd5b6123f68361239a565b91506124046020840161239a565b90509250929050565b600080600060608486031215612421578081fd5b61242a8461239a565b92506124386020850161239a565b9150604084013590509250925092565b6000806000806080858703121561245d578081fd5b6124668561239a565b93506124746020860161239a565b925060408501359150606085013567ffffffffffffffff811115612496578182fd5b8501601f810187136124a6578182fd5b6124b58782356020840161232a565b91505092959194509250565b600080604083850312156124d3578182fd5b6124dc8361239a565b9150612404602084016123b1565b600080604083850312156124fc578182fd5b6125058361239a565b946020939093013593505050565b60008060208385031215612525578182fd5b823567ffffffffffffffff8082111561253c578384fd5b818501915085601f83011261254f578384fd5b81358181111561255d578485fd5b8660208083028501011115612570578485fd5b60209290920196919550909350505050565b600060208284031215612593578081fd5b6112e7826123b1565b6000602082840312156125ad578081fd5b81356112e781613053565b6000602082840312156125c9578081fd5b81516112e781613053565b6000602082840312156125e5578081fd5b813567ffffffffffffffff8111156125fb578182fd5b8201601f8101841361260b578182fd5b611a558482356020840161232a565b60006020828403121561262b578081fd5b5035919050565b6000815180845261264a816020860160208601612f7b565b601f01601f19169290920160200192915050565b6000845160206126718285838a01612f7b565b8551918401916126848184848a01612f7b565b85549201918390600281046001808316806126a057607f831692505b8583108114156126be57634e487b7160e01b88526022600452602488fd5b8080156126d257600181146126e35761270f565b60ff1985168852838801955061270f565b6126ec8b612f0d565b895b858110156127075781548a8201529084019088016126ee565b505083880195505b50939b9a5050505050505050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061276a90830184612632565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156127ac57835183529284019291840191600101612790565b50909695505050505050565b901515815260200190565b6000602082526112e76020830184612632565b60208082526018908201527f4661696c656420746f2072657475726e206578636573732e0000000000000000604082015260600190565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b602080825260169082015275151a194818dbdb9d1c9858dd081a5cc81c185d5cd95960521b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526023908201527f6d6178205769746368657320706572206164647265737320666f722070726573604082015262616c6560e81b606082015260800190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252601c908201527f4e65656420746f206d696e742061746c65617374203120576974636800000000604082015260600190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b6020808252818101527f43616e206f6e6c79206d696e7420323020706572205472616e73616374696f6e604082015260600190565b602080825260129082015271696e73756666696369656e742066756e647360701b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601390820152724d617820737570706c7920726561636865642160681b604082015260600190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601490820152731d5cd95c881b9bdd081dda1a5d195b1a5cdd195960621b604082015260600190565b90815260200190565b60009081526020902090565b60008219821115612f2c57612f2c613011565b500190565b600082612f4057612f40613027565b500490565b6000816000190483118215151615612f5f57612f5f613011565b500290565b600082821015612f7657612f76613011565b500390565b60005b83811015612f96578181015183820152602001612f7e565b838111156111745750506000910152565b600281046001821680612fbb57607f821691505b60208210811415612fdc57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612ff657612ff6613011565b5060010190565b60008261300c5761300c613027565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610ce457600080fdfea2646970667358221220734a7cbb14180b4b073d997dcc22158db2e3997f3995b4a4eedaae8946f2009564736f6c6343000800003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000125769636b656420576974636820576f726c640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000257570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d503764786865633341566f476a72586e32326a55747571575969624e7a625462373961345876734b567a65432f000000000000000000000000000000000000000000000000000000000000000000000000000000000045697066733a2f2f516d503764786865633341566f476a72586e32326a55747571575969624e7a625462373961345876734b567a65432f756e72657665616c65642e6a736f6e000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102935760003560e01c80636c0360eb1161015a578063ba7d2c76116100c1578063da3ef23f1161007a578063da3ef23f14610746578063e47b6c5b14610766578063e985e9c514610779578063edec5f2714610799578063f2c4ce1e146107b9578063f2fde38b146107d957610293565b8063ba7d2c76146106a7578063c61f67c7146106bc578063c6682862146106dc578063c87b56dd146106f1578063d00eac1c14610711578063d5abeb011461073157610293565b8063a035b1fe11610113578063a035b1fe14610608578063a22cb4651461061d578063a475b5dd1461063d578063b4025fcf14610652578063b88d4fde14610667578063ba4e5c491461068757610293565b80636c0360eb1461057f57806370a0823114610594578063715018a6146105b45780638da5cb5b146105c957806395d89b41146105de5780639c70b512146105f357610293565b80633af32abf116101fe5780634fe935e1116101b75780634fe935e1146104e057806350e27578146104f5578063518302271461051557806355f804b31461052a5780635c975abb1461054a5780636352211e1461055f57610293565b80633af32abf1461042b5780633c9527641461044b5780633ccfd60b1461046b57806342842e0e14610473578063438b6300146104935780634f6ccce7146104c057610293565b8063095ea7b311610250578063095ea7b31461037457806318160ddd1461039457806318cae269146103b6578063239c70ae146103d657806323b872dd146103eb5780632f745c591461040b57610293565b806301ffc9a71461029857806302329a29146102ce57806306fdde03146102f0578063081812fc14610312578063081c8c441461033f578063088a4ed014610354575b600080fd5b3480156102a457600080fd5b506102b86102b336600461259c565b6107f9565b6040516102c591906127b8565b60405180910390f35b3480156102da57600080fd5b506102ee6102e9366004612582565b610826565b005b3480156102fc57600080fd5b50610305610881565b6040516102c591906127c3565b34801561031e57600080fd5b5061033261032d36600461261a565b610913565b6040516102c59190612723565b34801561034b57600080fd5b50610305610956565b34801561036057600080fd5b506102ee61036f36600461261a565b6109e4565b34801561038057600080fd5b506102ee61038f3660046124ea565b610a28565b3480156103a057600080fd5b506103a9610ac0565b6040516102c59190612f04565b3480156103c257600080fd5b506103a96103d13660046123c1565b610ac6565b3480156103e257600080fd5b506103a9610ad8565b3480156103f757600080fd5b506102ee61040636600461240d565b610ade565b34801561041757600080fd5b506103a96104263660046124ea565b610b16565b34801561043757600080fd5b506102b86104463660046123c1565b610b68565b34801561045757600080fd5b506102ee610466366004612582565b610be1565b6102ee610c3c565b34801561047f57600080fd5b506102ee61048e36600461240d565b610ce7565b34801561049f57600080fd5b506104b36104ae3660046123c1565b610d02565b6040516102c59190612774565b3480156104cc57600080fd5b506103a96104db36600461261a565b610dc0565b3480156104ec57600080fd5b506103a9610e1b565b34801561050157600080fd5b506102b86105103660046123c1565b610e21565b34801561052157600080fd5b506102b8610e91565b34801561053657600080fd5b506102ee6105453660046125d4565b610e9f565b34801561055657600080fd5b506102b8610ef5565b34801561056b57600080fd5b5061033261057a36600461261a565b610efe565b34801561058b57600080fd5b50610305610f33565b3480156105a057600080fd5b506103a96105af3660046123c1565b610f40565b3480156105c057600080fd5b506102ee610f84565b3480156105d557600080fd5b50610332610fcf565b3480156105ea57600080fd5b50610305610fde565b3480156105ff57600080fd5b506102b8610fed565b34801561061457600080fd5b506103a9610ffc565b34801561062957600080fd5b506102ee6106383660046124c1565b611007565b34801561064957600080fd5b506102ee6110d5565b34801561065e57600080fd5b50610332611125565b34801561067357600080fd5b506102ee610682366004612448565b61113b565b34801561069357600080fd5b506103326106a236600461261a565b61117a565b3480156106b357600080fd5b506103a96111a4565b3480156106c857600080fd5b506103326106d736600461261a565b6111aa565b3480156106e857600080fd5b506103056111ba565b3480156106fd57600080fd5b5061030561070c36600461261a565b6111c7565b34801561071d57600080fd5b506102ee61072c366004612513565b6112ee565b34801561073d57600080fd5b506103a9611345565b34801561075257600080fd5b506102ee6107613660046125d4565b61134b565b6102ee61077436600461261a565b61139d565b34801561078557600080fd5b506102b86107943660046123db565b6117be565b3480156107a557600080fd5b506102ee6107b4366004612513565b6117ec565b3480156107c557600080fd5b506102ee6107d43660046125d4565b611843565b3480156107e557600080fd5b506102ee6107f43660046123c1565b611895565b60006001600160e01b0319821663780e9d6360e01b148061081e575061081e82611909565b90505b919050565b61082e611949565b6001600160a01b031661083f610fcf565b6001600160a01b03161461086e5760405162461bcd60e51b815260040161086590612c66565b60405180910390fd5b6012805460ff1916911515919091179055565b60606000805461089090612fa7565b80601f01602080910402602001604051908101604052809291908181526020018280546108bc90612fa7565b80156109095780601f106108de57610100808354040283529160200191610909565b820191906000526020600020905b8154815290600101906020018083116108ec57829003601f168201915b5050505050905090565b600061091e8261194d565b61093a5760405162461bcd60e51b815260040161086590612c1a565b506000908152600460205260409020546001600160a01b031690565b600e805461096390612fa7565b80601f016020809104026020016040519081016040528092919081815260200182805461098f90612fa7565b80156109dc5780601f106109b1576101008083540402835291602001916109dc565b820191906000526020600020905b8154815290600101906020018083116109bf57829003601f168201915b505050505081565b6109ec611949565b6001600160a01b03166109fd610fcf565b6001600160a01b031614610a235760405162461bcd60e51b815260040161086590612c66565b600f55565b6000610a3382610efe565b9050806001600160a01b0316836001600160a01b03161415610a675760405162461bcd60e51b815260040161086590612d33565b806001600160a01b0316610a79611949565b6001600160a01b03161480610a955750610a9581610794611949565b610ab15760405162461bcd60e51b815260040161086590612af5565b610abb838361196a565b505050565b60085490565b60166020526000908152604090205481565b600f5481565b610aef610ae9611949565b826119d8565b610b0b5760405162461bcd60e51b815260040161086590612dd5565b610abb838383611a5d565b6000610b2183610f40565b8210610b3f5760405162461bcd60e51b81526004016108659061280d565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6000805b601454811015610bd857826001600160a01b031660148281548110610ba157634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610bc6576001915050610821565b80610bd081612fe2565b915050610b6c565b50600092915050565b610be9611949565b6001600160a01b0316610bfa610fcf565b6001600160a01b031614610c205760405162461bcd60e51b815260040161086590612c66565b60128054911515620100000262ff000019909216919091179055565b610c44611949565b6001600160a01b0316610c55610fcf565b6001600160a01b031614610c7b5760405162461bcd60e51b815260040161086590612c66565b6000336001600160a01b031647604051610c9490612720565b60006040518083038185875af1925050503d8060008114610cd1576040519150601f19603f3d011682016040523d82523d6000602084013e610cd6565b606091505b5050905080610ce457600080fd5b50565b610abb8383836040518060200160405280600081525061113b565b60606000610d0f83610f40565b905060008167ffffffffffffffff811115610d3a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d63578160200160208202803683370190505b50905060005b82811015610db857610d7b8582610b16565b828281518110610d9b57634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610db081612fe2565b915050610d69565b509392505050565b6000610dca610ac0565b8210610de85760405162461bcd60e51b815260040161086590612e53565b60088281548110610e0957634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b60115481565b6000805b601554811015610bd857826001600160a01b031660158281548110610e5a57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610e7f576001915050610821565b80610e8981612fe2565b915050610e25565b601254610100900460ff1681565b610ea7611949565b6001600160a01b0316610eb8610fcf565b6001600160a01b031614610ede5760405162461bcd60e51b815260040161086590612c66565b8051610ef190600c906020840190612220565b5050565b60125460ff1681565b6000818152600260205260408120546001600160a01b03168061081e5760405162461bcd60e51b815260040161086590612b9c565b600c805461096390612fa7565b60006001600160a01b038216610f685760405162461bcd60e51b815260040161086590612b52565b506001600160a01b031660009081526003602052604090205490565b610f8c611949565b6001600160a01b0316610f9d610fcf565b6001600160a01b031614610fc35760405162461bcd60e51b815260040161086590612c66565b610fcd6000611b8a565b565b600a546001600160a01b031690565b60606001805461089090612fa7565b60125462010000900460ff1681565b66ec9c58de0a800081565b61100f611949565b6001600160a01b0316826001600160a01b031614156110405760405162461bcd60e51b8152600401610865906129de565b806005600061104d611949565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155611091611949565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110c991906127b8565b60405180910390a35050565b6110dd611949565b6001600160a01b03166110ee610fcf565b6001600160a01b0316146111145760405162461bcd60e51b815260040161086590612c66565b6012805461ff001916610100179055565b601254630100000090046001600160a01b031681565b61114c611146611949565b836119d8565b6111685760405162461bcd60e51b815260040161086590612dd5565b61117484848484611bdc565b50505050565b6014818154811061118a57600080fd5b6000918252602090912001546001600160a01b0316905081565b60105481565b6015818154811061118a57600080fd5b600d805461096390612fa7565b60606111d28261194d565b6111ee5760405162461bcd60e51b815260040161086590612ce4565b601254610100900460ff1661128f57600e805461120a90612fa7565b80601f016020809104026020016040519081016040528092919081815260200182805461123690612fa7565b80156112835780601f1061125857610100808354040283529160200191611283565b820191906000526020600020905b81548152906001019060200180831161126657829003601f168201915b50505050509050610821565b6000611299611c0f565b905060008151116112b957604051806020016040528060008152506112e7565b806112c384611c1e565b600d6040516020016112d79392919061265e565b6040516020818303038152906040525b9392505050565b6112f6611949565b6001600160a01b0316611307610fcf565b6001600160a01b03161461132d5760405162461bcd60e51b815260040161086590612c66565b611339601560006122a4565b610abb601583836122c2565b61271081565b611353611949565b6001600160a01b0316611364610fcf565b6001600160a01b03161461138a5760405162461bcd60e51b815260040161086590612c66565b8051610ef190600d906020840190612220565b6002600b5414156113c05760405162461bcd60e51b815260040161086590612e9f565b6002600b5560125460ff16156113e85760405162461bcd60e51b8152600401610865906128aa565b60006113f2610ac0565b9050600082116114145760405162461bcd60e51b815260040161086590612a15565b600f548211156114365760405162461bcd60e51b815260040161086590612d74565b6127106114438383612f19565b11156114615760405162461bcd60e51b815260040161086590612e26565b611469610fcf565b6001600160a01b0316336001600160a01b0316146115775760125462010000900460ff16151560011415611547576114a033610b68565b806114af57506114af33610e21565b6114cb5760405162461bcd60e51b815260040161086590612ed6565b33600081815260166020526040902054906114e590610e21565b1561151a576011546114f78483612f19565b11156115155760405162461bcd60e51b815260040161086590612957565b611545565b6010546115278483612f19565b11156115455760405162461bcd60e51b815260040161086590612957565b505b6115588266ec9c58de0a8000612f45565b3410156115775760405162461bcd60e51b815260040161086590612da9565b60015b8281116115c75733600090815260166020526040812080549161159c83612fe2565b909155506115b59050336115b08385612f19565b611d39565b806115bf81612fe2565b91505061157a565b506013546000906001600160a01b031660646115ea8566ec9c58de0a8000612f45565b6115f5906005612f45565b6115ff9190612f31565b60405161160b90612720565b60006040518083038185875af1925050503d8060008114611648576040519150601f19603f3d011682016040523d82523d6000602084013e61164d565b606091505b505090508061165b57600080fd5b601254600090630100000090046001600160a01b031660646116848666ec9c58de0a8000612f45565b61168f90605f612f45565b6116999190612f31565b6040516116a590612720565b60006040518083038185875af1925050503d80600081146116e2576040519150601f19603f3d011682016040523d82523d6000602084013e6116e7565b606091505b50509050806117085760405162461bcd60e51b815260040161086590612a4c565b600061171b8566ec9c58de0a8000612f45565b6117259034612f64565b905080156117b2576000611737611949565b6001600160a01b03168260405161174d90612720565b60006040518083038185875af1925050503d806000811461178a576040519150601f19603f3d011682016040523d82523d6000602084013e61178f565b606091505b50509050806117b05760405162461bcd60e51b8152600401610865906127d6565b505b50506001600b55505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6117f4611949565b6001600160a01b0316611805610fcf565b6001600160a01b03161461182b5760405162461bcd60e51b815260040161086590612c66565b611837601460006122a4565b610abb601483836122c2565b61184b611949565b6001600160a01b031661185c610fcf565b6001600160a01b0316146118825760405162461bcd60e51b815260040161086590612c66565b8051610ef190600e906020840190612220565b61189d611949565b6001600160a01b03166118ae610fcf565b6001600160a01b0316146118d45760405162461bcd60e51b815260040161086590612c66565b6001600160a01b0381166118fa5760405162461bcd60e51b8152600401610865906128da565b610ce481611b8a565b3b151590565b60006001600160e01b031982166380ac58cd60e01b148061193a57506001600160e01b03198216635b5e139f60e01b145b8061081e575061081e82611d53565b3390565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061199f82610efe565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006119e38261194d565b6119ff5760405162461bcd60e51b815260040161086590612aa9565b6000611a0a83610efe565b9050806001600160a01b0316846001600160a01b03161480611a455750836001600160a01b0316611a3a84610913565b6001600160a01b0316145b80611a555750611a5581856117be565b949350505050565b826001600160a01b0316611a7082610efe565b6001600160a01b031614611a965760405162461bcd60e51b815260040161086590612c9b565b6001600160a01b038216611abc5760405162461bcd60e51b81526004016108659061299a565b611ac7838383611d6c565b611ad260008261196a565b6001600160a01b0383166000908152600360205260408120805460019290611afb908490612f64565b90915550506001600160a01b0382166000908152600360205260408120805460019290611b29908490612f19565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611be7848484611a5d565b611bf384848484611df5565b6111745760405162461bcd60e51b815260040161086590612858565b6060600c805461089090612fa7565b606081611c4357506040805180820190915260018152600360fc1b6020820152610821565b8160005b8115611c6d5780611c5781612fe2565b9150611c669050600a83612f31565b9150611c47565b60008167ffffffffffffffff811115611c9657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611cc0576020820181803683370190505b5090505b8415611a5557611cd5600183612f64565b9150611ce2600a86612ffd565b611ced906030612f19565b60f81b818381518110611d1057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611d32600a86612f31565b9450611cc4565b610ef1828260405180602001604052806000815250611f10565b6001600160e01b031981166301ffc9a760e01b14919050565b611d77838383610abb565b6001600160a01b038316611d9357611d8e81611f43565b611db6565b816001600160a01b0316836001600160a01b031614611db657611db68382611f87565b6001600160a01b038216611dd257611dcd81612024565b610abb565b826001600160a01b0316826001600160a01b031614610abb57610abb82826120fd565b6000611e09846001600160a01b0316611903565b15611f0557836001600160a01b031663150b7a02611e25611949565b8786866040518563ffffffff1660e01b8152600401611e479493929190612737565b602060405180830381600087803b158015611e6157600080fd5b505af1925050508015611e91575060408051601f3d908101601f19168201909252611e8e918101906125b8565b60015b611eeb573d808015611ebf576040519150601f19603f3d011682016040523d82523d6000602084013e611ec4565b606091505b508051611ee35760405162461bcd60e51b815260040161086590612858565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611a55565b506001949350505050565b611f1a8383612141565b611f276000848484611df5565b610abb5760405162461bcd60e51b815260040161086590612858565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b60006001611f9484610f40565b611f9e9190612f64565b600083815260076020526040902054909150808214611ff1576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061203690600190612f64565b6000838152600960205260408120546008805493945090928490811061206c57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050806008838154811061209b57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806120e157634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061210883610f40565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166121675760405162461bcd60e51b815260040161086590612be5565b6121708161194d565b1561218d5760405162461bcd60e51b815260040161086590612920565b61219960008383611d6c565b6001600160a01b03821660009081526003602052604081208054600192906121c2908490612f19565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461222c90612fa7565b90600052602060002090601f01602090048101928261224e5760008555612294565b82601f1061226757805160ff1916838001178555612294565b82800160010185558215612294579182015b82811115612294578251825591602001919060010190612279565b506122a0929150612315565b5090565b5080546000825590600052602060002090810190610ce49190612315565b828054828255906000526020600020908101928215612294579160200282015b828111156122945781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906122e2565b5b808211156122a05760008155600101612316565b600067ffffffffffffffff808411156123455761234561303d565b604051601f8501601f1916810160200182811182821017156123695761236961303d565b60405284815291508183850186101561238157600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b038116811461082157600080fd5b8035801515811461082157600080fd5b6000602082840312156123d2578081fd5b6112e78261239a565b600080604083850312156123ed578081fd5b6123f68361239a565b91506124046020840161239a565b90509250929050565b600080600060608486031215612421578081fd5b61242a8461239a565b92506124386020850161239a565b9150604084013590509250925092565b6000806000806080858703121561245d578081fd5b6124668561239a565b93506124746020860161239a565b925060408501359150606085013567ffffffffffffffff811115612496578182fd5b8501601f810187136124a6578182fd5b6124b58782356020840161232a565b91505092959194509250565b600080604083850312156124d3578182fd5b6124dc8361239a565b9150612404602084016123b1565b600080604083850312156124fc578182fd5b6125058361239a565b946020939093013593505050565b60008060208385031215612525578182fd5b823567ffffffffffffffff8082111561253c578384fd5b818501915085601f83011261254f578384fd5b81358181111561255d578485fd5b8660208083028501011115612570578485fd5b60209290920196919550909350505050565b600060208284031215612593578081fd5b6112e7826123b1565b6000602082840312156125ad578081fd5b81356112e781613053565b6000602082840312156125c9578081fd5b81516112e781613053565b6000602082840312156125e5578081fd5b813567ffffffffffffffff8111156125fb578182fd5b8201601f8101841361260b578182fd5b611a558482356020840161232a565b60006020828403121561262b578081fd5b5035919050565b6000815180845261264a816020860160208601612f7b565b601f01601f19169290920160200192915050565b6000845160206126718285838a01612f7b565b8551918401916126848184848a01612f7b565b85549201918390600281046001808316806126a057607f831692505b8583108114156126be57634e487b7160e01b88526022600452602488fd5b8080156126d257600181146126e35761270f565b60ff1985168852838801955061270f565b6126ec8b612f0d565b895b858110156127075781548a8201529084019088016126ee565b505083880195505b50939b9a5050505050505050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061276a90830184612632565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156127ac57835183529284019291840191600101612790565b50909695505050505050565b901515815260200190565b6000602082526112e76020830184612632565b60208082526018908201527f4661696c656420746f2072657475726e206578636573732e0000000000000000604082015260600190565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b602080825260169082015275151a194818dbdb9d1c9858dd081a5cc81c185d5cd95960521b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526023908201527f6d6178205769746368657320706572206164647265737320666f722070726573604082015262616c6560e81b606082015260800190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252601c908201527f4e65656420746f206d696e742061746c65617374203120576974636800000000604082015260600190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b6020808252818101527f43616e206f6e6c79206d696e7420323020706572205472616e73616374696f6e604082015260600190565b602080825260129082015271696e73756666696369656e742066756e647360701b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601390820152724d617820737570706c7920726561636865642160681b604082015260600190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601490820152731d5cd95c881b9bdd081dda1a5d195b1a5cdd195960621b604082015260600190565b90815260200190565b60009081526020902090565b60008219821115612f2c57612f2c613011565b500190565b600082612f4057612f40613027565b500490565b6000816000190483118215151615612f5f57612f5f613011565b500290565b600082821015612f7657612f76613011565b500390565b60005b83811015612f96578181015183820152602001612f7e565b838111156111745750506000910152565b600281046001821680612fbb57607f821691505b60208210811415612fdc57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612ff657612ff6613011565b5060010190565b60008261300c5761300c613027565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610ce457600080fdfea2646970667358221220734a7cbb14180b4b073d997dcc22158db2e3997f3995b4a4eedaae8946f2009564736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000125769636b656420576974636820576f726c640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000257570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d503764786865633341566f476a72586e32326a55747571575969624e7a625462373961345876734b567a65432f000000000000000000000000000000000000000000000000000000000000000000000000000000000045697066733a2f2f516d503764786865633341566f476a72586e32326a55747571575969624e7a625462373961345876734b567a65432f756e72657665616c65642e6a736f6e000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Wicked Witch World
Arg [1] : _symbol (string): WW
Arg [2] : _initBaseURI (string): ipfs://QmP7dxhec3AVoGjrXn22jUtuqWYibNzbTb79a4XvsKVzeC/
Arg [3] : _initNotRevealedUri (string): ipfs://QmP7dxhec3AVoGjrXn22jUtuqWYibNzbTb79a4XvsKVzeC/unrevealed.json
Arg [4] : preMintedTokensCount (uint256): 100
-----Encoded View---------------
16 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [6] : 5769636b656420576974636820576f726c640000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [8] : 5757000000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [10] : 697066733a2f2f516d503764786865633341566f476a72586e32326a55747571
Arg [11] : 575969624e7a625462373961345876734b567a65432f00000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000045
Arg [13] : 697066733a2f2f516d503764786865633341566f476a72586e32326a55747571
Arg [14] : 575969624e7a625462373961345876734b567a65432f756e72657665616c6564
Arg [15] : 2e6a736f6e000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
54284:5917:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37448:224;;;;;;;;;;-1:-1:-1;37448:224:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;59548:73;;;;;;;;;;-1:-1:-1;59548:73:0;;;;;:::i;:::-;;:::i;:::-;;24343:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25902:221::-;;;;;;;;;;-1:-1:-1;25902:221:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;54461:28::-;;;;;;;;;;;;;:::i;59066:118::-;;;;;;;;;;-1:-1:-1;59066:118:0;;;;;:::i;:::-;;:::i;25425:411::-;;;;;;;;;;-1:-1:-1;25425:411:0;;;;;:::i;:::-;;:::i;38088:113::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;55121:55::-;;;;;;;;;;-1:-1:-1;55121:55:0;;;;;:::i;:::-;;:::i;54593:33::-;;;;;;;;;;;;;:::i;26792:339::-;;;;;;;;;;-1:-1:-1;26792:339:0;;;;;:::i;:::-;;:::i;37756:256::-;;;;;;;;;;-1:-1:-1;37756:256:0;;;;;:::i;:::-;;:::i;57681:241::-;;;;;;;;;;-1:-1:-1;57681:241:0;;;;;:::i;:::-;;:::i;59627:95::-;;;;;;;;;;-1:-1:-1;59627:95:0;;;;;:::i;:::-;;:::i;60040:158::-;;;:::i;27202:185::-;;;;;;;;;;-1:-1:-1;27202:185:0;;;;;:::i;:::-;;:::i;58183:329::-;;;;;;;;;;-1:-1:-1;58183:329:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;38278:233::-;;;;;;;;;;-1:-1:-1;38278:233:0;;;;;:::i;:::-;;:::i;54690:34::-;;;;;;;;;;;;;:::i;57928:249::-;;;;;;;;;;-1:-1:-1;57928:249:0;;;;;:::i;:::-;;:::i;54780:28::-;;;;;;;;;;;;;:::i;59190:98::-;;;;;;;;;;-1:-1:-1;59190:98:0;;;;;:::i;:::-;;:::i;54750:25::-;;;;;;;;;;;;;:::i;24037:239::-;;;;;;;;;;-1:-1:-1;24037:239:0;;;;;:::i;:::-;;:::i;54393:21::-;;;;;;;;;;;;;:::i;23767:208::-;;;;;;;;;;-1:-1:-1;23767:208:0;;;;;:::i;:::-;;:::i;45247:94::-;;;;;;;;;;;;;:::i;44596:87::-;;;;;;;;;;;;;:::i;24512:104::-;;;;;;;;;;;;;:::i;54813:34::-;;;;;;;;;;;;;:::i;54496:44::-;;;;;;;;;;;;;:::i;26195:295::-;;;;;;;;;;-1:-1:-1;26195:295:0;;;;;:::i;:::-;;:::i;58995:65::-;;;;;;;;;;;;;:::i;54854:84::-;;;;;;;;;;;;;:::i;27458:328::-;;;;;;;;;;-1:-1:-1;27458:328:0;;;;;:::i;:::-;;:::i;55031:37::-;;;;;;;;;;-1:-1:-1;55031:37:0;;;;;:::i;:::-;;:::i;54631:38::-;;;;;;;;;;;;;:::i;55073:41::-;;;;;;;;;;-1:-1:-1;55073:41:0;;;;;:::i;:::-;;:::i;54419:37::-;;;;;;;;;;;;;:::i;58518:442::-;;;;;;;;;;-1:-1:-1;58518:442:0;;;;;:::i;:::-;;:::i;59878:156::-;;;;;;;;;;-1:-1:-1;59878:156:0;;;;;:::i;:::-;;:::i;54545:41::-;;;;;;;;;;;;;:::i;59294:122::-;;;;;;;;;;-1:-1:-1;59294:122:0;;;;;:::i;:::-;;:::i;55915:1738::-;;;;;;:::i;:::-;;:::i;26561:164::-;;;;;;;;;;-1:-1:-1;26561:164:0;;;;;:::i;:::-;;:::i;59728:144::-;;;;;;;;;;-1:-1:-1;59728:144:0;;;;;:::i;:::-;;:::i;59422:120::-;;;;;;;;;;-1:-1:-1;59422:120:0;;;;;:::i;:::-;;:::i;45496:192::-;;;;;;;;;;-1:-1:-1;45496:192:0;;;;;:::i;:::-;;:::i;37448:224::-;37550:4;-1:-1:-1;;;;;;37574:50:0;;-1:-1:-1;;;37574:50:0;;:90;;;37628:36;37652:11;37628:23;:36::i;:::-;37567:97;;37448:224;;;;:::o;59548:73::-;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;;;;;;;;;59600:6:::1;:15:::0;;-1:-1:-1;;59600:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;59548:73::o;24343:100::-;24397:13;24430:5;24423:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24343:100;:::o;25902:221::-;25978:7;26006:16;26014:7;26006;:16::i;:::-;25998:73;;;;-1:-1:-1;;;25998:73:0;;;;;;;:::i;:::-;-1:-1:-1;26091:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;26091:24:0;;25902:221::o;54461:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;59066:118::-;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;59145:13:::1;:33:::0;59066:118::o;25425:411::-;25506:13;25522:23;25537:7;25522:14;:23::i;:::-;25506:39;;25570:5;-1:-1:-1;;;;;25564:11:0;:2;-1:-1:-1;;;;;25564:11:0;;;25556:57;;;;-1:-1:-1;;;25556:57:0;;;;;;;:::i;:::-;25664:5;-1:-1:-1;;;;;25648:21:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;25648:21:0;;:62;;;;25673:37;25690:5;25697:12;:10;:12::i;25673:37::-;25626:168;;;;-1:-1:-1;;;25626:168:0;;;;;;;:::i;:::-;25807:21;25816:2;25820:7;25807:8;:21::i;:::-;25425:411;;;:::o;38088:113::-;38176:10;:17;38088:113;:::o;55121:55::-;;;;;;;;;;;;;:::o;54593:33::-;;;;:::o;26792:339::-;26987:41;27006:12;:10;:12::i;:::-;27020:7;26987:18;:41::i;:::-;26979:103;;;;-1:-1:-1;;;26979:103:0;;;;;;;:::i;:::-;27095:28;27105:4;27111:2;27115:7;27095:9;:28::i;37756:256::-;37853:7;37889:23;37906:5;37889:16;:23::i;:::-;37881:5;:31;37873:87;;;;-1:-1:-1;;;37873:87:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;37978:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;37756:256::o;57681:241::-;57740:4;;57753:141;57774:20;:27;57770:31;;57753:141;;;57848:5;-1:-1:-1;;;;;57821:32:0;:20;57842:1;57821:23;;;;;;-1:-1:-1;;;57821:23:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;57821:23:0;:32;57817:70;;;57873:4;57866:11;;;;;57817:70;57803:3;;;;:::i;:::-;;;;57753:141;;;-1:-1:-1;57911:5:0;;57681:241;-1:-1:-1;;57681:241:0:o;59627:95::-;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;59692:15:::1;:24:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;59692:24:0;;::::1;::::0;;;::::1;::::0;;59627:95::o;60040:158::-;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;60093:12:::1;60119:10;-1:-1:-1::0;;;;;60111:24:0::1;60143:21;60111:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;60092:77;;;60184:7;60176:16;;;::::0;::::1;;44887:1;60040:158::o:0;27202:185::-;27340:39;27357:4;27363:2;27367:7;27340:39;;;;;;;;;;;;:16;:39::i;58183:329::-;58243:16;58268:23;58293:17;58303:6;58293:9;:17::i;:::-;58268:42;;58317:25;58359:15;58345:30;;;;;;-1:-1:-1;;;58345:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;58345:30:0;;58317:58;;58387:9;58382:103;58402:15;58398:1;:19;58382:103;;;58447:30;58467:6;58475:1;58447:19;:30::i;:::-;58433:8;58442:1;58433:11;;;;;;-1:-1:-1;;;58433:11:0;;;;;;;;;;;;;;;;;;:44;58419:3;;;;:::i;:::-;;;;58382:103;;;-1:-1:-1;58498:8:0;58183:329;-1:-1:-1;;;58183:329:0:o;38278:233::-;38353:7;38389:30;:28;:30::i;:::-;38381:5;:38;38373:95;;;;-1:-1:-1;;;38373:95:0;;;;;;;:::i;:::-;38486:10;38497:5;38486:17;;;;;;-1:-1:-1;;;38486:17:0;;;;;;;;;;;;;;;;;38479:24;;38278:233;;;:::o;54690:34::-;;;;:::o;57928:249::-;57991:4;;58004:149;58025:24;:31;58021:35;;58004:149;;;58107:5;-1:-1:-1;;;;;58076:36:0;:24;58101:1;58076:27;;;;;;-1:-1:-1;;;58076:27:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;58076:27:0;:36;58072:74;;;58132:4;58125:11;;;;;58072:74;58058:3;;;;:::i;:::-;;;;58004:149;;54780:28;;;;;;;;;:::o;59190:98::-;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;59261:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;59190:98:::0;:::o;54750:25::-;;;;;;:::o;24037:239::-;24109:7;24145:16;;;:7;:16;;;;;;-1:-1:-1;;;;;24145:16:0;24180:19;24172:73;;;;-1:-1:-1;;;24172:73:0;;;;;;;:::i;54393:21::-;;;;;;;:::i;23767:208::-;23839:7;-1:-1:-1;;;;;23867:19:0;;23859:74;;;;-1:-1:-1;;;23859:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;23951:16:0;;;;;:9;:16;;;;;;;23767:208::o;45247:94::-;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;45312:21:::1;45330:1;45312:9;:21::i;:::-;45247:94::o:0;44596:87::-;44669:6;;-1:-1:-1;;;;;44669:6:0;44596:87;:::o;24512:104::-;24568:13;24601:7;24594:14;;;;;:::i;54813:34::-;;;;;;;;;:::o;54496:44::-;54528:12;54496:44;:::o;26195:295::-;26310:12;:10;:12::i;:::-;-1:-1:-1;;;;;26298:24:0;:8;-1:-1:-1;;;;;26298:24:0;;;26290:62;;;;-1:-1:-1;;;26290:62:0;;;;;;;:::i;:::-;26410:8;26365:18;:32;26384:12;:10;:12::i;:::-;-1:-1:-1;;;;;26365:32:0;;;;;;;;;;;;;;;;;-1:-1:-1;26365:32:0;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;26365:53:0;;;;;;;;;;;26449:12;:10;:12::i;:::-;-1:-1:-1;;;;;26434:48:0;;26473:8;26434:48;;;;;;:::i;:::-;;;;;;;;26195:295;;:::o;58995:65::-;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;59039:8:::1;:15:::0;;-1:-1:-1;;59039:15:0::1;;;::::0;;58995:65::o;54854:84::-;;;;;;-1:-1:-1;;;;;54854:84:0;;:::o;27458:328::-;27633:41;27652:12;:10;:12::i;:::-;27666:7;27633:18;:41::i;:::-;27625:103;;;;-1:-1:-1;;;27625:103:0;;;;;;;:::i;:::-;27739:39;27753:4;27759:2;27763:7;27772:5;27739:13;:39::i;:::-;27458:328;;;;:::o;55031:37::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;55031:37:0;;-1:-1:-1;55031:37:0;:::o;54631:38::-;;;;:::o;55073:41::-;;;;;;;;;;;;54419:37;;;;;;;:::i;58518:442::-;58591:13;58621:16;58629:7;58621;:16::i;:::-;58613:81;;;;-1:-1:-1;;;58613:81:0;;;;;;;:::i;:::-;58706:8;;;;;;;58703:60;;58741:14;58734:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;58703:60;58771:28;58802:10;:8;:10::i;:::-;58771:41;;58857:1;58832:14;58826:28;:32;:128;;;;;;;;;;;;;;;;;58892:14;58908:18;:7;:16;:18::i;:::-;58927:13;58875:66;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;58826:128;58819:135;58518:442;-1:-1:-1;;;58518:442:0:o;59878:156::-;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;59957:31:::1;59964:24;;59957:31;:::i;:::-;59995:33;:24;60022:6:::0;;59995:33:::1;:::i;54545:41::-:0;54581:5;54545:41;:::o;59294:122::-;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;59377:33;;::::1;::::0;:13:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;55915:1738::-:0;1784:1;2380:7;;:19;;2372:63;;;;-1:-1:-1;;;2372:63:0;;;;;;;:::i;:::-;1784:1;2513:7;:18;55999:6:::1;::::0;::::1;;55998:7;55990:42;;;;-1:-1:-1::0;;;55990:42:0::1;;;;;;;:::i;:::-;56039:14;56056:13;:11;:13::i;:::-;56039:30;;56098:1;56084:11;:15;56076:56;;;;-1:-1:-1::0;;;56076:56:0::1;;;;;;;:::i;:::-;56162:13;;56147:11;:28;;56139:73;;;;-1:-1:-1::0;;;56139:73:0::1;;;;;;;:::i;:::-;54581:5;56227:20;56236:11:::0;56227:6;:20:::1;:::i;:::-;:33;;56219:65;;;;-1:-1:-1::0;;;56219:65:0::1;;;;;;;:::i;:::-;56311:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;56297:21:0::1;:10;-1:-1:-1::0;;;;;56297:21:0::1;;56293:625;;56332:15;::::0;;;::::1;;;:23;;56351:4;56332:23;56329:508;;;56376:25;56390:10;56376:13;:25::i;:::-;:58;;;;56405:29;56423:10;56405:17;:29::i;:::-;56368:91;;;;-1:-1:-1::0;;;56368:91:0::1;;;;;;;:::i;:::-;56518:10;56470:24;56497:32:::0;;;:20:::1;:32;::::0;;;;;;56543:29:::1;::::0;:17:::1;:29::i;:::-;56540:286;;;56629:14;::::0;56595:30:::1;56614:11:::0;56595:16;:30:::1;:::i;:::-;:48;;56587:96;;;;-1:-1:-1::0;;;56587:96:0::1;;;;;;;:::i;:::-;56540:286;;;56756:18;::::0;56722:30:::1;56741:11:::0;56722:16;:30:::1;:::i;:::-;:52;;56714:100;;;;-1:-1:-1::0;;;56714:100:0::1;;;;;;;:::i;:::-;56329:508;;56868:19;56876:11:::0;54528:12:::1;56868:19;:::i;:::-;56855:9;:32;;56847:63;;;;-1:-1:-1::0;;;56847:63:0::1;;;;;;;:::i;:::-;56943:1;56926:136;56951:11;56946:1;:16;56926:136;;56999:10;56978:32;::::0;;;:20:::1;:32;::::0;;;;:34;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;57021:33:0::1;::::0;-1:-1:-1;57031:10:0::1;57043;57052:1:::0;57043:6;:10:::1;:::i;:::-;57021:9;:33::i;:::-;56964:3:::0;::::1;::::0;::::1;:::i;:::-;;;;56926:136;;;-1:-1:-1::0;57097:11:0::1;::::0;57071:12:::1;::::0;-1:-1:-1;;;;;57097:11:0::1;57150:3;57123:19;57131:11:::0;54528:12:::1;57123:19;:::i;:::-;57122:25;::::0;57146:1:::1;57122:25;:::i;:::-;:31;;;;:::i;:::-;57089:69;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57070:88;;;57173:7;57165:16;;;::::0;::::1;;57227:7;::::0;57191:22:::1;::::0;57227:7;;::::1;-1:-1:-1::0;;;;;57227:7:0::1;57277:3;57249:19;57257:11:::0;54528:12:::1;57249:19;:::i;:::-;57248:26;::::0;57272:2:::1;57248:26;:::i;:::-;:32;;;;:::i;:::-;57219:66;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57190:95;;;57308:17;57292:109;;;;-1:-1:-1::0;;;57292:109:0::1;;;;;;;:::i;:::-;57410:20;57446:19;57454:11:::0;54528:12:::1;57446:19;:::i;:::-;57433:33;::::0;:9:::1;:33;:::i;:::-;57410:56:::0;-1:-1:-1;57477:16:0;;57473:175:::1;;57505:23;57534:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;57534:17:0::1;57559:12;57534:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57504:72;;;57593:18;57585:55;;;;-1:-1:-1::0;;;57585:55:0::1;;;;;;;:::i;:::-;57473:175;;-1:-1:-1::0;;1740:1:0;2692:7;:22;-1:-1:-1;;;55915:1738:0:o;26561:164::-;-1:-1:-1;;;;;26682:25:0;;;26658:4;26682:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;26561:164::o;59728:144::-;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;59803:27:::1;59810:20;;59803:27;:::i;:::-;59837:29;:20;59860:6:::0;;59837:29:::1;:::i;59422:120::-:0;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;59504:32;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;45496:192::-:0;44827:12;:10;:12::i;:::-;-1:-1:-1;;;;;44816:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;44816:23:0;;44808:68;;;;-1:-1:-1;;;44808:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45585:22:0;::::1;45577:73;;;;-1:-1:-1::0;;;45577:73:0::1;;;;;;;:::i;:::-;45661:19;45671:8;45661:9;:19::i;10858:387::-:0;11181:20;11229:8;;;10858:387::o;23398:305::-;23500:4;-1:-1:-1;;;;;;23537:40:0;;-1:-1:-1;;;23537:40:0;;:105;;-1:-1:-1;;;;;;;23594:48:0;;-1:-1:-1;;;23594:48:0;23537:105;:158;;;;23659:36;23683:11;23659:23;:36::i;18820:98::-;18900:10;18820:98;:::o;29296:127::-;29361:4;29385:16;;;:7;:16;;;;;;-1:-1:-1;;;;;29385:16:0;:30;;;29296:127::o;33278:174::-;33353:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;33353:29:0;-1:-1:-1;;;;;33353:29:0;;;;;;;;:24;;33407:23;33353:24;33407:14;:23::i;:::-;-1:-1:-1;;;;;33398:46:0;;;;;;;;;;;33278:174;;:::o;29590:348::-;29683:4;29708:16;29716:7;29708;:16::i;:::-;29700:73;;;;-1:-1:-1;;;29700:73:0;;;;;;;:::i;:::-;29784:13;29800:23;29815:7;29800:14;:23::i;:::-;29784:39;;29853:5;-1:-1:-1;;;;;29842:16:0;:7;-1:-1:-1;;;;;29842:16:0;;:51;;;;29886:7;-1:-1:-1;;;;;29862:31:0;:20;29874:7;29862:11;:20::i;:::-;-1:-1:-1;;;;;29862:31:0;;29842:51;:87;;;;29897:32;29914:5;29921:7;29897:16;:32::i;:::-;29834:96;29590:348;-1:-1:-1;;;;29590:348:0:o;32582:578::-;32741:4;-1:-1:-1;;;;;32714:31:0;:23;32729:7;32714:14;:23::i;:::-;-1:-1:-1;;;;;32714:31:0;;32706:85;;;;-1:-1:-1;;;32706:85:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32810:16:0;;32802:65;;;;-1:-1:-1;;;32802:65:0;;;;;;;:::i;:::-;32880:39;32901:4;32907:2;32911:7;32880:20;:39::i;:::-;32984:29;33001:1;33005:7;32984:8;:29::i;:::-;-1:-1:-1;;;;;33026:15:0;;;;;;:9;:15;;;;;:20;;33045:1;;33026:15;:20;;33045:1;;33026:20;:::i;:::-;;;;-1:-1:-1;;;;;;;33057:13:0;;;;;;:9;:13;;;;;:18;;33074:1;;33057:13;:18;;33074:1;;33057:18;:::i;:::-;;;;-1:-1:-1;;33086:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;33086:21:0;-1:-1:-1;;;;;33086:21:0;;;;;;;;;33125:27;;33086:16;;33125:27;;;;;;;32582:578;;;:::o;45696:173::-;45771:6;;;-1:-1:-1;;;;;45788:17:0;;;-1:-1:-1;;;;;;45788:17:0;;;;;;;45821:40;;45771:6;;;45788:17;45771:6;;45821:40;;45752:16;;45821:40;45696:173;;:::o;28668:315::-;28825:28;28835:4;28841:2;28845:7;28825:9;:28::i;:::-;28872:48;28895:4;28901:2;28905:7;28914:5;28872:22;:48::i;:::-;28864:111;;;;-1:-1:-1;;;28864:111:0;;;;;;;:::i;55540:101::-;55599:13;55628:7;55621:14;;;;;:::i;19349:723::-;19405:13;19626:10;19622:53;;-1:-1:-1;19653:10:0;;;;;;;;;;;;-1:-1:-1;;;19653:10:0;;;;;;19622:53;19700:5;19685:12;19741:78;19748:9;;19741:78;;19774:8;;;;:::i;:::-;;-1:-1:-1;19797:10:0;;-1:-1:-1;19805:2:0;19797:10;;:::i;:::-;;;19741:78;;;19829:19;19861:6;19851:17;;;;;;-1:-1:-1;;;19851:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19851:17:0;;19829:39;;19879:154;19886:10;;19879:154;;19913:11;19923:1;19913:11;;:::i;:::-;;-1:-1:-1;19982:10:0;19990:2;19982:5;:10;:::i;:::-;19969:24;;:2;:24;:::i;:::-;19956:39;;19939:6;19946;19939:14;;;;;;-1:-1:-1;;;19939:14:0;;;;;;;;;;;;:56;-1:-1:-1;;;;;19939:56:0;;;;;;;;-1:-1:-1;20010:11:0;20019:2;20010:11;;:::i;:::-;;;19879:154;;30280:110;30356:26;30366:2;30370:7;30356:26;;;;;;;;;;;;:9;:26::i;21908:157::-;-1:-1:-1;;;;;;22017:40:0;;-1:-1:-1;;;22017:40:0;21908:157;;;:::o;39124:589::-;39268:45;39295:4;39301:2;39305:7;39268:26;:45::i;:::-;-1:-1:-1;;;;;39330:18:0;;39326:187;;39365:40;39397:7;39365:31;:40::i;:::-;39326:187;;;39435:2;-1:-1:-1;;;;;39427:10:0;:4;-1:-1:-1;;;;;39427:10:0;;39423:90;;39454:47;39487:4;39493:7;39454:32;:47::i;:::-;-1:-1:-1;;;;;39527:16:0;;39523:183;;39560:45;39597:7;39560:36;:45::i;:::-;39523:183;;;39633:4;-1:-1:-1;;;;;39627:10:0;:2;-1:-1:-1;;;;;39627:10:0;;39623:83;;39654:40;39682:2;39686:7;39654:27;:40::i;34017:799::-;34172:4;34193:15;:2;-1:-1:-1;;;;;34193:13:0;;:15::i;:::-;34189:620;;;34245:2;-1:-1:-1;;;;;34229:36:0;;34266:12;:10;:12::i;:::-;34280:4;34286:7;34295:5;34229:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34229:72:0;;;;;;;;-1:-1:-1;;34229:72:0;;;;;;;;;;;;:::i;:::-;;;34225:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34471:13:0;;34467:272;;34514:60;;-1:-1:-1;;;34514:60:0;;;;;;;:::i;34467:272::-;34689:6;34683:13;34674:6;34670:2;34666:15;34659:38;34225:529;-1:-1:-1;;;;;;34352:51:0;-1:-1:-1;;;34352:51:0;;-1:-1:-1;34345:58:0;;34189:620;-1:-1:-1;34793:4:0;34017:799;;;;;;:::o;30617:321::-;30747:18;30753:2;30757:7;30747:5;:18::i;:::-;30798:54;30829:1;30833:2;30837:7;30846:5;30798:22;:54::i;:::-;30776:154;;;;-1:-1:-1;;;30776:154:0;;;;;;;:::i;40436:164::-;40540:10;:17;;40513:24;;;;:15;:24;;;;;:44;;;40568:24;;;;;;;;;;;;40436:164::o;41227:988::-;41493:22;41543:1;41518:22;41535:4;41518:16;:22::i;:::-;:26;;;;:::i;:::-;41555:18;41576:26;;;:17;:26;;;;;;41493:51;;-1:-1:-1;41709:28:0;;;41705:328;;-1:-1:-1;;;;;41776:18:0;;41754:19;41776:18;;;:12;:18;;;;;;;;:34;;;;;;;;;41827:30;;;;;;:44;;;41944:30;;:17;:30;;;;;:43;;;41705:328;-1:-1:-1;42129:26:0;;;;:17;:26;;;;;;;;42122:33;;;-1:-1:-1;;;;;42173:18:0;;;;;:12;:18;;;;;:34;;;;;;;42166:41;41227:988::o;42510:1079::-;42788:10;:17;42763:22;;42788:21;;42808:1;;42788:21;:::i;:::-;42820:18;42841:24;;;:15;:24;;;;;;43214:10;:26;;42763:46;;-1:-1:-1;42841:24:0;;42763:46;;43214:26;;;;-1:-1:-1;;;43214:26:0;;;;;;;;;;;;;;;;;43192:48;;43278:11;43253:10;43264;43253:22;;;;;;-1:-1:-1;;;43253:22:0;;;;;;;;;;;;;;;;;;;;:36;;;;43358:28;;;:15;:28;;;;;;;:41;;;43530:24;;;;;43523:31;43565:10;:16;;;;;-1:-1:-1;;;43565:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;42510:1079;;;;:::o;40014:221::-;40099:14;40116:20;40133:2;40116:16;:20::i;:::-;-1:-1:-1;;;;;40147:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;40192:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;40014:221:0:o;31274:382::-;-1:-1:-1;;;;;31354:16:0;;31346:61;;;;-1:-1:-1;;;31346:61:0;;;;;;;:::i;:::-;31427:16;31435:7;31427;:16::i;:::-;31426:17;31418:58;;;;-1:-1:-1;;;31418:58:0;;;;;;;:::i;:::-;31489:45;31518:1;31522:2;31526:7;31489:20;:45::i;:::-;-1:-1:-1;;;;;31547:13:0;;;;;;:9;:13;;;;;:18;;31564:1;;31547:13;:18;;31564:1;;31547:18;:::i;:::-;;;;-1:-1:-1;;31576:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;31576:21:0;-1:-1:-1;;;;;31576:21:0;;;;;;;;31615:33;;31576:16;;;31615:33;;31576:16;;31615:33;31274:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:607:1;;110:18;151:2;143:6;140:14;137:2;;;157:18;;:::i;:::-;206:2;200:9;279:2;256:17;;-1:-1:-1;;252:31:1;240:44;;286:4;236:55;306:18;;;326:22;;;303:46;300:2;;;352:18;;:::i;:::-;388:2;381:22;436;;;421:6;-1:-1:-1;421:6:1;473:16;;;470:25;-1:-1:-1;467:2:1;;;508:1;505;498:12;467:2;558:6;553:3;546:4;538:6;534:17;521:44;613:1;606:4;597:6;589;585:19;581:30;574:41;;;90:531;;;;;:::o;626:175::-;696:20;;-1:-1:-1;;;;;745:31:1;;735:42;;725:2;;791:1;788;781:12;806:162;873:20;;929:13;;922:21;912:32;;902:2;;958:1;955;948:12;973:198;;1085:2;1073:9;1064:7;1060:23;1056:32;1053:2;;;1106:6;1098;1091:22;1053:2;1134:31;1155:9;1134:31;:::i;1176:274::-;;;1305:2;1293:9;1284:7;1280:23;1276:32;1273:2;;;1326:6;1318;1311:22;1273:2;1354:31;1375:9;1354:31;:::i;:::-;1344:41;;1404:40;1440:2;1429:9;1425:18;1404:40;:::i;:::-;1394:50;;1263:187;;;;;:::o;1455:342::-;;;;1601:2;1589:9;1580:7;1576:23;1572:32;1569:2;;;1622:6;1614;1607:22;1569:2;1650:31;1671:9;1650:31;:::i;:::-;1640:41;;1700:40;1736:2;1725:9;1721:18;1700:40;:::i;:::-;1690:50;;1787:2;1776:9;1772:18;1759:32;1749:42;;1559:238;;;;;:::o;1802:702::-;;;;;1974:3;1962:9;1953:7;1949:23;1945:33;1942:2;;;1996:6;1988;1981:22;1942:2;2024:31;2045:9;2024:31;:::i;:::-;2014:41;;2074:40;2110:2;2099:9;2095:18;2074:40;:::i;:::-;2064:50;;2161:2;2150:9;2146:18;2133:32;2123:42;;2216:2;2205:9;2201:18;2188:32;2243:18;2235:6;2232:30;2229:2;;;2280:6;2272;2265:22;2229:2;2308:22;;2361:4;2353:13;;2349:27;-1:-1:-1;2339:2:1;;2395:6;2387;2380:22;2339:2;2423:75;2490:7;2485:2;2472:16;2467:2;2463;2459:11;2423:75;:::i;:::-;2413:85;;;1932:572;;;;;;;:::o;2509:268::-;;;2635:2;2623:9;2614:7;2610:23;2606:32;2603:2;;;2656:6;2648;2641:22;2603:2;2684:31;2705:9;2684:31;:::i;:::-;2674:41;;2734:37;2767:2;2756:9;2752:18;2734:37;:::i;2782:266::-;;;2911:2;2899:9;2890:7;2886:23;2882:32;2879:2;;;2932:6;2924;2917:22;2879:2;2960:31;2981:9;2960:31;:::i;:::-;2950:41;3038:2;3023:18;;;;3010:32;;-1:-1:-1;;;2869:179:1:o;3053:666::-;;;3200:2;3188:9;3179:7;3175:23;3171:32;3168:2;;;3221:6;3213;3206:22;3168:2;3266:9;3253:23;3295:18;3336:2;3328:6;3325:14;3322:2;;;3357:6;3349;3342:22;3322:2;3400:6;3389:9;3385:22;3375:32;;3445:7;3438:4;3434:2;3430:13;3426:27;3416:2;;3472:6;3464;3457:22;3416:2;3517;3504:16;3543:2;3535:6;3532:14;3529:2;;;3564:6;3556;3549:22;3529:2;3623:7;3618:2;3612;3604:6;3600:15;3596:2;3592:24;3588:33;3585:46;3582:2;;;3649:6;3641;3634:22;3582:2;3685;3677:11;;;;;3707:6;;-1:-1:-1;3158:561:1;;-1:-1:-1;;;;3158:561:1:o;3724:192::-;;3833:2;3821:9;3812:7;3808:23;3804:32;3801:2;;;3854:6;3846;3839:22;3801:2;3882:28;3900:9;3882:28;:::i;3921:257::-;;4032:2;4020:9;4011:7;4007:23;4003:32;4000:2;;;4053:6;4045;4038:22;4000:2;4097:9;4084:23;4116:32;4142:5;4116:32;:::i;4183:261::-;;4305:2;4293:9;4284:7;4280:23;4276:32;4273:2;;;4326:6;4318;4311:22;4273:2;4363:9;4357:16;4382:32;4408:5;4382:32;:::i;4449:482::-;;4571:2;4559:9;4550:7;4546:23;4542:32;4539:2;;;4592:6;4584;4577:22;4539:2;4637:9;4624:23;4670:18;4662:6;4659:30;4656:2;;;4707:6;4699;4692:22;4656:2;4735:22;;4788:4;4780:13;;4776:27;-1:-1:-1;4766:2:1;;4822:6;4814;4807:22;4766:2;4850:75;4917:7;4912:2;4899:16;4894:2;4890;4886:11;4850:75;:::i;4936:190::-;;5048:2;5036:9;5027:7;5023:23;5019:32;5016:2;;;5069:6;5061;5054:22;5016:2;-1:-1:-1;5097:23:1;;5006:120;-1:-1:-1;5006:120:1:o;5131:259::-;;5212:5;5206:12;5239:6;5234:3;5227:19;5255:63;5311:6;5304:4;5299:3;5295:14;5288:4;5281:5;5277:16;5255:63;:::i;:::-;5372:2;5351:15;-1:-1:-1;;5347:29:1;5338:39;;;;5379:4;5334:50;;5182:208;-1:-1:-1;;5182:208:1:o;5395:1532::-;;5657:6;5651:13;5683:4;5696:51;5740:6;5735:3;5730:2;5722:6;5718:15;5696:51;:::i;:::-;5810:13;;5769:16;;;;5832:55;5810:13;5769:16;5854:15;;;5832:55;:::i;:::-;5978:13;;5909:20;;;5949:3;;6055:1;6040:17;;6076:1;6112:18;;;;6139:2;;6217:4;6207:8;6203:19;6191:31;;6139:2;6280;6270:8;6267:16;6247:18;6244:40;6241:2;;;-1:-1:-1;;;6307:33:1;;6363:4;6360:1;6353:15;6393:4;6314:3;6381:17;6241:2;6424:18;6451:110;;;;6575:1;6570:332;;;;6417:485;;6451:110;-1:-1:-1;;6486:24:1;;6472:39;;6531:20;;;;-1:-1:-1;6451:110:1;;6570:332;6606:39;6638:6;6606:39;:::i;:::-;6667:3;6683:169;6697:8;6694:1;6691:15;6683:169;;;6779:14;;6764:13;;;6757:37;6822:16;;;;6714:10;;6683:169;;;6687:3;;6883:8;6876:5;6872:20;6865:27;;6417:485;-1:-1:-1;6918:3:1;;5627:1300;-1:-1:-1;;;;;;;;;;;5627:1300:1:o;6932:205::-;7132:3;7123:14::o;7142:203::-;-1:-1:-1;;;;;7306:32:1;;;;7288:51;;7276:2;7261:18;;7243:102::o;7574:490::-;-1:-1:-1;;;;;7843:15:1;;;7825:34;;7895:15;;7890:2;7875:18;;7868:43;7942:2;7927:18;;7920:34;;;7990:3;7985:2;7970:18;;7963:31;;;7574:490;;8011:47;;8038:19;;8030:6;8011:47;:::i;:::-;8003:55;7777:287;-1:-1:-1;;;;;;7777:287:1:o;8069:635::-;8240:2;8292:21;;;8362:13;;8265:18;;;8384:22;;;8069:635;;8240:2;8463:15;;;;8437:2;8422:18;;;8069:635;8509:169;8523:6;8520:1;8517:13;8509:169;;;8584:13;;8572:26;;8653:15;;;;8618:12;;;;8545:1;8538:9;8509:169;;;-1:-1:-1;8695:3:1;;8220:484;-1:-1:-1;;;;;;8220:484:1:o;8709:187::-;8874:14;;8867:22;8849:41;;8837:2;8822:18;;8804:92::o;8901:221::-;;9050:2;9039:9;9032:21;9070:46;9112:2;9101:9;9097:18;9089:6;9070:46;:::i;9127:348::-;9329:2;9311:21;;;9368:2;9348:18;;;9341:30;9407:26;9402:2;9387:18;;9380:54;9466:2;9451:18;;9301:174::o;9480:407::-;9682:2;9664:21;;;9721:2;9701:18;;;9694:30;9760:34;9755:2;9740:18;;9733:62;-1:-1:-1;;;9826:2:1;9811:18;;9804:41;9877:3;9862:19;;9654:233::o;9892:414::-;10094:2;10076:21;;;10133:2;10113:18;;;10106:30;10172:34;10167:2;10152:18;;10145:62;-1:-1:-1;;;10238:2:1;10223:18;;10216:48;10296:3;10281:19;;10066:240::o;10311:346::-;10513:2;10495:21;;;10552:2;10532:18;;;10525:30;-1:-1:-1;;;10586:2:1;10571:18;;10564:52;10648:2;10633:18;;10485:172::o;10662:402::-;10864:2;10846:21;;;10903:2;10883:18;;;10876:30;10942:34;10937:2;10922:18;;10915:62;-1:-1:-1;;;11008:2:1;10993:18;;10986:36;11054:3;11039:19;;10836:228::o;11069:352::-;11271:2;11253:21;;;11310:2;11290:18;;;11283:30;11349;11344:2;11329:18;;11322:58;11412:2;11397:18;;11243:178::o;11426:399::-;11628:2;11610:21;;;11667:2;11647:18;;;11640:30;11706:34;11701:2;11686:18;;11679:62;-1:-1:-1;;;11772:2:1;11757:18;;11750:33;11815:3;11800:19;;11600:225::o;11830:400::-;12032:2;12014:21;;;12071:2;12051:18;;;12044:30;12110:34;12105:2;12090:18;;12083:62;-1:-1:-1;;;12176:2:1;12161:18;;12154:34;12220:3;12205:19;;12004:226::o;12235:349::-;12437:2;12419:21;;;12476:2;12456:18;;;12449:30;12515:27;12510:2;12495:18;;12488:55;12575:2;12560:18;;12409:175::o;12589:352::-;12791:2;12773:21;;;12830:2;12810:18;;;12803:30;12869;12864:2;12849:18;;12842:58;12932:2;12917:18;;12763:178::o;12946:422::-;13148:2;13130:21;;;13187:2;13167:18;;;13160:30;13226:34;13221:2;13206:18;;13199:62;13297:28;13292:2;13277:18;;13270:56;13358:3;13343:19;;13120:248::o;13373:408::-;13575:2;13557:21;;;13614:2;13594:18;;;13587:30;13653:34;13648:2;13633:18;;13626:62;-1:-1:-1;;;13719:2:1;13704:18;;13697:42;13771:3;13756:19;;13547:234::o;13786:420::-;13988:2;13970:21;;;14027:2;14007:18;;;14000:30;14066:34;14061:2;14046:18;;14039:62;14137:26;14132:2;14117:18;;14110:54;14196:3;14181:19;;13960:246::o;14211:406::-;14413:2;14395:21;;;14452:2;14432:18;;;14425:30;14491:34;14486:2;14471:18;;14464:62;-1:-1:-1;;;14557:2:1;14542:18;;14535:40;14607:3;14592:19;;14385:232::o;14622:405::-;14824:2;14806:21;;;14863:2;14843:18;;;14836:30;14902:34;14897:2;14882:18;;14875:62;-1:-1:-1;;;14968:2:1;14953:18;;14946:39;15017:3;15002:19;;14796:231::o;15032:356::-;15234:2;15216:21;;;15253:18;;;15246:30;15312:34;15307:2;15292:18;;15285:62;15379:2;15364:18;;15206:182::o;15393:408::-;15595:2;15577:21;;;15634:2;15614:18;;;15607:30;15673:34;15668:2;15653:18;;15646:62;-1:-1:-1;;;15739:2:1;15724:18;;15717:42;15791:3;15776:19;;15567:234::o;15806:356::-;16008:2;15990:21;;;16027:18;;;16020:30;16086:34;16081:2;16066:18;;16059:62;16153:2;16138:18;;15980:182::o;16167:405::-;16369:2;16351:21;;;16408:2;16388:18;;;16381:30;16447:34;16442:2;16427:18;;16420:62;-1:-1:-1;;;16513:2:1;16498:18;;16491:39;16562:3;16547:19;;16341:231::o;16577:411::-;16779:2;16761:21;;;16818:2;16798:18;;;16791:30;16857:34;16852:2;16837:18;;16830:62;-1:-1:-1;;;16923:2:1;16908:18;;16901:45;16978:3;16963:19;;16751:237::o;16993:397::-;17195:2;17177:21;;;17234:2;17214:18;;;17207:30;17273:34;17268:2;17253:18;;17246:62;-1:-1:-1;;;17339:2:1;17324:18;;17317:31;17380:3;17365:19;;17167:223::o;17395:356::-;17597:2;17579:21;;;17616:18;;;17609:30;17675:34;17670:2;17655:18;;17648:62;17742:2;17727:18;;17569:182::o;17756:342::-;17958:2;17940:21;;;17997:2;17977:18;;;17970:30;-1:-1:-1;;;18031:2:1;18016:18;;18009:48;18089:2;18074:18;;17930:168::o;18103:413::-;18305:2;18287:21;;;18344:2;18324:18;;;18317:30;18383:34;18378:2;18363:18;;18356:62;-1:-1:-1;;;18449:2:1;18434:18;;18427:47;18506:3;18491:19;;18277:239::o;18521:343::-;18723:2;18705:21;;;18762:2;18742:18;;;18735:30;-1:-1:-1;;;18796:2:1;18781:18;;18774:49;18855:2;18840:18;;18695:169::o;18869:408::-;19071:2;19053:21;;;19110:2;19090:18;;;19083:30;19149:34;19144:2;19129:18;;19122:62;-1:-1:-1;;;19215:2:1;19200:18;;19193:42;19267:3;19252:19;;19043:234::o;19282:355::-;19484:2;19466:21;;;19523:2;19503:18;;;19496:30;19562:33;19557:2;19542:18;;19535:61;19628:2;19613:18;;19456:181::o;19642:344::-;19844:2;19826:21;;;19883:2;19863:18;;;19856:30;-1:-1:-1;;;19917:2:1;19902:18;;19895:50;19977:2;19962:18;;19816:170::o;19991:177::-;20137:25;;;20125:2;20110:18;;20092:76::o;20173:129::-;;20241:17;;;20291:4;20275:21;;;20231:71::o;20307:128::-;;20378:1;20374:6;20371:1;20368:13;20365:2;;;20384:18;;:::i;:::-;-1:-1:-1;20420:9:1;;20355:80::o;20440:120::-;;20506:1;20496:2;;20511:18;;:::i;:::-;-1:-1:-1;20545:9:1;;20486:74::o;20565:168::-;;20671:1;20667;20663:6;20659:14;20656:1;20653:21;20648:1;20641:9;20634:17;20630:45;20627:2;;;20678:18;;:::i;:::-;-1:-1:-1;20718:9:1;;20617:116::o;20738:125::-;;20806:1;20803;20800:8;20797:2;;;20811:18;;:::i;:::-;-1:-1:-1;20848:9:1;;20787:76::o;20868:258::-;20940:1;20950:113;20964:6;20961:1;20958:13;20950:113;;;21040:11;;;21034:18;21021:11;;;21014:39;20986:2;20979:10;20950:113;;;21081:6;21078:1;21075:13;21072:2;;;-1:-1:-1;;21116:1:1;21098:16;;21091:27;20921:205::o;21131:380::-;21216:1;21206:12;;21263:1;21253:12;;;21274:2;;21328:4;21320:6;21316:17;21306:27;;21274:2;21381;21373:6;21370:14;21350:18;21347:38;21344:2;;;21427:10;21422:3;21418:20;21415:1;21408:31;21462:4;21459:1;21452:15;21490:4;21487:1;21480:15;21344:2;;21186:325;;;:::o;21516:135::-;;-1:-1:-1;;21576:17:1;;21573:2;;;21596:18;;:::i;:::-;-1:-1:-1;21643:1:1;21632:13;;21563:88::o;21656:112::-;;21714:1;21704:2;;21719:18;;:::i;:::-;-1:-1:-1;21753:9:1;;21694:74::o;21773:127::-;21834:10;21829:3;21825:20;21822:1;21815:31;21865:4;21862:1;21855:15;21889:4;21886:1;21879:15;21905:127;21966:10;21961:3;21957:20;21954:1;21947:31;21997:4;21994:1;21987:15;22021:4;22018:1;22011:15;22037:127;22098:10;22093:3;22089:20;22086:1;22079:31;22129:4;22126:1;22119:15;22153:4;22150:1;22143:15;22169:133;-1:-1:-1;;;;;;22245:32:1;;22235:43;;22225:2;;22292:1;22289;22282:12
Swarm Source
ipfs://734a7cbb14180b4b073d997dcc22158db2e3997f3995b4a4eedaae8946f20095
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.