ETH Price: $2,354.26 (-0.47%)

Token

Double Up (DBLU)
 

Overview

Max Total Supply

251 DBLU

Holders

210

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 DBLU
0x205698CE308ac7Dd4bf2CDA5926836dcB0316E19
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DoubleUp

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-14
*/

// SPDX-License-Identifier: MIT
// File: @openzeppelin/contracts/utils/Strings.sol


// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;

    /**
     * @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);
    }

    /**
     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
     */
    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}

// File: @openzeppelin/contracts/utils/Address.sol


// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                /// @solidity memory-safe-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)

pragma solidity ^0.8.0;

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: @openzeppelin/contracts/utils/introspection/ERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;


/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

// File: @openzeppelin/contracts/token/ERC721/IERC721.sol


// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;


/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * 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;

    /**
     * @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 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 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 the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @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);
}

// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)

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);

    /**
     * @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/IERC721Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)

pragma solidity ^0.8.0;


/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

// File: @openzeppelin/contracts/security/ReentrancyGuard.sol


// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)

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 making 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/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: ERC721A.sol



pragma solidity ^0.8.4;









/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata and Enumerable extension. Built to optimize for lower gas during batch mints.
 *
 * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..).
 *
 * Assumes the number of issuable tokens (collection size) is capped and fits in a uint128.
 *
 * Does not support burning tokens to address(0).
 */
contract ERC721A is
  Context,
  ERC165,
  IERC721,
  IERC721Metadata,
  IERC721Enumerable
{
  using Address for address;
  using Strings for uint256;

  struct TokenOwnership {
    address addr;
    uint64 startTimestamp;
  }

  struct AddressData {
    uint128 balance;
    uint128 numberMinted;
  }

  uint256 private currentIndex = 0;

  uint256 internal immutable collectionSize;
  uint256 internal immutable maxBatchSize;

  // Token name
  string private _name;

  // Token symbol
  string private _symbol;

  // Mapping from token ID to ownership details
  // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details.
  mapping(uint256 => TokenOwnership) private _ownerships;

  // Mapping owner address to address data
  mapping(address => AddressData) private _addressData;

  // 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
   * `maxBatchSize` refers to how much a minter can mint at a time.
   * `collectionSize_` refers to how many tokens are in the collection.
   */
  constructor(
    string memory name_,
    string memory symbol_,
    uint256 _maxBatchSize,
    uint256 _collectionSize
  ) {
    require(
      _collectionSize > 0,
      "ERC721A: collection must have a nonzero supply"
    );
    require(_maxBatchSize > 0, "ERC721A: max batch size must be nonzero");
    _name = name_;
    _symbol = symbol_;
    maxBatchSize = _maxBatchSize;
    collectionSize = _collectionSize;
  }

  /**
   * @dev See {IERC721Enumerable-totalSupply}.
   */
  function totalSupply() public view override returns (uint256) {
    return currentIndex;
  }

  /**
   * @dev See {IERC721Enumerable-tokenByIndex}.
   */
  function tokenByIndex(uint256 index) public view override returns (uint256) {
    require(index < totalSupply(), "ERC721A: global index out of bounds");
    return index;
  }

  /**
   * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
   * This read function is O(collectionSize). If calling from a separate contract, be sure to test gas first.
   * It may also degrade with extremely large collection sizes (e.g >> 10000), test for your use case.
   */
  function tokenOfOwnerByIndex(address owner, uint256 index)
    public
    view
    override
    returns (uint256)
  {
    require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
    uint256 numMintedSoFar = totalSupply();
    uint256 tokenIdsIdx = 0;
    address currOwnershipAddr = address(0);
    for (uint256 i = 0; i < numMintedSoFar; i++) {
      TokenOwnership memory ownership = _ownerships[i];
      if (ownership.addr != address(0)) {
        currOwnershipAddr = ownership.addr;
      }
      if (currOwnershipAddr == owner) {
        if (tokenIdsIdx == index) {
          return i;
        }
        tokenIdsIdx++;
      }
    }
    revert("ERC721A: unable to get token of owner by index");
  }

  /**
   * @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 ||
      interfaceId == type(IERC721Enumerable).interfaceId ||
      super.supportsInterface(interfaceId);
  }

  /**
   * @dev See {IERC721-balanceOf}.
   */
  function balanceOf(address owner) public view override returns (uint256) {
    require(owner != address(0), "ERC721A: balance query for the zero address");
    return uint256(_addressData[owner].balance);
  }

  function _numberMinted(address owner) internal view returns (uint256) {
    require(
      owner != address(0),
      "ERC721A: number minted query for the zero address"
    );
    return uint256(_addressData[owner].numberMinted);
  }

  function ownershipOf(uint256 tokenId)
    internal
    view
    returns (TokenOwnership memory)
  {
    require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

    uint256 lowestTokenToCheck;
    if (tokenId >= maxBatchSize) {
      lowestTokenToCheck = tokenId - maxBatchSize + 1;
    }

    for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
      TokenOwnership memory ownership = _ownerships[curr];
      if (ownership.addr != address(0)) {
        return ownership;
      }
    }

    revert("ERC721A: unable to determine the owner of token");
  }

  /**
   * @dev See {IERC721-ownerOf}.
   */
  function ownerOf(uint256 tokenId) public view override returns (address) {
    return ownershipOf(tokenId).addr;
  }

  /**
   * @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 override {
    address owner = ERC721A.ownerOf(tokenId);
    require(to != owner, "ERC721A: approval to current owner");

    require(
      _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
      "ERC721A: approve caller is not owner nor approved for all"
    );

    _approve(to, tokenId, owner);
  }

  /**
   * @dev See {IERC721-getApproved}.
   */
  function getApproved(uint256 tokenId) public view override returns (address) {
    require(_exists(tokenId), "ERC721A: approved query for nonexistent token");

    return _tokenApprovals[tokenId];
  }

  /**
   * @dev See {IERC721-setApprovalForAll}.
   */
  function setApprovalForAll(address operator, bool approved) public override {
    require(operator != _msgSender(), "ERC721A: 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 override {
    _transfer(from, to, tokenId);
  }

  /**
   * @dev See {IERC721-safeTransferFrom}.
   */
  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId
  ) public override {
    safeTransferFrom(from, to, tokenId, "");
  }

  /**
   * @dev See {IERC721-safeTransferFrom}.
   */
  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId,
    bytes memory _data
  ) public override {
    _transfer(from, to, tokenId);
    require(
      _checkOnERC721Received(from, to, tokenId, _data),
      "ERC721A: 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`),
   */
  function _exists(uint256 tokenId) internal view returns (bool) {
    return tokenId < currentIndex;
  }

  function _safeMint(address to, uint256 quantity) internal {
    _safeMint(to, quantity, "");
  }

  /**
   * @dev Mints `quantity` tokens and transfers them to `to`.
   *
   * Requirements:
   *
   * - there must be `quantity` tokens remaining unminted in the total collection.
   * - `to` cannot be the zero address.
   * - `quantity` cannot be larger than the max batch size.
   *
   * Emits a {Transfer} event.
   */
  function _safeMint(
    address to,
    uint256 quantity,
    bytes memory _data
  ) internal {
    uint256 startTokenId = currentIndex;
    require(to != address(0), "ERC721A: mint to the zero address");
    // We know if the first token in the batch doesn't exist, the other ones don't as well, because of serial ordering.
    require(!_exists(startTokenId), "ERC721A: token already minted");
    require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");

    _beforeTokenTransfers(address(0), to, startTokenId, quantity);

    AddressData memory addressData = _addressData[to];
    _addressData[to] = AddressData(
      addressData.balance + uint128(quantity),
      addressData.numberMinted + uint128(quantity)
    );
    _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

    uint256 updatedIndex = startTokenId;

    for (uint256 i = 0; i < quantity; i++) {
      emit Transfer(address(0), to, updatedIndex);
      require(
        _checkOnERC721Received(address(0), to, updatedIndex, _data),
        "ERC721A: transfer to non ERC721Receiver implementer"
      );
      updatedIndex++;
    }

    currentIndex = updatedIndex;
    _afterTokenTransfers(address(0), to, startTokenId, quantity);
  }

  /**
   * @dev Transfers `tokenId` from `from` to `to`.
   *
   * 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
  ) private {
    TokenOwnership memory prevOwnership = ownershipOf(tokenId);

    bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
      getApproved(tokenId) == _msgSender() ||
      isApprovedForAll(prevOwnership.addr, _msgSender()));

    require(
      isApprovedOrOwner,
      "ERC721A: transfer caller is not owner nor approved"
    );

    require(
      prevOwnership.addr == from,
      "ERC721A: transfer from incorrect owner"
    );
    require(to != address(0), "ERC721A: transfer to the zero address");

    _beforeTokenTransfers(from, to, tokenId, 1);

    // Clear approvals from the previous owner
    _approve(address(0), tokenId, prevOwnership.addr);

    _addressData[from].balance -= 1;
    _addressData[to].balance += 1;
    _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));

    // If the ownership slot of tokenId+1 is not explicitly set, that means the transfer initiator owns it.
    // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls.
    uint256 nextTokenId = tokenId + 1;
    if (_ownerships[nextTokenId].addr == address(0)) {
      if (_exists(nextTokenId)) {
        _ownerships[nextTokenId] = TokenOwnership(
          prevOwnership.addr,
          prevOwnership.startTimestamp
        );
      }
    }

    emit Transfer(from, to, tokenId);
    _afterTokenTransfers(from, to, tokenId, 1);
  }

  /**
   * @dev Approve `to` to operate on `tokenId`
   *
   * Emits a {Approval} event.
   */
  function _approve(
    address to,
    uint256 tokenId,
    address owner
  ) private {
    _tokenApprovals[tokenId] = to;
    emit Approval(owner, to, tokenId);
  }

  uint256 public nextOwnerToExplicitlySet = 0;

  /**
   * @dev Explicitly set `owners` to eliminate loops in future calls of ownerOf().
   */
  function _setOwnersExplicit(uint256 quantity) internal {
    uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
    require(quantity > 0, "quantity must be nonzero");
    uint256 endIndex = oldNextOwnerToSet + quantity - 1;
    if (endIndex > collectionSize - 1) {
      endIndex = collectionSize - 1;
    }
    // We know if the last one in the group exists, all in the group exist, due to serial ordering.
    require(_exists(endIndex), "not enough minted yet for this cleanup");
    for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
      if (_ownerships[i].addr == address(0)) {
        TokenOwnership memory ownership = ownershipOf(i);
        _ownerships[i] = TokenOwnership(
          ownership.addr,
          ownership.startTimestamp
        );
      }
    }
    nextOwnerToExplicitlySet = endIndex + 1;
  }

  /**
   * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
   * The call is not executed if the target address is not a contract.
   *
   * @param from address representing the previous owner of the given token ID
   * @param to target address that will receive the tokens
   * @param tokenId uint256 ID of the token to be transferred
   * @param _data bytes optional data to send along with the call
   * @return bool whether the call correctly returned the expected magic value
   */
  function _checkOnERC721Received(
    address from,
    address to,
    uint256 tokenId,
    bytes memory _data
  ) private returns (bool) {
    if (to.isContract()) {
      try
        IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data)
      returns (bytes4 retval) {
        return retval == IERC721Receiver(to).onERC721Received.selector;
      } catch (bytes memory reason) {
        if (reason.length == 0) {
          revert("ERC721A: transfer to non ERC721Receiver implementer");
        } else {
          assembly {
            revert(add(32, reason), mload(reason))
          }
        }
      }
    } else {
      return true;
    }
  }

  /**
   * @dev Hook that is called before a set of serially-ordered token ids are about to be transferred. This includes minting.
   *
   * startTokenId - the first token id to be transferred
   * quantity - the amount to be transferred
   *
   * 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`.
   */
  function _beforeTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {}

  /**
   * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes
   * minting.
   *
   * startTokenId - the first token id to be transferred
   * quantity - the amount to be transferred
   *
   * Calling conditions:
   *
   * - when `from` and `to` are both non-zero.
   * - `from` and `to` are never both zero.
   */
  function _afterTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {}
}
// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: DoubleUp.sol



pragma solidity ^0.8.4;






contract DoubleUp is ERC721A, Ownable, ReentrancyGuard {
  using Strings for uint256;

  string public previewUrl;
  string public baseURI;
  string public provenance;
  string public baseExtension = ".json";
  uint256 public tierTwoPrice = 0.008 ether;
  uint256 public tierThreePrice = 0.016 ether;
  uint256 public tierFourPrice = 0.032 ether;
  uint256 public maxSupply = 800;
  uint256 public maxMintsPerWallet = 20;
  bool public paused = true;
  
  event Created(
    uint indexed count,
    address acc
  );

  constructor(
    string memory _name,
    string memory _symbol,
    string memory _baseURIString,
    uint256 _maxBatchSize,
    uint256 _collectionSize
  ) ERC721A(_name, _symbol, _maxBatchSize, _collectionSize) {
    setBaseURI(_baseURIString);
    setProvenance('0bdb7478a7a39941ee964f1344dccd35cc34ca3f226f0802a487bffbbc2ef043');
  }

  function tierOneMint(uint256 _mintAmount)
    external
    payable
  {
    uint256 supply = totalSupply();
    require(supply + _mintAmount <= maxSupply, "the supply has been minted out.");
    require(!paused, "Contract must be unpaused before minting");
    require(supply + _mintAmount <= 200, "The allocated free supply has been minted out. Please mint on a different tier function");
    require(numberMinted(msg.sender) + _mintAmount <= 2, "Max mints during free stage is 2 per tx");

    _safeMint(msg.sender, _mintAmount);
    emit Created(_mintAmount, msg.sender);
  }

  function tierTwoMint(uint256 _mintAmount)
    external
    payable
  {
    uint256 supply = totalSupply();
    require(supply + _mintAmount <= maxSupply, "the supply has been minted out.");
    require(!paused, "Contract must be unpaused before minting");
    require(supply + _mintAmount <= 400, "No more in this tier");
    require(msg.value >= tierTwoPrice * _mintAmount, "execution reverted as not enough value");    
    require(_mintAmount <= 3, "Max mint amount per transaction exceeded");
    require(numberMinted(msg.sender) + _mintAmount <= maxMintsPerWallet, "Max mints per wallet exceeded, 20 maximum");

    _safeMint(msg.sender, _mintAmount);
    emit Created(_mintAmount, msg.sender);
  } 

    function tierThreeMint(uint256 _mintAmount)
    external
    payable
  {
    uint256 supply = totalSupply();
    require(supply + _mintAmount <= maxSupply, "the supply has been minted out.");
    require(!paused, "Contract must be unpaused before minting");
    require(supply + _mintAmount <= 600, "No more in this tier");
    require(msg.value >= tierThreePrice * _mintAmount);    
    require(_mintAmount <= 3, "Max mint amount per transaction exceeded");
    require(numberMinted(msg.sender) + _mintAmount <= maxMintsPerWallet, "Max mints per wallet exceeded, 20 maximum");

    _safeMint(msg.sender, _mintAmount);
    emit Created(_mintAmount, msg.sender);
  }  

    function tierFourMint(uint256 _mintAmount)
    external
    payable
  {
    uint256 supply = totalSupply();
    require(supply + _mintAmount <= maxSupply, "the supply has been minted out.");
    require(!paused, "Contract must be unpaused before minting");
    require(supply + _mintAmount <= 800, "No more in this tier");
    require(msg.value >= tierFourPrice * _mintAmount);    
    require(_mintAmount <= 3, "Max mint amount per transaction exceeded");
    require(numberMinted(msg.sender) + _mintAmount <= maxMintsPerWallet, "Max mints per wallet exceeded, 20 maximum");

    _safeMint(msg.sender, _mintAmount);
    emit Created(_mintAmount, msg.sender);
  }  

  function devMint(uint256 _mintAmount)
    external
    payable
    onlyOwner
  {
    uint256 supply = totalSupply();
    require(supply + _mintAmount <= maxSupply, "Max supply has been minted.");

    _safeMint(msg.sender, _mintAmount);
    emit Created(_mintAmount, msg.sender);
  }    

  function tokenURI(uint256 tokenId)
    public
    view
    virtual
    override
    returns (string memory)
  {
    require(
      _exists(tokenId),
      "ERC721Metadata: URI query for nonexistent token"
    );
    string memory currentURI = bytes(baseURI).length > 0 ? baseURI : previewUrl;
    return string(abi.encodePacked(currentURI, tokenId.toString(), baseExtension));
  }

  function numberMinted(address owner) public view returns (uint256) {
    return _numberMinted(owner);
  }

  function getOwnershipData(uint256 tokenId)
    external
    view
    returns (TokenOwnership memory)
  {
    return ownershipOf(tokenId);
  }

  function setProvenance(string memory _provenance) public onlyOwner {
      provenance = _provenance;
  }
  function setPreviewUrl(string memory _previewUrl) public onlyOwner {
      previewUrl = _previewUrl;
  }

  function lowerSupply(uint256 _newMaxSupply) external onlyOwner {
    require(_newMaxSupply < maxSupply, "You can only lower the supply");  
    maxSupply = _newMaxSupply;
  }

  function setMaxMintsPerWallet(uint256 _maxMintsPerWallet) public onlyOwner {
    maxMintsPerWallet = _maxMintsPerWallet;
  }

  function setBaseURI(string memory _newBaseURI) public onlyOwner {
    baseURI = _newBaseURI;
  }

  function setBaseExtension(string memory _newBaseExtension) public onlyOwner {
    baseExtension = _newBaseExtension;
  }

  function setPaused(bool _state) public onlyOwner {
    paused = _state;
  }
 
  function withdraw() public payable onlyOwner {
    (bool success, ) = payable(msg.sender).call{value: address(this).balance}("");
    require(success);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURIString","type":"string"},{"internalType":"uint256","name":"_maxBatchSize","type":"uint256"},{"internalType":"uint256","name":"_collectionSize","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":"uint256","name":"count","type":"uint256"},{"indexed":false,"internalType":"address","name":"acc","type":"address"}],"name":"Created","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":"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":"_mintAmount","type":"uint256"}],"name":"devMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"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":"uint256","name":"_newMaxSupply","type":"uint256"}],"name":"lowerSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxMintsPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previewUrl","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"provenance","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_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":"_maxMintsPerWallet","type":"uint256"}],"name":"setMaxMintsPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_previewUrl","type":"string"}],"name":"setPreviewUrl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_provenance","type":"string"}],"name":"setProvenance","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":"_mintAmount","type":"uint256"}],"name":"tierFourMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"tierFourPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"tierOneMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"tierThreeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"tierThreePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"tierTwoMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"tierTwoPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

6000808055600755610100604052600560c081905264173539b7b760d91b60e09081526200003191600d9190620002e2565b50661c6bf526340000600e556638d7ea4c680000600f556671afd498d0000060105561032060115560146012556013805460ff191660011790553480156200007857600080fd5b5060405162003020380380620030208339810160408190526200009b916200043f565b84848383600081116200010c5760405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060448201526d6e6f6e7a65726f20737570706c7960901b60648201526084015b60405180910390fd5b600082116200016e5760405162461bcd60e51b815260206004820152602760248201527f455243373231413a206d61782062617463682073697a65206d757374206265206044820152666e6f6e7a65726f60c81b606482015260840162000103565b835162000183906001906020870190620002e2565b50825162000199906002906020860190620002e2565b5060a09190915260805250620001b1905033620001f0565b6001600955620001c18362000242565b620001e560405180606001604052806040815260200162002fe06040913962000265565b505050505062000536565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200024c62000284565b80516200026190600b906020840190620002e2565b5050565b6200026f62000284565b80516200026190600c906020840190620002e2565b6008546001600160a01b03163314620002e05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000103565b565b828054620002f090620004e3565b90600052602060002090601f0160209004810192826200031457600085556200035f565b82601f106200032f57805160ff19168380011785556200035f565b828001600101855582156200035f579182015b828111156200035f57825182559160200191906001019062000342565b506200036d92915062000371565b5090565b5b808211156200036d576000815560010162000372565b600082601f8301126200039a57600080fd5b81516001600160401b0380821115620003b757620003b762000520565b604051601f8301601f19908116603f01168101908282118183101715620003e257620003e262000520565b81604052838152602092508683858801011115620003ff57600080fd5b600091505b8382101562000423578582018301518183018401529082019062000404565b83821115620004355760008385830101525b9695505050505050565b600080600080600060a086880312156200045857600080fd5b85516001600160401b03808211156200047057600080fd5b6200047e89838a0162000388565b965060208801519150808211156200049557600080fd5b620004a389838a0162000388565b95506040880151915080821115620004ba57600080fd5b50620004c98882890162000388565b606088015160809098015196999598509695949350505050565b600181811c90821680620004f857607f821691505b602082108114156200051a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160a051612a796200056760003960008181611bea01528181611c1401526120cb015260005050612a796000f3fe6080604052600436106102725760003560e01c806370a082311161014f578063c87b56dd116100c1578063dc33e6811161007a578063dc33e681146106ed578063e985e9c51461070d578063eff1833514610756578063f2fde38b14610769578063f516a2e614610789578063ffe630b51461079f57600080fd5b8063c87b56dd14610658578063cee9d04314610678578063d5abeb011461068b578063d7224ba0146106a1578063d7e915d5146106b7578063da3ef23f146106cd57600080fd5b806395d89b411161011357806395d89b41146105ae578063963c3546146105c3578063a22cb465146105e3578063b88d4fde14610603578063c668286214610623578063c71538161461063857600080fd5b806370a08231146104f7578063715018a61461051757806374576d5c1461052c5780638da5cb5b146105425780639231ab2a1461056057600080fd5b80633a1bc8bc116101e85780634f6ccce7116101ac5780634f6ccce71461045357806354ef79fa1461047357806355f804b3146104885780635c975abb146104a85780636352211e146104c25780636c0360eb146104e257600080fd5b80633a1bc8bc146103e25780633ccfd60b146103f557806342842e0e146103fd5780634deaebb81461041d5780634e82dc891461043d57600080fd5b806316b9cac21161023a57806316b9cac21461033d57806316c38b3c1461035057806318160ddd1461037057806323b872dd1461038f5780632f745c59146103af578063375a069a146103cf57600080fd5b806301ffc9a71461027757806306fdde03146102ac578063081812fc146102ce578063095ea7b3146103065780630f7309e814610328575b600080fd5b34801561028357600080fd5b50610297610292366004612597565b6107bf565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102c161082c565b6040516102a39190612760565b3480156102da57600080fd5b506102ee6102e936600461261a565b6108be565b6040516001600160a01b0390911681526020016102a3565b34801561031257600080fd5b50610326610321366004612552565b61094e565b005b34801561033457600080fd5b506102c1610a66565b61032661034b36600461261a565b610af4565b34801561035c57600080fd5b5061032661036b36600461257c565b610ca2565b34801561037c57600080fd5b506000545b6040519081526020016102a3565b34801561039b57600080fd5b506103266103aa366004612470565b610cbd565b3480156103bb57600080fd5b506103816103ca366004612552565b610cc8565b6103266103dd36600461261a565b610e36565b6103266103f036600461261a565b610e9c565b61032661100b565b34801561040957600080fd5b50610326610418366004612470565b61106b565b34801561042957600080fd5b506103266104383660046125d1565b611086565b34801561044957600080fd5b50610381600f5481565b34801561045f57600080fd5b5061038161046e36600461261a565b6110a5565b34801561047f57600080fd5b506102c1611107565b34801561049457600080fd5b506103266104a33660046125d1565b611114565b3480156104b457600080fd5b506013546102979060ff1681565b3480156104ce57600080fd5b506102ee6104dd36600461261a565b61112f565b3480156104ee57600080fd5b506102c1611141565b34801561050357600080fd5b5061038161051236600461241b565b61114e565b34801561052357600080fd5b506103266111df565b34801561053857600080fd5b5061038160105481565b34801561054e57600080fd5b506008546001600160a01b03166102ee565b34801561056c57600080fd5b5061058061057b36600461261a565b6111f3565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff1692810192909252016102a3565b3480156105ba57600080fd5b506102c1611210565b3480156105cf57600080fd5b506103266105de36600461261a565b61121f565b3480156105ef57600080fd5b506103266105fe366004612528565b61122c565b34801561060f57600080fd5b5061032661061e3660046124ac565b6112f1565b34801561062f57600080fd5b506102c161132a565b34801561064457600080fd5b5061032661065336600461261a565b611337565b34801561066457600080fd5b506102c161067336600461261a565b611395565b61032661068636600461261a565b6114e7565b34801561069757600080fd5b5061038160115481565b3480156106ad57600080fd5b5061038160075481565b3480156106c357600080fd5b50610381600e5481565b3480156106d957600080fd5b506103266106e83660046125d1565b611571565b3480156106f957600080fd5b5061038161070836600461241b565b61158c565b34801561071957600080fd5b5061029761072836600461243d565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b61032661076436600461261a565b611597565b34801561077557600080fd5b5061032661078436600461241b565b61167f565b34801561079557600080fd5b5061038160125481565b3480156107ab57600080fd5b506103266107ba3660046125d1565b6116f5565b60006001600160e01b031982166380ac58cd60e01b14806107f057506001600160e01b03198216635b5e139f60e01b145b8061080b57506001600160e01b0319821663780e9d6360e01b145b8061082657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606001805461083b9061296b565b80601f01602080910402602001604051908101604052809291908181526020018280546108679061296b565b80156108b45780601f10610889576101008083540402835291602001916108b4565b820191906000526020600020905b81548152906001019060200180831161089757829003601f168201915b5050505050905090565b60006108cb826000541190565b6109325760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b60006109598261112f565b9050806001600160a01b0316836001600160a01b031614156109c85760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610929565b336001600160a01b03821614806109e457506109e48133610728565b610a565760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610929565b610a61838383611710565b505050565b600c8054610a739061296b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f9061296b565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b505050505081565b600054601154610b04838361289e565b1115610b225760405162461bcd60e51b81526004016109299061280e565b60135460ff1615610b455760405162461bcd60e51b815260040161092990612773565b60c8610b51838361289e565b1115610beb5760405162461bcd60e51b815260206004820152605760248201527f54686520616c6c6f6361746564206672656520737570706c792068617320626560448201527f656e206d696e746564206f75742e20506c65617365206d696e74206f6e20612060648201527f646966666572656e7420746965722066756e6374696f6e000000000000000000608482015260a401610929565b600282610bf73361158c565b610c01919061289e565b1115610c5f5760405162461bcd60e51b815260206004820152602760248201527f4d6178206d696e747320647572696e6720667265652073746167652069732032604482015266040e0cae440e8f60cb1b6064820152608401610929565b610c69338361176c565b60405133815282907f7757890bcab34d673dfca6b71df1b57f75a2fe4231d6e8de726caf534ab1fdd69060200160405180910390a25050565b610caa611786565b6013805460ff1916911515919091179055565b610a618383836117e0565b6000610cd38361114e565b8210610d2c5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610929565b600080549080805b83811015610dd6576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610d8757805192505b876001600160a01b0316836001600160a01b03161415610dc35786841415610db55750935061082692505050565b83610dbf816129a6565b9450505b5080610dce816129a6565b915050610d34565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610929565b610e3e611786565b600054601154610e4e838361289e565b1115610c5f5760405162461bcd60e51b815260206004820152601b60248201527f4d617820737570706c7920686173206265656e206d696e7465642e00000000006044820152606401610929565b600054601154610eac838361289e565b1115610eca5760405162461bcd60e51b81526004016109299061280e565b60135460ff1615610eed5760405162461bcd60e51b815260040161092990612773565b610258610efa838361289e565b1115610f185760405162461bcd60e51b815260040161092990612845565b81600f54610f2691906128ca565b341015610f3257600080fd5b6003821115610f945760405162461bcd60e51b815260206004820152602860248201527f4d6178206d696e7420616d6f756e7420706572207472616e73616374696f6e20604482015267195e18d95959195960c21b6064820152608401610929565b60125482610fa13361158c565b610fab919061289e565b1115610c5f5760405162461bcd60e51b815260206004820152602960248201527f4d6178206d696e7473207065722077616c6c65742065786365656465642c203260448201526830206d6178696d756d60b81b6064820152608401610929565b611013611786565b604051600090339047908381818185875af1925050503d8060008114611055576040519150601f19603f3d011682016040523d82523d6000602084013e61105a565b606091505b505090508061106857600080fd5b50565b610a61838383604051806020016040528060008152506112f1565b61108e611786565b80516110a190600a9060208401906122e9565b5050565b6000805482106111035760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610929565b5090565b600a8054610a739061296b565b61111c611786565b80516110a190600b9060208401906122e9565b600061113a82611b68565b5192915050565b600b8054610a739061296b565b60006001600160a01b0382166111ba5760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610929565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6111e7611786565b6111f16000611d12565b565b604080518082019091526000808252602082015261082682611b68565b60606002805461083b9061296b565b611227611786565b601255565b6001600160a01b0382163314156112855760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610929565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6112fc8484846117e0565b61130884848484611d64565b6113245760405162461bcd60e51b8152600401610929906127bb565b50505050565b600d8054610a739061296b565b61133f611786565b60115481106113905760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e206f6e6c79206c6f7765722074686520737570706c790000006044820152606401610929565b601155565b60606113a2826000541190565b6114065760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610929565b600080600b80546114169061296b565b90501161142457600a611427565b600b5b80546114329061296b565b80601f016020809104026020016040519081016040528092919081815260200182805461145e9061296b565b80156114ab5780601f10611480576101008083540402835291602001916114ab565b820191906000526020600020905b81548152906001019060200180831161148e57829003601f168201915b50505050509050806114bc84611e72565b600d6040516020016114d09392919061265f565b604051602081830303815290604052915050919050565b6000546011546114f7838361289e565b11156115155760405162461bcd60e51b81526004016109299061280e565b60135460ff16156115385760405162461bcd60e51b815260040161092990612773565b610320611545838361289e565b11156115635760405162461bcd60e51b815260040161092990612845565b81601054610f2691906128ca565b611579611786565b80516110a190600d9060208401906122e9565b600061082682611f70565b6000546011546115a7838361289e565b11156115c55760405162461bcd60e51b81526004016109299061280e565b60135460ff16156115e85760405162461bcd60e51b815260040161092990612773565b6101906115f5838361289e565b11156116135760405162461bcd60e51b815260040161092990612845565b81600e5461162191906128ca565b341015610f325760405162461bcd60e51b815260206004820152602660248201527f657865637574696f6e207265766572746564206173206e6f7420656e6f7567686044820152652076616c756560d01b6064820152608401610929565b611687611786565b6001600160a01b0381166116ec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610929565b61106881611d12565b6116fd611786565b80516110a190600c9060208401906122e9565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6110a182826040518060200160405280600081525061200e565b6008546001600160a01b031633146111f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610929565b60006117eb82611b68565b80519091506000906001600160a01b0316336001600160a01b03161480611822575033611817846108be565b6001600160a01b0316145b80611834575081516118349033610728565b90508061189e5760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610929565b846001600160a01b031682600001516001600160a01b0316146119125760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610929565b6001600160a01b0384166119765760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610929565b6119866000848460000151611710565b6001600160a01b03851660009081526004602052604081208054600192906119b89084906001600160801b03166128e9565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03861660009081526004602052604081208054600194509092611a0491859116612873565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b03808716825267ffffffffffffffff428116602080850191825260008981526003909152948520935184549151909216600160a01b026001600160e01b03199091169190921617179055611a8c84600161289e565b6000818152600360205260409020549091506001600160a01b0316611b1e57611ab6816000541190565b15611b1e5760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600390935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6040805180820190915260008082526020820152611b87826000541190565b611be65760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610929565b60007f00000000000000000000000000000000000000000000000000000000000000008310611c4757611c397f000000000000000000000000000000000000000000000000000000000000000084612911565b611c4490600161289e565b90505b825b818110611cb1576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611c9e57949350505050565b5080611ca981612954565b915050611c49565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b6064820152608401610929565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160a01b0384163b15611e6657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611da8903390899088908890600401612723565b602060405180830381600087803b158015611dc257600080fd5b505af1925050508015611df2575060408051601f3d908101601f19168201909252611def918101906125b4565b60015b611e4c573d808015611e20576040519150601f19603f3d011682016040523d82523d6000602084013e611e25565b606091505b508051611e445760405162461bcd60e51b8152600401610929906127bb565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611e6a565b5060015b949350505050565b606081611e965750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611ec05780611eaa816129a6565b9150611eb99050600a836128b6565b9150611e9a565b60008167ffffffffffffffff811115611edb57611edb612a17565b6040519080825280601f01601f191660200182016040528015611f05576020820181803683370190505b5090505b8415611e6a57611f1a600183612911565b9150611f27600a866129c1565b611f3290603061289e565b60f81b818381518110611f4757611f47612a01565b60200101906001600160f81b031916908160001a905350611f69600a866128b6565b9450611f09565b60006001600160a01b038216611fe25760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527020746865207a65726f206164647265737360781b6064820152608401610929565b506001600160a01b0316600090815260046020526040902054600160801b90046001600160801b031690565b6000546001600160a01b0384166120715760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610929565b61207c816000541190565b156120c95760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610929565b7f00000000000000000000000000000000000000000000000000000000000000008311156121445760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b6064820152608401610929565b6001600160a01b0384166000908152600460209081526040918290208251808401845290546001600160801b038082168352600160801b90910416918101919091528151808301909252805190919081906121a0908790612873565b6001600160801b031681526020018583602001516121be9190612873565b6001600160801b039081169091526001600160a01b0380881660008181526004602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526003909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b858110156122de5760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46122a26000888488611d64565b6122be5760405162461bcd60e51b8152600401610929906127bb565b816122c8816129a6565b92505080806122d6906129a6565b915050612255565b506000819055611b60565b8280546122f59061296b565b90600052602060002090601f016020900481019282612317576000855561235d565b82601f1061233057805160ff191683800117855561235d565b8280016001018555821561235d579182015b8281111561235d578251825591602001919060010190612342565b506111039291505b808211156111035760008155600101612365565b600067ffffffffffffffff8084111561239457612394612a17565b604051601f8501601f19908116603f011681019082821181831017156123bc576123bc612a17565b816040528093508581528686860111156123d557600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461240657600080fd5b919050565b8035801515811461240657600080fd5b60006020828403121561242d57600080fd5b612436826123ef565b9392505050565b6000806040838503121561245057600080fd5b612459836123ef565b9150612467602084016123ef565b90509250929050565b60008060006060848603121561248557600080fd5b61248e846123ef565b925061249c602085016123ef565b9150604084013590509250925092565b600080600080608085870312156124c257600080fd5b6124cb856123ef565b93506124d9602086016123ef565b925060408501359150606085013567ffffffffffffffff8111156124fc57600080fd5b8501601f8101871361250d57600080fd5b61251c87823560208401612379565b91505092959194509250565b6000806040838503121561253b57600080fd5b612544836123ef565b91506124676020840161240b565b6000806040838503121561256557600080fd5b61256e836123ef565b946020939093013593505050565b60006020828403121561258e57600080fd5b6124368261240b565b6000602082840312156125a957600080fd5b813561243681612a2d565b6000602082840312156125c657600080fd5b815161243681612a2d565b6000602082840312156125e357600080fd5b813567ffffffffffffffff8111156125fa57600080fd5b8201601f8101841361260b57600080fd5b611e6a84823560208401612379565b60006020828403121561262c57600080fd5b5035919050565b6000815180845261264b816020860160208601612928565b601f01601f19169290920160200192915050565b6000845160206126728285838a01612928565b8551918401916126858184848a01612928565b8554920191600090600181811c90808316806126a257607f831692505b8583108114156126c057634e487b7160e01b85526022600452602485fd5b8080156126d457600181146126e557612712565b60ff19851688528388019550612712565b60008b81526020902060005b8581101561270a5781548a8201529084019088016126f1565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061275690830184612633565b9695505050505050565b6020815260006124366020830184612633565b60208082526028908201527f436f6e7472616374206d75737420626520756e706175736564206265666f7265604082015267206d696e74696e6760c01b606082015260800190565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b6020808252601f908201527f74686520737570706c7920686173206265656e206d696e746564206f75742e00604082015260600190565b60208082526014908201527327379036b7b9329034b7103a3434b9903a34b2b960611b604082015260600190565b60006001600160801b03808316818516808303821115612895576128956129d5565b01949350505050565b600082198211156128b1576128b16129d5565b500190565b6000826128c5576128c56129eb565b500490565b60008160001904831182151516156128e4576128e46129d5565b500290565b60006001600160801b0383811690831681811015612909576129096129d5565b039392505050565b600082821015612923576129236129d5565b500390565b60005b8381101561294357818101518382015260200161292b565b838111156113245750506000910152565b600081612963576129636129d5565b506000190190565b600181811c9082168061297f57607f821691505b602082108114156129a057634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129ba576129ba6129d5565b5060010190565b6000826129d0576129d06129eb565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461106857600080fdfea2646970667358221220cc605773faf1b1f108c58d2cb80231203313a351a40af4593e9c174599cf491664736f6c634300080700333062646237343738613761333939343165653936346631333434646363643335636333346361336632323666303830326134383762666662626332656630343300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000009446f75626c652055700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000444424c5500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005468747470733a2f2f646f75626c6575702e6d7970696e6174612e636c6f75642f697066732f516d5555776853697a4b574142366152454e64724c384b7369375072424e5a4a38526e4b647631653251743131752f000000000000000000000000

Deployed Bytecode

0x6080604052600436106102725760003560e01c806370a082311161014f578063c87b56dd116100c1578063dc33e6811161007a578063dc33e681146106ed578063e985e9c51461070d578063eff1833514610756578063f2fde38b14610769578063f516a2e614610789578063ffe630b51461079f57600080fd5b8063c87b56dd14610658578063cee9d04314610678578063d5abeb011461068b578063d7224ba0146106a1578063d7e915d5146106b7578063da3ef23f146106cd57600080fd5b806395d89b411161011357806395d89b41146105ae578063963c3546146105c3578063a22cb465146105e3578063b88d4fde14610603578063c668286214610623578063c71538161461063857600080fd5b806370a08231146104f7578063715018a61461051757806374576d5c1461052c5780638da5cb5b146105425780639231ab2a1461056057600080fd5b80633a1bc8bc116101e85780634f6ccce7116101ac5780634f6ccce71461045357806354ef79fa1461047357806355f804b3146104885780635c975abb146104a85780636352211e146104c25780636c0360eb146104e257600080fd5b80633a1bc8bc146103e25780633ccfd60b146103f557806342842e0e146103fd5780634deaebb81461041d5780634e82dc891461043d57600080fd5b806316b9cac21161023a57806316b9cac21461033d57806316c38b3c1461035057806318160ddd1461037057806323b872dd1461038f5780632f745c59146103af578063375a069a146103cf57600080fd5b806301ffc9a71461027757806306fdde03146102ac578063081812fc146102ce578063095ea7b3146103065780630f7309e814610328575b600080fd5b34801561028357600080fd5b50610297610292366004612597565b6107bf565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102c161082c565b6040516102a39190612760565b3480156102da57600080fd5b506102ee6102e936600461261a565b6108be565b6040516001600160a01b0390911681526020016102a3565b34801561031257600080fd5b50610326610321366004612552565b61094e565b005b34801561033457600080fd5b506102c1610a66565b61032661034b36600461261a565b610af4565b34801561035c57600080fd5b5061032661036b36600461257c565b610ca2565b34801561037c57600080fd5b506000545b6040519081526020016102a3565b34801561039b57600080fd5b506103266103aa366004612470565b610cbd565b3480156103bb57600080fd5b506103816103ca366004612552565b610cc8565b6103266103dd36600461261a565b610e36565b6103266103f036600461261a565b610e9c565b61032661100b565b34801561040957600080fd5b50610326610418366004612470565b61106b565b34801561042957600080fd5b506103266104383660046125d1565b611086565b34801561044957600080fd5b50610381600f5481565b34801561045f57600080fd5b5061038161046e36600461261a565b6110a5565b34801561047f57600080fd5b506102c1611107565b34801561049457600080fd5b506103266104a33660046125d1565b611114565b3480156104b457600080fd5b506013546102979060ff1681565b3480156104ce57600080fd5b506102ee6104dd36600461261a565b61112f565b3480156104ee57600080fd5b506102c1611141565b34801561050357600080fd5b5061038161051236600461241b565b61114e565b34801561052357600080fd5b506103266111df565b34801561053857600080fd5b5061038160105481565b34801561054e57600080fd5b506008546001600160a01b03166102ee565b34801561056c57600080fd5b5061058061057b36600461261a565b6111f3565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff1692810192909252016102a3565b3480156105ba57600080fd5b506102c1611210565b3480156105cf57600080fd5b506103266105de36600461261a565b61121f565b3480156105ef57600080fd5b506103266105fe366004612528565b61122c565b34801561060f57600080fd5b5061032661061e3660046124ac565b6112f1565b34801561062f57600080fd5b506102c161132a565b34801561064457600080fd5b5061032661065336600461261a565b611337565b34801561066457600080fd5b506102c161067336600461261a565b611395565b61032661068636600461261a565b6114e7565b34801561069757600080fd5b5061038160115481565b3480156106ad57600080fd5b5061038160075481565b3480156106c357600080fd5b50610381600e5481565b3480156106d957600080fd5b506103266106e83660046125d1565b611571565b3480156106f957600080fd5b5061038161070836600461241b565b61158c565b34801561071957600080fd5b5061029761072836600461243d565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b61032661076436600461261a565b611597565b34801561077557600080fd5b5061032661078436600461241b565b61167f565b34801561079557600080fd5b5061038160125481565b3480156107ab57600080fd5b506103266107ba3660046125d1565b6116f5565b60006001600160e01b031982166380ac58cd60e01b14806107f057506001600160e01b03198216635b5e139f60e01b145b8061080b57506001600160e01b0319821663780e9d6360e01b145b8061082657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606001805461083b9061296b565b80601f01602080910402602001604051908101604052809291908181526020018280546108679061296b565b80156108b45780601f10610889576101008083540402835291602001916108b4565b820191906000526020600020905b81548152906001019060200180831161089757829003601f168201915b5050505050905090565b60006108cb826000541190565b6109325760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b60006109598261112f565b9050806001600160a01b0316836001600160a01b031614156109c85760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610929565b336001600160a01b03821614806109e457506109e48133610728565b610a565760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610929565b610a61838383611710565b505050565b600c8054610a739061296b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f9061296b565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b505050505081565b600054601154610b04838361289e565b1115610b225760405162461bcd60e51b81526004016109299061280e565b60135460ff1615610b455760405162461bcd60e51b815260040161092990612773565b60c8610b51838361289e565b1115610beb5760405162461bcd60e51b815260206004820152605760248201527f54686520616c6c6f6361746564206672656520737570706c792068617320626560448201527f656e206d696e746564206f75742e20506c65617365206d696e74206f6e20612060648201527f646966666572656e7420746965722066756e6374696f6e000000000000000000608482015260a401610929565b600282610bf73361158c565b610c01919061289e565b1115610c5f5760405162461bcd60e51b815260206004820152602760248201527f4d6178206d696e747320647572696e6720667265652073746167652069732032604482015266040e0cae440e8f60cb1b6064820152608401610929565b610c69338361176c565b60405133815282907f7757890bcab34d673dfca6b71df1b57f75a2fe4231d6e8de726caf534ab1fdd69060200160405180910390a25050565b610caa611786565b6013805460ff1916911515919091179055565b610a618383836117e0565b6000610cd38361114e565b8210610d2c5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610929565b600080549080805b83811015610dd6576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610d8757805192505b876001600160a01b0316836001600160a01b03161415610dc35786841415610db55750935061082692505050565b83610dbf816129a6565b9450505b5080610dce816129a6565b915050610d34565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610929565b610e3e611786565b600054601154610e4e838361289e565b1115610c5f5760405162461bcd60e51b815260206004820152601b60248201527f4d617820737570706c7920686173206265656e206d696e7465642e00000000006044820152606401610929565b600054601154610eac838361289e565b1115610eca5760405162461bcd60e51b81526004016109299061280e565b60135460ff1615610eed5760405162461bcd60e51b815260040161092990612773565b610258610efa838361289e565b1115610f185760405162461bcd60e51b815260040161092990612845565b81600f54610f2691906128ca565b341015610f3257600080fd5b6003821115610f945760405162461bcd60e51b815260206004820152602860248201527f4d6178206d696e7420616d6f756e7420706572207472616e73616374696f6e20604482015267195e18d95959195960c21b6064820152608401610929565b60125482610fa13361158c565b610fab919061289e565b1115610c5f5760405162461bcd60e51b815260206004820152602960248201527f4d6178206d696e7473207065722077616c6c65742065786365656465642c203260448201526830206d6178696d756d60b81b6064820152608401610929565b611013611786565b604051600090339047908381818185875af1925050503d8060008114611055576040519150601f19603f3d011682016040523d82523d6000602084013e61105a565b606091505b505090508061106857600080fd5b50565b610a61838383604051806020016040528060008152506112f1565b61108e611786565b80516110a190600a9060208401906122e9565b5050565b6000805482106111035760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610929565b5090565b600a8054610a739061296b565b61111c611786565b80516110a190600b9060208401906122e9565b600061113a82611b68565b5192915050565b600b8054610a739061296b565b60006001600160a01b0382166111ba5760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610929565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6111e7611786565b6111f16000611d12565b565b604080518082019091526000808252602082015261082682611b68565b60606002805461083b9061296b565b611227611786565b601255565b6001600160a01b0382163314156112855760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610929565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6112fc8484846117e0565b61130884848484611d64565b6113245760405162461bcd60e51b8152600401610929906127bb565b50505050565b600d8054610a739061296b565b61133f611786565b60115481106113905760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e206f6e6c79206c6f7765722074686520737570706c790000006044820152606401610929565b601155565b60606113a2826000541190565b6114065760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610929565b600080600b80546114169061296b565b90501161142457600a611427565b600b5b80546114329061296b565b80601f016020809104026020016040519081016040528092919081815260200182805461145e9061296b565b80156114ab5780601f10611480576101008083540402835291602001916114ab565b820191906000526020600020905b81548152906001019060200180831161148e57829003601f168201915b50505050509050806114bc84611e72565b600d6040516020016114d09392919061265f565b604051602081830303815290604052915050919050565b6000546011546114f7838361289e565b11156115155760405162461bcd60e51b81526004016109299061280e565b60135460ff16156115385760405162461bcd60e51b815260040161092990612773565b610320611545838361289e565b11156115635760405162461bcd60e51b815260040161092990612845565b81601054610f2691906128ca565b611579611786565b80516110a190600d9060208401906122e9565b600061082682611f70565b6000546011546115a7838361289e565b11156115c55760405162461bcd60e51b81526004016109299061280e565b60135460ff16156115e85760405162461bcd60e51b815260040161092990612773565b6101906115f5838361289e565b11156116135760405162461bcd60e51b815260040161092990612845565b81600e5461162191906128ca565b341015610f325760405162461bcd60e51b815260206004820152602660248201527f657865637574696f6e207265766572746564206173206e6f7420656e6f7567686044820152652076616c756560d01b6064820152608401610929565b611687611786565b6001600160a01b0381166116ec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610929565b61106881611d12565b6116fd611786565b80516110a190600c9060208401906122e9565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6110a182826040518060200160405280600081525061200e565b6008546001600160a01b031633146111f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610929565b60006117eb82611b68565b80519091506000906001600160a01b0316336001600160a01b03161480611822575033611817846108be565b6001600160a01b0316145b80611834575081516118349033610728565b90508061189e5760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610929565b846001600160a01b031682600001516001600160a01b0316146119125760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610929565b6001600160a01b0384166119765760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610929565b6119866000848460000151611710565b6001600160a01b03851660009081526004602052604081208054600192906119b89084906001600160801b03166128e9565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03861660009081526004602052604081208054600194509092611a0491859116612873565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b03808716825267ffffffffffffffff428116602080850191825260008981526003909152948520935184549151909216600160a01b026001600160e01b03199091169190921617179055611a8c84600161289e565b6000818152600360205260409020549091506001600160a01b0316611b1e57611ab6816000541190565b15611b1e5760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600390935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6040805180820190915260008082526020820152611b87826000541190565b611be65760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610929565b60007f000000000000000000000000000000000000000000000000000000000000000a8310611c4757611c397f000000000000000000000000000000000000000000000000000000000000000a84612911565b611c4490600161289e565b90505b825b818110611cb1576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611c9e57949350505050565b5080611ca981612954565b915050611c49565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b6064820152608401610929565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160a01b0384163b15611e6657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611da8903390899088908890600401612723565b602060405180830381600087803b158015611dc257600080fd5b505af1925050508015611df2575060408051601f3d908101601f19168201909252611def918101906125b4565b60015b611e4c573d808015611e20576040519150601f19603f3d011682016040523d82523d6000602084013e611e25565b606091505b508051611e445760405162461bcd60e51b8152600401610929906127bb565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611e6a565b5060015b949350505050565b606081611e965750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611ec05780611eaa816129a6565b9150611eb99050600a836128b6565b9150611e9a565b60008167ffffffffffffffff811115611edb57611edb612a17565b6040519080825280601f01601f191660200182016040528015611f05576020820181803683370190505b5090505b8415611e6a57611f1a600183612911565b9150611f27600a866129c1565b611f3290603061289e565b60f81b818381518110611f4757611f47612a01565b60200101906001600160f81b031916908160001a905350611f69600a866128b6565b9450611f09565b60006001600160a01b038216611fe25760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527020746865207a65726f206164647265737360781b6064820152608401610929565b506001600160a01b0316600090815260046020526040902054600160801b90046001600160801b031690565b6000546001600160a01b0384166120715760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610929565b61207c816000541190565b156120c95760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610929565b7f000000000000000000000000000000000000000000000000000000000000000a8311156121445760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b6064820152608401610929565b6001600160a01b0384166000908152600460209081526040918290208251808401845290546001600160801b038082168352600160801b90910416918101919091528151808301909252805190919081906121a0908790612873565b6001600160801b031681526020018583602001516121be9190612873565b6001600160801b039081169091526001600160a01b0380881660008181526004602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526003909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b858110156122de5760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46122a26000888488611d64565b6122be5760405162461bcd60e51b8152600401610929906127bb565b816122c8816129a6565b92505080806122d6906129a6565b915050612255565b506000819055611b60565b8280546122f59061296b565b90600052602060002090601f016020900481019282612317576000855561235d565b82601f1061233057805160ff191683800117855561235d565b8280016001018555821561235d579182015b8281111561235d578251825591602001919060010190612342565b506111039291505b808211156111035760008155600101612365565b600067ffffffffffffffff8084111561239457612394612a17565b604051601f8501601f19908116603f011681019082821181831017156123bc576123bc612a17565b816040528093508581528686860111156123d557600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461240657600080fd5b919050565b8035801515811461240657600080fd5b60006020828403121561242d57600080fd5b612436826123ef565b9392505050565b6000806040838503121561245057600080fd5b612459836123ef565b9150612467602084016123ef565b90509250929050565b60008060006060848603121561248557600080fd5b61248e846123ef565b925061249c602085016123ef565b9150604084013590509250925092565b600080600080608085870312156124c257600080fd5b6124cb856123ef565b93506124d9602086016123ef565b925060408501359150606085013567ffffffffffffffff8111156124fc57600080fd5b8501601f8101871361250d57600080fd5b61251c87823560208401612379565b91505092959194509250565b6000806040838503121561253b57600080fd5b612544836123ef565b91506124676020840161240b565b6000806040838503121561256557600080fd5b61256e836123ef565b946020939093013593505050565b60006020828403121561258e57600080fd5b6124368261240b565b6000602082840312156125a957600080fd5b813561243681612a2d565b6000602082840312156125c657600080fd5b815161243681612a2d565b6000602082840312156125e357600080fd5b813567ffffffffffffffff8111156125fa57600080fd5b8201601f8101841361260b57600080fd5b611e6a84823560208401612379565b60006020828403121561262c57600080fd5b5035919050565b6000815180845261264b816020860160208601612928565b601f01601f19169290920160200192915050565b6000845160206126728285838a01612928565b8551918401916126858184848a01612928565b8554920191600090600181811c90808316806126a257607f831692505b8583108114156126c057634e487b7160e01b85526022600452602485fd5b8080156126d457600181146126e557612712565b60ff19851688528388019550612712565b60008b81526020902060005b8581101561270a5781548a8201529084019088016126f1565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061275690830184612633565b9695505050505050565b6020815260006124366020830184612633565b60208082526028908201527f436f6e7472616374206d75737420626520756e706175736564206265666f7265604082015267206d696e74696e6760c01b606082015260800190565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b6020808252601f908201527f74686520737570706c7920686173206265656e206d696e746564206f75742e00604082015260600190565b60208082526014908201527327379036b7b9329034b7103a3434b9903a34b2b960611b604082015260600190565b60006001600160801b03808316818516808303821115612895576128956129d5565b01949350505050565b600082198211156128b1576128b16129d5565b500190565b6000826128c5576128c56129eb565b500490565b60008160001904831182151516156128e4576128e46129d5565b500290565b60006001600160801b0383811690831681811015612909576129096129d5565b039392505050565b600082821015612923576129236129d5565b500390565b60005b8381101561294357818101518382015260200161292b565b838111156113245750506000910152565b600081612963576129636129d5565b506000190190565b600181811c9082168061297f57607f821691505b602082108114156129a057634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129ba576129ba6129d5565b5060010190565b6000826129d0576129d06129eb565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461106857600080fdfea2646970667358221220cc605773faf1b1f108c58d2cb80231203313a351a40af4593e9c174599cf491664736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000009446f75626c652055700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000444424c5500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005468747470733a2f2f646f75626c6575702e6d7970696e6174612e636c6f75642f697066732f516d5555776853697a4b574142366152454e64724c384b7369375072424e5a4a38526e4b647631653251743131752f000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Double Up
Arg [1] : _symbol (string): DBLU
Arg [2] : _baseURIString (string): https://doubleup.mypinata.cloud/ipfs/QmUUwhSizKWAB6aRENdrL8Ksi7PrBNZJ8RnKdv1e2Qt11u/
Arg [3] : _maxBatchSize (uint256): 10
Arg [4] : _collectionSize (uint256): 800

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000320
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [6] : 446f75626c652055700000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [8] : 44424c5500000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000054
Arg [10] : 68747470733a2f2f646f75626c6575702e6d7970696e6174612e636c6f75642f
Arg [11] : 697066732f516d5555776853697a4b574142366152454e64724c384b73693750
Arg [12] : 72424e5a4a38526e4b647631653251743131752f000000000000000000000000


Deployed Bytecode Sourcemap

43315:5568:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28247:370;;;;;;;;;;-1:-1:-1;28247:370:0;;;;;:::i;:::-;;:::i;:::-;;;7170:14:1;;7163:22;7145:41;;7133:2;7118:18;28247:370:0;;;;;;;;29973:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;31498:204::-;;;;;;;;;;-1:-1:-1;31498:204:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6468:32:1;;;6450:51;;6438:2;6423:18;31498:204:0;6304:203:1;31061:379:0;;;;;;;;;;-1:-1:-1;31061:379:0;;;;;:::i;:::-;;:::i;:::-;;43462:24;;;;;;;;;;;;;:::i;44206:589::-;;;;;;:::i;:::-;;:::i;48638:77::-;;;;;;;;;;-1:-1:-1;48638:77:0;;;;;:::i;:::-;;:::i;26808:94::-;;;;;;;;;;-1:-1:-1;26861:7:0;26884:12;26808:94;;;20370:25:1;;;20358:2;20343:18;26808:94:0;20224:177:1;32348:142:0;;;;;;;;;;-1:-1:-1;32348:142:0;;;;;:::i;:::-;;:::i;27439:744::-;;;;;;;;;;-1:-1:-1;27439:744:0;;;;;:::i;:::-;;:::i;46901:293::-;;;;;;:::i;:::-;;:::i;45527:679::-;;;;;;:::i;:::-;;:::i;48722:158::-;;;:::i;32553:157::-;;;;;;;;;;-1:-1:-1;32553:157:0;;;;;:::i;:::-;;:::i;47979:106::-;;;;;;;;;;-1:-1:-1;47979:106:0;;;;;:::i;:::-;;:::i;43579:43::-;;;;;;;;;;;;;;;;26971:177;;;;;;;;;;-1:-1:-1;26971:177:0;;;;;:::i;:::-;;:::i;43407:24::-;;;;;;;;;;;;;:::i;48406:98::-;;;;;;;;;;-1:-1:-1;48406:98:0;;;;;:::i;:::-;;:::i;43751:25::-;;;;;;;;;;-1:-1:-1;43751:25:0;;;;;;;;29796:118;;;;;;;;;;-1:-1:-1;29796:118:0;;;;;:::i;:::-;;:::i;43436:21::-;;;;;;;;;;;;;:::i;28673:211::-;;;;;;;;;;-1:-1:-1;28673:211:0;;;;;:::i;:::-;;:::i;42432:103::-;;;;;;;;;;;;;:::i;43627:42::-;;;;;;;;;;;;;;;;41784:87;;;;;;;;;;-1:-1:-1;41857:6:0;;-1:-1:-1;;;;;41857:6:0;41784:87;;47716:147;;;;;;;;;;-1:-1:-1;47716:147:0;;;;;:::i;:::-;;:::i;:::-;;;;20089:13:1;;-1:-1:-1;;;;;20085:39:1;20067:58;;20185:4;20173:17;;;20167:24;20193:18;20163:49;20141:20;;;20134:79;;;;20040:18;47716:147:0;19859:360:1;30128:98:0;;;;;;;;;;;;;:::i;48274:126::-;;;;;;;;;;-1:-1:-1;48274:126:0;;;;;:::i;:::-;;:::i;31766:274::-;;;;;;;;;;-1:-1:-1;31766:274:0;;;;;:::i;:::-;;:::i;32773:311::-;;;;;;;;;;-1:-1:-1;32773:311:0;;;;;:::i;:::-;;:::i;43491:37::-;;;;;;;;;;;;;:::i;48091:177::-;;;;;;;;;;-1:-1:-1;48091:177:0;;;;;:::i;:::-;;:::i;47204:393::-;;;;;;;;;;-1:-1:-1;47204:393:0;;;;;:::i;:::-;;:::i;46216:677::-;;;;;;:::i;:::-;;:::i;43674:30::-;;;;;;;;;;;;;;;;37188:43;;;;;;;;;;;;;;;;43533:41;;;;;;;;;;;;;;;;48510:122;;;;;;;;;;-1:-1:-1;48510:122:0;;;;;:::i;:::-;;:::i;47603:107::-;;;;;;;;;;-1:-1:-1;47603:107:0;;;;;:::i;:::-;;:::i;32103:186::-;;;;;;;;;;-1:-1:-1;32103:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;32248:25:0;;;32225:4;32248:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;32103:186;44801:717;;;;;;:::i;:::-;;:::i;42690:201::-;;;;;;;;;;-1:-1:-1;42690:201:0;;;;;:::i;:::-;;:::i;43709:37::-;;;;;;;;;;;;;;;;47869:106;;;;;;;;;;-1:-1:-1;47869:106:0;;;;;:::i;:::-;;:::i;28247:370::-;28374:4;-1:-1:-1;;;;;;28404:40:0;;-1:-1:-1;;;28404:40:0;;:99;;-1:-1:-1;;;;;;;28455:48:0;;-1:-1:-1;;;28455:48:0;28404:99;:160;;;-1:-1:-1;;;;;;;28514:50:0;;-1:-1:-1;;;28514:50:0;28404:160;:207;;;-1:-1:-1;;;;;;;;;;14028:40:0;;;28575:36;28390:221;28247:370;-1:-1:-1;;28247:370:0:o;29973:94::-;30027:13;30056:5;30049:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29973:94;:::o;31498:204::-;31566:7;31590:16;31598:7;33380:4;33410:12;-1:-1:-1;33400:22:0;33323:105;31590:16;31582:74;;;;-1:-1:-1;;;31582:74:0;;19244:2:1;31582:74:0;;;19226:21:1;19283:2;19263:18;;;19256:30;19322:34;19302:18;;;19295:62;-1:-1:-1;;;19373:18:1;;;19366:43;19426:19;;31582:74:0;;;;;;;;;-1:-1:-1;31672:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;31672:24:0;;31498:204::o;31061:379::-;31130:13;31146:24;31162:7;31146:15;:24::i;:::-;31130:40;;31191:5;-1:-1:-1;;;;;31185:11:0;:2;-1:-1:-1;;;;;31185:11:0;;;31177:58;;;;-1:-1:-1;;;31177:58:0;;15353:2:1;31177:58:0;;;15335:21:1;15392:2;15372:18;;;15365:30;15431:34;15411:18;;;15404:62;-1:-1:-1;;;15482:18:1;;;15475:32;15524:19;;31177:58:0;15151:398:1;31177:58:0;24368:10;-1:-1:-1;;;;;31260:21:0;;;;:62;;-1:-1:-1;31285:37:0;31302:5;24368:10;32103:186;:::i;31285:37::-;31244:153;;;;-1:-1:-1;;;31244:153:0;;12148:2:1;31244:153:0;;;12130:21:1;12187:2;12167:18;;;12160:30;12226:34;12206:18;;;12199:62;12297:27;12277:18;;;12270:55;12342:19;;31244:153:0;11946:421:1;31244:153:0;31406:28;31415:2;31419:7;31428:5;31406:8;:28::i;:::-;31123:317;31061:379;;:::o;43462:24::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;44206:589::-;44285:14;26884:12;44354:9;;44330:20;44339:11;26884:12;44330:20;:::i;:::-;:33;;44322:77;;;;-1:-1:-1;;;44322:77:0;;;;;;;:::i;:::-;44415:6;;;;44414:7;44406:60;;;;-1:-1:-1;;;44406:60:0;;;;;;;:::i;:::-;44505:3;44481:20;44490:11;44481:6;:20;:::i;:::-;:27;;44473:127;;;;-1:-1:-1;;;44473:127:0;;9660:2:1;44473:127:0;;;9642:21:1;9699:2;9679:18;;;9672:30;9738:34;9718:18;;;9711:62;9809:34;9789:18;;;9782:62;9881:25;9860:19;;;9853:54;9924:19;;44473:127:0;9458:491:1;44473:127:0;44657:1;44642:11;44615:24;44628:10;44615:12;:24::i;:::-;:38;;;;:::i;:::-;:43;;44607:95;;;;-1:-1:-1;;;44607:95:0;;10560:2:1;44607:95:0;;;10542:21:1;10599:2;10579:18;;;10572:30;10638:34;10618:18;;;10611:62;-1:-1:-1;;;10689:18:1;;;10682:37;10736:19;;44607:95:0;10358:403:1;44607:95:0;44711:34;44721:10;44733:11;44711:9;:34::i;:::-;44757:32;;44778:10;6450:51:1;;44765:11:0;;44757:32;;6438:2:1;6423:18;44757:32:0;;;;;;;44278:517;44206:589;:::o;48638:77::-;41670:13;:11;:13::i;:::-;48694:6:::1;:15:::0;;-1:-1:-1;;48694:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;48638:77::o;32348:142::-;32456:28;32466:4;32472:2;32476:7;32456:9;:28::i;27439:744::-;27548:7;27583:16;27593:5;27583:9;:16::i;:::-;27575:5;:24;27567:71;;;;-1:-1:-1;;;27567:71:0;;7623:2:1;27567:71:0;;;7605:21:1;7662:2;7642:18;;;7635:30;7701:34;7681:18;;;7674:62;-1:-1:-1;;;7752:18:1;;;7745:32;7794:19;;27567:71:0;7421:398:1;27567:71:0;27645:22;26884:12;;;27645:22;;27765:350;27789:14;27785:1;:18;27765:350;;;27819:31;27853:14;;;:11;:14;;;;;;;;;27819:48;;;;;;;;;-1:-1:-1;;;;;27819:48:0;;;;;-1:-1:-1;;;27819:48:0;;;;;;;;;;;;27880:28;27876:89;;27941:14;;;-1:-1:-1;27876:89:0;27998:5;-1:-1:-1;;;;;27977:26:0;:17;-1:-1:-1;;;;;27977:26:0;;27973:135;;;28035:5;28020:11;:20;28016:59;;;-1:-1:-1;28062:1:0;-1:-1:-1;28055:8:0;;-1:-1:-1;;;28055:8:0;28016:59;28085:13;;;;:::i;:::-;;;;27973:135;-1:-1:-1;27805:3:0;;;;:::i;:::-;;;;27765:350;;;-1:-1:-1;28121:56:0;;-1:-1:-1;;;28121:56:0;;18003:2:1;28121:56:0;;;17985:21:1;18042:2;18022:18;;;18015:30;18081:34;18061:18;;;18054:62;-1:-1:-1;;;18132:18:1;;;18125:44;18186:19;;28121:56:0;17801:410:1;46901:293:0;41670:13;:11;:13::i;:::-;46991:14:::1;26884:12:::0;47060:9:::1;::::0;47036:20:::1;47045:11:::0;26884:12;47036:20:::1;:::i;:::-;:33;;47028:73;;;::::0;-1:-1:-1;;;47028:73:0;;11792:2:1;47028:73:0::1;::::0;::::1;11774:21:1::0;11831:2;11811:18;;;11804:30;11870:29;11850:18;;;11843:57;11917:18;;47028:73:0::1;11590:351:1::0;45527:679:0;45608:14;26884:12;45677:9;;45653:20;45662:11;26884:12;45653:20;:::i;:::-;:33;;45645:77;;;;-1:-1:-1;;;45645:77:0;;;;;;;:::i;:::-;45738:6;;;;45737:7;45729:60;;;;-1:-1:-1;;;45729:60:0;;;;;;;:::i;:::-;45828:3;45804:20;45813:11;45804:6;:20;:::i;:::-;:27;;45796:60;;;;-1:-1:-1;;;45796:60:0;;;;;;;:::i;:::-;45901:11;45884:14;;:28;;;;:::i;:::-;45871:9;:41;;45863:50;;;;;;45947:1;45932:11;:16;;45924:69;;;;-1:-1:-1;;;45924:69:0;;9251:2:1;45924:69:0;;;9233:21:1;9290:2;9270:18;;;9263:30;9329:34;9309:18;;;9302:62;-1:-1:-1;;;9380:18:1;;;9373:38;9428:19;;45924:69:0;9049:404:1;45924:69:0;46050:17;;46035:11;46008:24;46021:10;46008:12;:24::i;:::-;:38;;;;:::i;:::-;:59;;46000:113;;;;-1:-1:-1;;;46000:113:0;;18418:2:1;46000:113:0;;;18400:21:1;18457:2;18437:18;;;18430:30;18496:34;18476:18;;;18469:62;-1:-1:-1;;;18547:18:1;;;18540:39;18596:19;;46000:113:0;18216:405:1;48722:158:0;41670:13;:11;:13::i;:::-;48793:58:::1;::::0;48775:12:::1;::::0;48801:10:::1;::::0;48825:21:::1;::::0;48775:12;48793:58;48775:12;48793:58;48825:21;48801:10;48793:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48774:77;;;48866:7;48858:16;;;::::0;::::1;;48767:113;48722:158::o:0;32553:157::-;32665:39;32682:4;32688:2;32692:7;32665:39;;;;;;;;;;;;:16;:39::i;47979:106::-;41670:13;:11;:13::i;:::-;48055:24;;::::1;::::0;:10:::1;::::0;:24:::1;::::0;::::1;::::0;::::1;:::i;:::-;;47979:106:::0;:::o;26971:177::-;27038:7;26884:12;;27062:5;:21;27054:69;;;;-1:-1:-1;;;27054:69:0;;10156:2:1;27054:69:0;;;10138:21:1;10195:2;10175:18;;;10168:30;10234:34;10214:18;;;10207:62;-1:-1:-1;;;10285:18:1;;;10278:33;10328:19;;27054:69:0;9954:399:1;27054:69:0;-1:-1:-1;27137:5:0;26971:177::o;43407:24::-;;;;;;;:::i;48406:98::-;41670:13;:11;:13::i;:::-;48477:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;29796:118::-:0;29860:7;29883:20;29895:7;29883:11;:20::i;:::-;:25;;29796:118;-1:-1:-1;;29796:118:0:o;43436:21::-;;;;;;;:::i;28673:211::-;28737:7;-1:-1:-1;;;;;28761:19:0;;28753:75;;;;-1:-1:-1;;;28753:75:0;;12574:2:1;28753:75:0;;;12556:21:1;12613:2;12593:18;;;12586:30;12652:34;12632:18;;;12625:62;-1:-1:-1;;;12703:18:1;;;12696:41;12754:19;;28753:75:0;12372:407:1;28753:75:0;-1:-1:-1;;;;;;28850:19:0;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;28850:27:0;;28673:211::o;42432:103::-;41670:13;:11;:13::i;:::-;42497:30:::1;42524:1;42497:18;:30::i;:::-;42432:103::o:0;47716:147::-;-1:-1:-1;;;;;;;;;;;;;;;;;47837:20:0;47849:7;47837:11;:20::i;30128:98::-;30184:13;30213:7;30206:14;;;;;:::i;48274:126::-;41670:13;:11;:13::i;:::-;48356:17:::1;:38:::0;48274:126::o;31766:274::-;-1:-1:-1;;;;;31857:24:0;;24368:10;31857:24;;31849:63;;;;-1:-1:-1;;;31849:63:0;;14579:2:1;31849:63:0;;;14561:21:1;14618:2;14598:18;;;14591:30;14657:28;14637:18;;;14630:56;14703:18;;31849:63:0;14377:350:1;31849:63:0;24368:10;31921:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;31921:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;31921:53:0;;;;;;;;;;31986:48;;7145:41:1;;;31921:42:0;;24368:10;31986:48;;7118:18:1;31986:48:0;;;;;;;31766:274;;:::o;32773:311::-;32910:28;32920:4;32926:2;32930:7;32910:9;:28::i;:::-;32961:48;32984:4;32990:2;32994:7;33003:5;32961:22;:48::i;:::-;32945:133;;;;-1:-1:-1;;;32945:133:0;;;;;;;:::i;:::-;32773:311;;;;:::o;43491:37::-;;;;;;;:::i;48091:177::-;41670:13;:11;:13::i;:::-;48185:9:::1;;48169:13;:25;48161:67;;;::::0;-1:-1:-1;;;48161:67:0;;16534:2:1;48161:67:0::1;::::0;::::1;16516:21:1::0;16573:2;16553:18;;;16546:30;16612:31;16592:18;;;16585:59;16661:18;;48161:67:0::1;16332:353:1::0;48161:67:0::1;48237:9;:25:::0;48091:177::o;47204:393::-;47302:13;47343:16;47351:7;33380:4;33410:12;-1:-1:-1;33400:22:0;33323:105;47343:16;47327:97;;;;-1:-1:-1;;;47327:97:0;;14163:2:1;47327:97:0;;;14145:21:1;14202:2;14182:18;;;14175:30;14241:34;14221:18;;;14214:62;-1:-1:-1;;;14292:18:1;;;14285:45;14347:19;;47327:97:0;13961:411:1;47327:97:0;47431:24;47482:1;47464:7;47458:21;;;;;:::i;:::-;;;:25;:48;;47496:10;47458:48;;;47486:7;47458:48;47431:75;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47544:10;47556:18;:7;:16;:18::i;:::-;47576:13;47527:63;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;47513:78;;;47204:393;;;:::o;46216:677::-;46296:14;26884:12;46365:9;;46341:20;46350:11;26884:12;46341:20;:::i;:::-;:33;;46333:77;;;;-1:-1:-1;;;46333:77:0;;;;;;;:::i;:::-;46426:6;;;;46425:7;46417:60;;;;-1:-1:-1;;;46417:60:0;;;;;;;:::i;:::-;46516:3;46492:20;46501:11;46492:6;:20;:::i;:::-;:27;;46484:60;;;;-1:-1:-1;;;46484:60:0;;;;;;;:::i;:::-;46588:11;46572:13;;:27;;;;:::i;48510:122::-;41670:13;:11;:13::i;:::-;48593:33;;::::1;::::0;:13:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;47603:107::-:0;47661:7;47684:20;47698:5;47684:13;:20::i;44801:717::-;44880:14;26884:12;44949:9;;44925:20;44934:11;26884:12;44925:20;:::i;:::-;:33;;44917:77;;;;-1:-1:-1;;;44917:77:0;;;;;;;:::i;:::-;45010:6;;;;45009:7;45001:60;;;;-1:-1:-1;;;45001:60:0;;;;;;;:::i;:::-;45100:3;45076:20;45085:11;45076:6;:20;:::i;:::-;:27;;45068:60;;;;-1:-1:-1;;;45068:60:0;;;;;;;:::i;:::-;45171:11;45156:12;;:26;;;;:::i;:::-;45143:9;:39;;45135:90;;;;-1:-1:-1;;;45135:90:0;;8026:2:1;45135:90:0;;;8008:21:1;8065:2;8045:18;;;8038:30;8104:34;8084:18;;;8077:62;-1:-1:-1;;;8155:18:1;;;8148:36;8201:19;;45135:90:0;7824:402:1;42690:201:0;41670:13;:11;:13::i;:::-;-1:-1:-1;;;;;42779:22:0;::::1;42771:73;;;::::0;-1:-1:-1;;;42771:73:0;;8433:2:1;42771:73:0::1;::::0;::::1;8415:21:1::0;8472:2;8452:18;;;8445:30;8511:34;8491:18;;;8484:62;-1:-1:-1;;;8562:18:1;;;8555:36;8608:19;;42771:73:0::1;8231:402:1::0;42771:73:0::1;42855:28;42874:8;42855:18;:28::i;47869:106::-:0;41670:13;:11;:13::i;:::-;47945:24;;::::1;::::0;:10:::1;::::0;:24:::1;::::0;::::1;::::0;::::1;:::i;37010:172::-:0;37107:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;37107:29:0;-1:-1:-1;;;;;37107:29:0;;;;;;;;;37148:28;;37107:24;;37148:28;;;;;;;37010:172;;;:::o;33434:98::-;33499:27;33509:2;33513:8;33499:27;;;;;;;;;;;;:9;:27::i;41949:132::-;41857:6;;-1:-1:-1;;;;;41857:6:0;24368:10;42013:23;42005:68;;;;-1:-1:-1;;;42005:68:0;;13802:2:1;42005:68:0;;;13784:21:1;;;13821:18;;;13814:30;13880:34;13860:18;;;13853:62;13932:18;;42005:68:0;13600:356:1;35375:1529:0;35472:35;35510:20;35522:7;35510:11;:20::i;:::-;35581:18;;35472:58;;-1:-1:-1;35539:22:0;;-1:-1:-1;;;;;35565:34:0;24368:10;-1:-1:-1;;;;;35565:34:0;;:81;;;-1:-1:-1;24368:10:0;35610:20;35622:7;35610:11;:20::i;:::-;-1:-1:-1;;;;;35610:36:0;;35565:81;:142;;;-1:-1:-1;35674:18:0;;35657:50;;24368:10;32103:186;:::i;35657:50::-;35539:169;;35733:17;35717:101;;;;-1:-1:-1;;;35717:101:0;;14934:2:1;35717:101:0;;;14916:21:1;14973:2;14953:18;;;14946:30;15012:34;14992:18;;;14985:62;-1:-1:-1;;;15063:18:1;;;15056:48;15121:19;;35717:101:0;14732:414:1;35717:101:0;35865:4;-1:-1:-1;;;;;35843:26:0;:13;:18;;;-1:-1:-1;;;;;35843:26:0;;35827:98;;;;-1:-1:-1;;;35827:98:0;;13395:2:1;35827:98:0;;;13377:21:1;13434:2;13414:18;;;13407:30;13473:34;13453:18;;;13446:62;-1:-1:-1;;;13524:18:1;;;13517:36;13570:19;;35827:98:0;13193:402:1;35827:98:0;-1:-1:-1;;;;;35940:16:0;;35932:66;;;;-1:-1:-1;;;35932:66:0;;10968:2:1;35932:66:0;;;10950:21:1;11007:2;10987:18;;;10980:30;11046:34;11026:18;;;11019:62;-1:-1:-1;;;11097:18:1;;;11090:35;11142:19;;35932:66:0;10766:401:1;35932:66:0;36107:49;36124:1;36128:7;36137:13;:18;;;36107:8;:49::i;:::-;-1:-1:-1;;;;;36165:18:0;;;;;;:12;:18;;;;;:31;;36195:1;;36165:18;:31;;36195:1;;-1:-1:-1;;;;;36165:31:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;36165:31:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;36203:16:0;;-1:-1:-1;36203:16:0;;;:12;:16;;;;;:29;;-1:-1:-1;;;36203:16:0;;:29;;-1:-1:-1;;36203:29:0;;:::i;:::-;;;-1:-1:-1;;;;;36203:29:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36262:43:0;;;;;;;;-1:-1:-1;;;;;36262:43:0;;;;;;36288:15;36262:43;;;;;;;;;-1:-1:-1;36239:20:0;;;:11;:20;;;;;;:66;;;;;;;;;-1:-1:-1;;;36239:66:0;-1:-1:-1;;;;;;36239:66:0;;;;;;;;;;;36555:11;36251:7;-1:-1:-1;36555:11:0;:::i;:::-;36618:1;36577:24;;;:11;:24;;;;;:29;36533:33;;-1:-1:-1;;;;;;36577:29:0;36573:236;;36635:20;36643:11;33380:4;33410:12;-1:-1:-1;33400:22:0;33323:105;36635:20;36631:171;;;36695:97;;;;;;;;36722:18;;-1:-1:-1;;;;;36695:97:0;;;;;;36753:28;;;;36695:97;;;;;;;;;;-1:-1:-1;36668:24:0;;;:11;:24;;;;;;;:124;;;;;;;;;-1:-1:-1;;;36668:124:0;-1:-1:-1;;;;;;36668:124:0;;;;;;;;;;;;36631:171;36841:7;36837:2;-1:-1:-1;;;;;36822:27:0;36831:4;-1:-1:-1;;;;;36822:27:0;;;;;;;;;;;36856:42;35465:1439;;;35375:1529;;;:::o;29136:606::-;-1:-1:-1;;;;;;;;;;;;;;;;;29253:16:0;29261:7;33380:4;33410:12;-1:-1:-1;33400:22:0;33323:105;29253:16;29245:71;;;;-1:-1:-1;;;29245:71:0;;8840:2:1;29245:71:0;;;8822:21:1;8879:2;8859:18;;;8852:30;8918:34;8898:18;;;8891:62;-1:-1:-1;;;8969:18:1;;;8962:40;9019:19;;29245:71:0;8638:406:1;29245:71:0;29325:26;29373:12;29362:7;:23;29358:93;;29417:22;29427:12;29417:7;:22;:::i;:::-;:26;;29442:1;29417:26;:::i;:::-;29396:47;;29358:93;29479:7;29459:212;29496:18;29488:4;:26;29459:212;;29533:31;29567:17;;;:11;:17;;;;;;;;;29533:51;;;;;;;;;-1:-1:-1;;;;;29533:51:0;;;;;-1:-1:-1;;;29533:51:0;;;;;;;;;;;;29597:28;29593:71;;29645:9;29136:606;-1:-1:-1;;;;29136:606:0:o;29593:71::-;-1:-1:-1;29516:6:0;;;;:::i;:::-;;;;29459:212;;;-1:-1:-1;29679:57:0;;-1:-1:-1;;;29679:57:0;;18828:2:1;29679:57:0;;;18810:21:1;18867:2;18847:18;;;18840:30;18906:34;18886:18;;;18879:62;-1:-1:-1;;;18957:18:1;;;18950:45;19012:19;;29679:57:0;18626:411:1;43051:191:0;43144:6;;;-1:-1:-1;;;;;43161:17:0;;;-1:-1:-1;;;;;;43161:17:0;;;;;;;43194:40;;43144:6;;;43161:17;43144:6;;43194:40;;43125:16;;43194:40;43114:128;43051:191;:::o;38725:690::-;38862:4;-1:-1:-1;;;;;38879:13:0;;4058:19;:23;38875:535;;38918:72;;-1:-1:-1;;;38918:72:0;;-1:-1:-1;;;;;38918:36:0;;;;;:72;;24368:10;;38969:4;;38975:7;;38984:5;;38918:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38918:72:0;;;;;;;;-1:-1:-1;;38918:72:0;;;;;;;;;;;;:::i;:::-;;;38905:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39149:13:0;;39145:215;;39182:61;;-1:-1:-1;;;39182:61:0;;;;;;;:::i;39145:215::-;39328:6;39322:13;39313:6;39309:2;39305:15;39298:38;38905:464;-1:-1:-1;;;;;;39040:55:0;-1:-1:-1;;;39040:55:0;;-1:-1:-1;39033:62:0;;38875:535;-1:-1:-1;39398:4:0;38875:535;38725:690;;;;;;:::o;463:723::-;519:13;740:10;736:53;;-1:-1:-1;;767:10:0;;;;;;;;;;;;-1:-1:-1;;;767:10:0;;;;;463:723::o;736:53::-;814:5;799:12;855:78;862:9;;855:78;;888:8;;;;:::i;:::-;;-1:-1:-1;911:10:0;;-1:-1:-1;919:2:0;911:10;;:::i;:::-;;;855:78;;;943:19;975:6;965:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;965:17:0;;943:39;;993:154;1000:10;;993:154;;1027:11;1037:1;1027:11;;:::i;:::-;;-1:-1:-1;1096:10:0;1104:2;1096:5;:10;:::i;:::-;1083:24;;:2;:24;:::i;:::-;1070:39;;1053:6;1060;1053:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;1053:56:0;;;;;;;;-1:-1:-1;1124:11:0;1133:2;1124:11;;:::i;:::-;;;993:154;;28890:240;28951:7;-1:-1:-1;;;;;28983:19:0;;28967:102;;;;-1:-1:-1;;;28967:102:0;;11374:2:1;28967:102:0;;;11356:21:1;11413:2;11393:18;;;11386:30;11452:34;11432:18;;;11425:62;-1:-1:-1;;;11503:18:1;;;11496:47;11560:19;;28967:102:0;11172:413:1;28967:102:0;-1:-1:-1;;;;;;29091:19:0;;;;;:12;:19;;;;;:32;-1:-1:-1;;;29091:32:0;;-1:-1:-1;;;;;29091:32:0;;28890:240::o;33871:1272::-;33976:20;33999:12;-1:-1:-1;;;;;34026:16:0;;34018:62;;;;-1:-1:-1;;;34018:62:0;;17252:2:1;34018:62:0;;;17234:21:1;17291:2;17271:18;;;17264:30;17330:34;17310:18;;;17303:62;-1:-1:-1;;;17381:18:1;;;17374:31;17422:19;;34018:62:0;17050:397:1;34018:62:0;34217:21;34225:12;33380:4;33410:12;-1:-1:-1;33400:22:0;33323:105;34217:21;34216:22;34208:64;;;;-1:-1:-1;;;34208:64:0;;16176:2:1;34208:64:0;;;16158:21:1;16215:2;16195:18;;;16188:30;16254:31;16234:18;;;16227:59;16303:18;;34208:64:0;15974:353:1;34208:64:0;34299:12;34287:8;:24;;34279:71;;;;-1:-1:-1;;;34279:71:0;;19658:2:1;34279:71:0;;;19640:21:1;19697:2;19677:18;;;19670:30;19736:34;19716:18;;;19709:62;-1:-1:-1;;;19787:18:1;;;19780:32;19829:19;;34279:71:0;19456:398:1;34279:71:0;-1:-1:-1;;;;;34462:16:0;;34429:30;34462:16;;;:12;:16;;;;;;;;;34429:49;;;;;;;;;-1:-1:-1;;;;;34429:49:0;;;;;-1:-1:-1;;;34429:49:0;;;;;;;;;;;34504:119;;;;;;;;34524:19;;34429:49;;34504:119;;;34524:39;;34554:8;;34524:39;:::i;:::-;-1:-1:-1;;;;;34504:119:0;;;;;34607:8;34572:11;:24;;;:44;;;;:::i;:::-;-1:-1:-1;;;;;34504:119:0;;;;;;-1:-1:-1;;;;;34485:16:0;;;;;;;:12;:16;;;;;;;;:138;;;;;;;;-1:-1:-1;;;34485:138:0;;;;;;;;;;;;34658:43;;;;;;;;;;;34684:15;34658:43;;;;;;;;34630:25;;;:11;:25;;;;;;:71;;;;;;;;;-1:-1:-1;;;34630:71:0;-1:-1:-1;;;;;;34630:71:0;;;;;;;;;;;;;;;;;;34642:12;;34754:281;34778:8;34774:1;:12;34754:281;;;34807:38;;34832:12;;-1:-1:-1;;;;;34807:38:0;;;34824:1;;34807:38;;34824:1;;34807:38;34872:59;34903:1;34907:2;34911:12;34925:5;34872:22;:59::i;:::-;34854:150;;;;-1:-1:-1;;;34854:150:0;;;;;;;:::i;:::-;35013:14;;;;:::i;:::-;;;;34788:3;;;;;:::i;:::-;;;;34754:281;;;-1:-1:-1;35043:12:0;:27;;;35077:60;32773:311;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:186;1052:6;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1144:29;1163:9;1144:29;:::i;:::-;1134:39;993:186;-1:-1:-1;;;993:186:1:o;1184:260::-;1252:6;1260;1313:2;1301:9;1292:7;1288:23;1284:32;1281:52;;;1329:1;1326;1319:12;1281:52;1352:29;1371:9;1352:29;:::i;:::-;1342:39;;1400:38;1434:2;1423:9;1419:18;1400:38;:::i;:::-;1390:48;;1184:260;;;;;:::o;1449:328::-;1526:6;1534;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1634:29;1653:9;1634:29;:::i;:::-;1624:39;;1682:38;1716:2;1705:9;1701:18;1682:38;:::i;:::-;1672:48;;1767:2;1756:9;1752:18;1739:32;1729:42;;1449:328;;;;;:::o;1782:666::-;1877:6;1885;1893;1901;1954:3;1942:9;1933:7;1929:23;1925:33;1922:53;;;1971:1;1968;1961:12;1922:53;1994:29;2013:9;1994:29;:::i;:::-;1984:39;;2042:38;2076:2;2065:9;2061:18;2042:38;:::i;:::-;2032:48;;2127:2;2116:9;2112:18;2099:32;2089:42;;2182:2;2171:9;2167:18;2154:32;2209:18;2201:6;2198:30;2195:50;;;2241:1;2238;2231:12;2195:50;2264:22;;2317:4;2309:13;;2305:27;-1:-1:-1;2295:55:1;;2346:1;2343;2336:12;2295:55;2369:73;2434:7;2429:2;2416:16;2411:2;2407;2403:11;2369:73;:::i;:::-;2359:83;;;1782:666;;;;;;;:::o;2453:254::-;2518:6;2526;2579:2;2567:9;2558:7;2554:23;2550:32;2547:52;;;2595:1;2592;2585:12;2547:52;2618:29;2637:9;2618:29;:::i;:::-;2608:39;;2666:35;2697:2;2686:9;2682:18;2666:35;:::i;2712:254::-;2780:6;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:52;;;2857:1;2854;2847:12;2809:52;2880:29;2899:9;2880:29;:::i;:::-;2870:39;2956:2;2941:18;;;;2928:32;;-1:-1:-1;;;2712:254:1:o;2971:180::-;3027:6;3080:2;3068:9;3059:7;3055:23;3051:32;3048:52;;;3096:1;3093;3086:12;3048:52;3119:26;3135:9;3119:26;:::i;3156:245::-;3214:6;3267:2;3255:9;3246:7;3242:23;3238:32;3235:52;;;3283:1;3280;3273:12;3235:52;3322:9;3309:23;3341:30;3365:5;3341:30;:::i;3406:249::-;3475:6;3528:2;3516:9;3507:7;3503:23;3499:32;3496:52;;;3544:1;3541;3534:12;3496:52;3576:9;3570:16;3595:30;3619:5;3595:30;:::i;3660:450::-;3729:6;3782:2;3770:9;3761:7;3757:23;3753:32;3750:52;;;3798:1;3795;3788:12;3750:52;3838:9;3825:23;3871:18;3863:6;3860:30;3857:50;;;3903:1;3900;3893:12;3857:50;3926:22;;3979:4;3971:13;;3967:27;-1:-1:-1;3957:55:1;;4008:1;4005;3998:12;3957:55;4031:73;4096:7;4091:2;4078:16;4073:2;4069;4065:11;4031:73;:::i;4115:180::-;4174:6;4227:2;4215:9;4206:7;4202:23;4198:32;4195:52;;;4243:1;4240;4233:12;4195:52;-1:-1:-1;4266:23:1;;4115:180;-1:-1:-1;4115:180:1:o;4300:257::-;4341:3;4379:5;4373:12;4406:6;4401:3;4394:19;4422:63;4478:6;4471:4;4466:3;4462:14;4455:4;4448:5;4444:16;4422:63;:::i;:::-;4539:2;4518:15;-1:-1:-1;;4514:29:1;4505:39;;;;4546:4;4501:50;;4300:257;-1:-1:-1;;4300:257:1:o;4562:1527::-;4786:3;4824:6;4818:13;4850:4;4863:51;4907:6;4902:3;4897:2;4889:6;4885:15;4863:51;:::i;:::-;4977:13;;4936:16;;;;4999:55;4977:13;4936:16;5021:15;;;4999:55;:::i;:::-;5143:13;;5076:20;;;5116:1;;5203;5225:18;;;;5278;;;;5305:93;;5383:4;5373:8;5369:19;5357:31;;5305:93;5446:2;5436:8;5433:16;5413:18;5410:40;5407:167;;;-1:-1:-1;;;5473:33:1;;5529:4;5526:1;5519:15;5559:4;5480:3;5547:17;5407:167;5590:18;5617:110;;;;5741:1;5736:328;;;;5583:481;;5617:110;-1:-1:-1;;5652:24:1;;5638:39;;5697:20;;;;-1:-1:-1;5617:110:1;;5736:328;20479:1;20472:14;;;20516:4;20503:18;;5831:1;5845:169;5859:8;5856:1;5853:15;5845:169;;;5941:14;;5926:13;;;5919:37;5984:16;;;;5876:10;;5845:169;;;5849:3;;6045:8;6038:5;6034:20;6027:27;;5583:481;-1:-1:-1;6080:3:1;;4562:1527;-1:-1:-1;;;;;;;;;;;4562:1527:1:o;6512:488::-;-1:-1:-1;;;;;6781:15:1;;;6763:34;;6833:15;;6828:2;6813:18;;6806:43;6880:2;6865:18;;6858:34;;;6928:3;6923:2;6908:18;;6901:31;;;6706:4;;6949:45;;6974:19;;6966:6;6949:45;:::i;:::-;6941:53;6512:488;-1:-1:-1;;;;;;6512:488:1:o;7197:219::-;7346:2;7335:9;7328:21;7309:4;7366:44;7406:2;7395:9;7391:18;7383:6;7366:44;:::i;12784:404::-;12986:2;12968:21;;;13025:2;13005:18;;;12998:30;13064:34;13059:2;13044:18;;13037:62;-1:-1:-1;;;13130:2:1;13115:18;;13108:38;13178:3;13163:19;;12784:404::o;15554:415::-;15756:2;15738:21;;;15795:2;15775:18;;;15768:30;15834:34;15829:2;15814:18;;15807:62;-1:-1:-1;;;15900:2:1;15885:18;;15878:49;15959:3;15944:19;;15554:415::o;16690:355::-;16892:2;16874:21;;;16931:2;16911:18;;;16904:30;16970:33;16965:2;16950:18;;16943:61;17036:2;17021:18;;16690:355::o;17452:344::-;17654:2;17636:21;;;17693:2;17673:18;;;17666:30;-1:-1:-1;;;17727:2:1;17712:18;;17705:50;17787:2;17772:18;;17452:344::o;20532:253::-;20572:3;-1:-1:-1;;;;;20661:2:1;20658:1;20654:10;20691:2;20688:1;20684:10;20722:3;20718:2;20714:12;20709:3;20706:21;20703:47;;;20730:18;;:::i;:::-;20766:13;;20532:253;-1:-1:-1;;;;20532:253:1:o;20790:128::-;20830:3;20861:1;20857:6;20854:1;20851:13;20848:39;;;20867:18;;:::i;:::-;-1:-1:-1;20903:9:1;;20790:128::o;20923:120::-;20963:1;20989;20979:35;;20994:18;;:::i;:::-;-1:-1:-1;21028:9:1;;20923:120::o;21048:168::-;21088:7;21154:1;21150;21146:6;21142:14;21139:1;21136:21;21131:1;21124:9;21117:17;21113:45;21110:71;;;21161:18;;:::i;:::-;-1:-1:-1;21201:9:1;;21048:168::o;21221:246::-;21261:4;-1:-1:-1;;;;;21374:10:1;;;;21344;;21396:12;;;21393:38;;;21411:18;;:::i;:::-;21448:13;;21221:246;-1:-1:-1;;;21221:246:1:o;21472:125::-;21512:4;21540:1;21537;21534:8;21531:34;;;21545:18;;:::i;:::-;-1:-1:-1;21582:9:1;;21472:125::o;21602:258::-;21674:1;21684:113;21698:6;21695:1;21692:13;21684:113;;;21774:11;;;21768:18;21755:11;;;21748:39;21720:2;21713:10;21684:113;;;21815:6;21812:1;21809:13;21806:48;;;-1:-1:-1;;21850:1:1;21832:16;;21825:27;21602:258::o;21865:136::-;21904:3;21932:5;21922:39;;21941:18;;:::i;:::-;-1:-1:-1;;;21977:18:1;;21865:136::o;22006:380::-;22085:1;22081:12;;;;22128;;;22149:61;;22203:4;22195:6;22191:17;22181:27;;22149:61;22256:2;22248:6;22245:14;22225:18;22222:38;22219:161;;;22302:10;22297:3;22293:20;22290:1;22283:31;22337:4;22334:1;22327:15;22365:4;22362:1;22355:15;22219:161;;22006:380;;;:::o;22391:135::-;22430:3;-1:-1:-1;;22451:17:1;;22448:43;;;22471:18;;:::i;:::-;-1:-1:-1;22518:1:1;22507:13;;22391:135::o;22531:112::-;22563:1;22589;22579:35;;22594:18;;:::i;:::-;-1:-1:-1;22628:9:1;;22531:112::o;22648:127::-;22709:10;22704:3;22700:20;22697:1;22690:31;22740:4;22737:1;22730:15;22764:4;22761:1;22754:15;22780:127;22841:10;22836:3;22832:20;22829:1;22822:31;22872:4;22869:1;22862:15;22896:4;22893:1;22886:15;22912:127;22973:10;22968:3;22964:20;22961:1;22954:31;23004:4;23001:1;22994:15;23028:4;23025:1;23018:15;23044:127;23105:10;23100:3;23096:20;23093:1;23086:31;23136:4;23133:1;23126:15;23160:4;23157:1;23150:15;23176:131;-1:-1:-1;;;;;;23250:32:1;;23240:43;;23230:71;;23297:1;23294;23287:12

Swarm Source

ipfs://cc605773faf1b1f108c58d2cb80231203313a351a40af4593e9c174599cf4916
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.