Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 170 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Approval For... | 15113320 | 1335 days ago | IN | 0 ETH | 0.00031045 | ||||
| Transfer From | 15068087 | 1342 days ago | IN | 0 ETH | 0.00087911 | ||||
| Set Approval For... | 15038533 | 1347 days ago | IN | 0 ETH | 0.00133444 | ||||
| Set Approval For... | 14990158 | 1356 days ago | IN | 0 ETH | 0.00076552 | ||||
| Set Approval For... | 14960163 | 1361 days ago | IN | 0 ETH | 0.00160764 | ||||
| Set Approval For... | 14960133 | 1361 days ago | IN | 0 ETH | 0.00169919 | ||||
| Whitelist Mint | 14944755 | 1363 days ago | IN | 0.15 ETH | 0.0010124 | ||||
| Withdraw | 14944117 | 1364 days ago | IN | 0 ETH | 0.00158594 | ||||
| Toggle White Lis... | 14943543 | 1364 days ago | IN | 0 ETH | 0.00091354 | ||||
| Set Approval For... | 14942905 | 1364 days ago | IN | 0 ETH | 0.00146302 | ||||
| Set Approval For... | 14942827 | 1364 days ago | IN | 0 ETH | 0.00107278 | ||||
| Whitelist Mint | 14942810 | 1364 days ago | IN | 0.15 ETH | 0.00366398 | ||||
| Whitelist Mint | 14942805 | 1364 days ago | IN | 0.15 ETH | 0.00364602 | ||||
| Whitelist Mint | 14942800 | 1364 days ago | IN | 0.15 ETH | 0.00314849 | ||||
| Set Approval For... | 14942672 | 1364 days ago | IN | 0 ETH | 0.00182996 | ||||
| Whitelist Mint | 14942589 | 1364 days ago | IN | 0.15 ETH | 0.00336495 | ||||
| Whitelist Mint | 14942461 | 1364 days ago | IN | 0.15 ETH | 0.00292897 | ||||
| Whitelist Mint | 14942429 | 1364 days ago | IN | 0.15 ETH | 0.00332159 | ||||
| Set Approval For... | 14942424 | 1364 days ago | IN | 0 ETH | 0.00131938 | ||||
| Whitelist Mint | 14942422 | 1364 days ago | IN | 0.15 ETH | 0.00381476 | ||||
| Whitelist Mint | 14942407 | 1364 days ago | IN | 0.15 ETH | 0.00370999 | ||||
| Whitelist Mint | 14941908 | 1364 days ago | IN | 0.15 ETH | 0.00413597 | ||||
| Set Approval For... | 14940082 | 1364 days ago | IN | 0 ETH | 0.00267428 | ||||
| Whitelist Mint | 14939955 | 1364 days ago | IN | 0.15 ETH | 0.0064359 | ||||
| Whitelist Mint | 14939948 | 1364 days ago | IN | 0.15 ETH | 0.00554748 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 14944117 | 1364 days ago | 14.85 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
AdventureIsland
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-06-09
*/
// File: @openzeppelin/contracts/utils/cryptography/MerkleProof.sol
// OpenZeppelin Contracts (last updated v4.6.0) (utils/cryptography/MerkleProof.sol)
pragma solidity ^0.8.0;
/**
* @dev These functions deal with verification of Merkle Trees proofs.
*
* The proofs can be generated using the JavaScript library
* https://github.com/miguelmota/merkletreejs[merkletreejs].
* Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
*
* See `test/utils/cryptography/MerkleProof.test.js` for some examples.
*
* WARNING: You should avoid using leaf values that are 64 bytes long prior to
* hashing, or use a hash function other than keccak256 for hashing leaves.
* This is because the concatenation of a sorted pair of internal nodes in
* the merkle tree could be reinterpreted as a leaf value.
*/
library MerkleProof {
/**
* @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
* defined by `root`. For this, a `proof` must be provided, containing
* sibling hashes on the branch from the leaf to the root of the tree. Each
* pair of leaves and each pair of pre-images are assumed to be sorted.
*/
function verify(
bytes32[] memory proof,
bytes32 root,
bytes32 leaf
) internal pure returns (bool) {
return processProof(proof, leaf) == root;
}
/**
* @dev Returns the rebuilt hash obtained by traversing a Merkle tree up
* from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
* hash matches the root of the tree. When processing the proof, the pairs
* of leafs & pre-images are assumed to be sorted.
*
* _Available since v4.4._
*/
function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
bytes32 computedHash = leaf;
for (uint256 i = 0; i < proof.length; i++) {
bytes32 proofElement = proof[i];
if (computedHash <= proofElement) {
// Hash(current computed hash + current element of the proof)
computedHash = _efficientHash(computedHash, proofElement);
} else {
// Hash(current element of the proof + current computed hash)
computedHash = _efficientHash(proofElement, computedHash);
}
}
return computedHash;
}
function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
assembly {
mstore(0x00, a)
mstore(0x20, b)
value := keccak256(0x00, 0x40)
}
}
}
// File: @openzeppelin/contracts/utils/Strings.sol
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
pragma solidity ^0.8.0;
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
}
// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// File: @openzeppelin/contracts/access/Ownable.sol
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File: @openzeppelin/contracts/utils/Address.sol
// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// File: @openzeppelin/contracts/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.6.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 be have been allowed to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev 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: mintnft/ERC721A.sol
// Creator: Chiru Labs
pragma solidity ^0.8.4;
error ApprovalCallerNotOwnerNorApproved();
error ApprovalQueryForNonexistentToken();
error ApproveToCaller();
error ApprovalToCurrentOwner();
error BalanceQueryForZeroAddress();
error MintedQueryForZeroAddress();
error MintToZeroAddress();
error MintZeroQuantity();
error OwnerIndexOutOfBounds();
error OwnerQueryForNonexistentToken();
error TokenIndexOutOfBounds();
error TransferCallerNotOwnerNorApproved();
error TransferFromIncorrectOwner();
error TransferToNonERC721ReceiverImplementer();
error TransferToZeroAddress();
error UnableDetermineTokenOwner();
error URIQueryForNonexistentToken();
/**
* @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..).
*
* Does not support burning tokens to address(0).
*
* Assumes that an owner cannot have more than the 2**128 - 1 (max value of uint128) of supply
*/
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 internal _currentIndex;
// 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) internal _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;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @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) {
if (index >= totalSupply()) revert TokenIndexOutOfBounds();
return index;
}
/**
* @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
* This read function is O(totalSupply). 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) {
if (index >= balanceOf(owner)) revert OwnerIndexOutOfBounds();
uint256 numMintedSoFar = totalSupply();
uint256 tokenIdsIdx;
address currOwnershipAddr;
// Counter overflow is impossible as the loop breaks when uint256 i is equal to another uint256 numMintedSoFar.
unchecked {
for (uint256 i; 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++;
}
}
}
// Execution should never reach this point.
assert(false);
}
/**
* @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) {
if (owner == address(0)) revert BalanceQueryForZeroAddress();
return uint256(_addressData[owner].balance);
}
function _numberMinted(address owner) internal view returns (uint256) {
if (owner == address(0)) revert MintedQueryForZeroAddress();
return uint256(_addressData[owner].numberMinted);
}
/**
* Gas spent here starts off proportional to the maximum mint batch size.
* It gradually moves to O(1) as tokens get transferred around in the collection over time.
*/
function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) {
if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();
unchecked {
for (uint256 curr = tokenId; curr >= 0; curr--) {
TokenOwnership memory ownership = _ownerships[curr];
if (ownership.addr != address(0)) {
return ownership;
}
}
}
revert UnableDetermineTokenOwner();
}
/**
* @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) {
if (!_exists(tokenId)) revert URIQueryForNonexistentToken();
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);
if (to == owner) revert ApprovalToCurrentOwner();
if (_msgSender() != owner && !isApprovedForAll(owner, _msgSender())) revert ApprovalCallerNotOwnerNorApproved();
_approve(to, tokenId, owner);
}
/**
* @dev See {IERC721-getApproved}.
*/
function getApproved(uint256 tokenId) public view override returns (address) {
if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();
return _tokenApprovals[tokenId];
}
/**
* @dev See {IERC721-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public override {
if (operator == _msgSender()) revert ApproveToCaller();
_operatorApprovals[_msgSender()][operator] = approved;
emit ApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC721-isApprovedForAll}.
*/
function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
return _operatorApprovals[owner][operator];
}
/**
* @dev See {IERC721-transferFrom}.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
_transfer(from, to, tokenId);
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
safeTransferFrom(from, to, tokenId, '');
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes memory _data
) public override {
_transfer(from, to, tokenId);
if (!_checkOnERC721Received(from, to, tokenId, _data)) revert TransferToNonERC721ReceiverImplementer();
}
/**
* @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 Safely mints `quantity` tokens and transfers them to `to`.
*
* Requirements:
*
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called for each safe transfer.
* - `quantity` must be greater than 0.
*
* Emits a {Transfer} event.
*/
function _safeMint(
address to,
uint256 quantity,
bytes memory _data
) internal {
_mint(to, quantity, _data, true);
}
/**
* @dev Mints `quantity` tokens and transfers them to `to`.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `quantity` must be greater than 0.
*
* Emits a {Transfer} event.
*/
function _mint(
address to,
uint256 quantity,
bytes memory _data,
bool safe
) internal {
uint256 startTokenId = _currentIndex;
if (to == address(0)) revert MintToZeroAddress();
if (quantity == 0) revert MintZeroQuantity();
_beforeTokenTransfers(address(0), to, startTokenId, quantity);
// Overflows are incredibly unrealistic.
// balance or numberMinted overflow if current value of either + quantity > 3.4e38 (2**128) - 1
// updatedIndex overflows if _currentIndex + quantity > 1.56e77 (2**256) - 1
unchecked {
_addressData[to].balance += uint128(quantity);
_addressData[to].numberMinted += uint128(quantity);
_ownerships[startTokenId].addr = to;
_ownerships[startTokenId].startTimestamp = uint64(block.timestamp);
uint256 updatedIndex = startTokenId;
for (uint256 i; i < quantity; i++) {
emit Transfer(address(0), to, updatedIndex);
if (safe && !_checkOnERC721Received(address(0), to, updatedIndex, _data)) {
revert TransferToNonERC721ReceiverImplementer();
}
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()));
if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();
if (prevOwnership.addr != from) revert TransferFromIncorrectOwner();
if (to == address(0)) revert TransferToZeroAddress();
_beforeTokenTransfers(from, to, tokenId, 1);
// Clear approvals from the previous owner
_approve(address(0), tokenId, prevOwnership.addr);
// Underflow of the sender's balance is impossible because we check for
// ownership above and the recipient's balance can't realistically overflow.
// Counter overflow is incredibly unrealistic as tokenId would have to be 2**256.
unchecked {
_addressData[from].balance -= 1;
_addressData[to].balance += 1;
_ownerships[tokenId].addr = to;
_ownerships[tokenId].startTimestamp = 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].addr = prevOwnership.addr;
_ownerships[nextTokenId].startTimestamp = 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);
}
/**
* @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 TransferToNonERC721ReceiverImplementer();
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: mintnft/AdventureIsland.sol
pragma solidity ^0.8.0;
contract AdventureIsland is ERC721A, Ownable{
using Strings for uint256;
uint256 public constant TOTAL_SUPPLY = 1534;
uint256 public constant MAX_ALLOW_PUBLIC_MINT = 3;
uint256[] public MAX_ALLOW_WHITELIST_MINT = [0, 1, 3, 3, 3];
uint256 public constant PUBLIC_ALLOW_SALE_PRICE = .07 ether;
uint256[] public WHITELIST_ALLOW_SALE_PRICE = [0, 0, .05 ether, .05 ether, .07 ether];
uint256 public constant LAST_STAGE = 4;
string public baseTokenUri;
string public placeholderTokenUri;
//deploy smart contract, toggle WL, toggle WL when done, toggle publicSale
//2 days later toggle reveal
bool public isRevealed;
bool public publicSale;
bool public whiteListSale;
bool public pause;
bool public teamMinted;
bytes32 private merkleRoot;
uint256 public STAGE = 1;
mapping(uint256 => mapping(address => uint256)) public totalPublicMint;
mapping(uint256 => mapping(address => uint256)) public totalWhitelistMint;
constructor() ERC721A("Adventure Island", "BNN"){
}
modifier callerIsUser() {
require(tx.origin == msg.sender, "Adventure Island :: Cannot be called by a contract");
_;
}
function mint(uint256 _quantity) external payable callerIsUser{
require(pause, "Adventure Island : Mint closed.");
require(publicSale, "Adventure Island : Not Yet Active.");
require((totalSupply() + _quantity) <= TOTAL_SUPPLY, "Adventure Island : Beyond Max Supply");
require(_quantity <= MAX_ALLOW_PUBLIC_MINT, "Adventure Island : Max mint is 3");
require(STAGE <= LAST_STAGE, "Adventure Island : LAST STAGE IS STAGE 4");
require((totalPublicMint[STAGE][msg.sender] +_quantity) <= MAX_ALLOW_PUBLIC_MINT, "Adventure Island : Already minted 3 NFTs!");
require(msg.value >= (PUBLIC_ALLOW_SALE_PRICE * _quantity), "Adventure Island : Below ");
totalPublicMint[STAGE][msg.sender] += _quantity;
_safeMint(msg.sender, _quantity);
}
function whitelistMint(bytes32[] memory _merkleProof, uint256 _quantity) external payable callerIsUser{
//create leaf node
bytes32 sender = keccak256(abi.encodePacked(msg.sender));
require(MerkleProof.verify(_merkleProof, merkleRoot, sender), "Adventure Island : You are not whitelisted");
require(pause, "Adventure Island : Mint closed.");
require(whiteListSale, "Adventure Island : Minting is on Pause");
require((totalSupply() + _quantity) <= TOTAL_SUPPLY, "Adventure Island : Cannot mint beyond max supply");
require(_quantity <= MAX_ALLOW_WHITELIST_MINT[STAGE], "Adventure Island : Max mint is 3");
require((totalWhitelistMint[STAGE][msg.sender] + _quantity) <= MAX_ALLOW_WHITELIST_MINT[STAGE], "Adventure Island : Cannot mint beyond whitelist max mint!");
require(msg.value >= (WHITELIST_ALLOW_SALE_PRICE[STAGE] * _quantity), "Adventure Island : Payment is below the price");
require(STAGE <= LAST_STAGE, "Adventure Island : LAST STAGE IS STAGE 4");
totalWhitelistMint[STAGE][msg.sender] += _quantity;
_safeMint(msg.sender, _quantity);
}
function teamMint() external onlyOwner{
require(!teamMinted, "Adventure Island : Team already minted");
teamMinted = true;
_safeMint(msg.sender, 12);
}
function _baseURI() internal view virtual override returns (string memory) {
return baseTokenUri;
}
//return uri for certain token
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
uint256 trueId = tokenId + 1;
if(!isRevealed){
return placeholderTokenUri;
}
//string memory baseURI = _baseURI();
return bytes(baseTokenUri).length > 0 ? string(abi.encodePacked(baseTokenUri, trueId.toString(), ".json")) : "";
}
/// @dev walletOf() function shouldn't be called on-chain due to gas consumption
function walletOf() external view returns(uint256[] memory){
address _owner = msg.sender;
uint256 numberOfOwnedNFT = balanceOf(_owner);
uint256[] memory ownerIds = new uint256[](numberOfOwnedNFT);
for(uint256 index = 0; index < numberOfOwnedNFT; index++){
ownerIds[index] = tokenOfOwnerByIndex(_owner, index);
}
return ownerIds;
}
function setTokenUri(string memory _baseTokenUri) external onlyOwner{
baseTokenUri = _baseTokenUri;
}
function setPlaceHolderUri(string memory _placeholderTokenUri) external onlyOwner{
placeholderTokenUri = _placeholderTokenUri;
}
function setMerkleRoot(bytes32 _merkleRoot) external onlyOwner{
merkleRoot = _merkleRoot;
}
function getMerkleRoot() external view returns (bytes32){
return merkleRoot;
}
function updateSTAGE(uint256 _stage) external onlyOwner{
STAGE = _stage;
}
function togglePause() external onlyOwner{
pause = !pause;
}
function toggleWhiteListSale() external onlyOwner{
whiteListSale = !whiteListSale;
}
function togglePublicSale() external onlyOwner{
publicSale = !publicSale;
}
function toggleReveal() external onlyOwner{
isRevealed = !isRevealed;
}
function withdraw() external onlyOwner{
// can split to percentage if needed
payable(0x5A68ffd29a8617A527F6bBd21C39F3A7d8Ec77bf).transfer(address(this).balance);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerIndexOutOfBounds","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TokenIndexOutOfBounds","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"UnableDetermineTokenOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LAST_STAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_ALLOW_PUBLIC_MINT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"MAX_ALLOW_WHITELIST_MINT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PUBLIC_ALLOW_SALE_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"WHITELIST_ALLOW_SALE_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseTokenUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":[],"name":"isRevealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"placeholderTokenUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_placeholderTokenUri","type":"string"}],"name":"setPlaceHolderUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseTokenUri","type":"string"}],"name":"setTokenUri","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":[],"name":"teamMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"teamMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"togglePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"togglePublicSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleReveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleWhiteListSale","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"totalPublicMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"totalWhitelistMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stage","type":"uint256"}],"name":"updateSTAGE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletOf","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whiteListSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"whitelistMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526040518060a00160405280600060ff168152602001600160ff168152602001600360ff168152602001600360ff168152602001600360ff1681525060089060056200005192919062000277565b506040518060a00160405280600066ffffffffffffff168152602001600066ffffffffffffff16815260200166b1a2bc2ec5000066ffffffffffffff16815260200166b1a2bc2ec5000066ffffffffffffff16815260200166f8b0a10e47000066ffffffffffffff168152506009906005620000cf929190620002ce565b506001600e55348015620000e257600080fd5b506040518060400160405280601081526020017f416476656e747572652049736c616e64000000000000000000000000000000008152506040518060400160405280600381526020017f424e4e00000000000000000000000000000000000000000000000000000000008152508160019080519060200190620001679291906200032b565b508060029080519060200190620001809291906200032b565b505050620001a362000197620001a960201b60201c565b620001b160201b60201c565b62000440565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054828255906000526020600020908101928215620002bb579160200282015b82811115620002ba578251829060ff1690559160200191906001019062000298565b5b509050620002ca9190620003bc565b5090565b82805482825590600052602060002090810192821562000318579160200282015b8281111562000317578251829066ffffffffffffff16905591602001919060010190620002ef565b5b509050620003279190620003bc565b5090565b8280546200033990620003db565b90600052602060002090601f0160209004810192826200035d5760008555620003a9565b82601f106200037857805160ff1916838001178555620003a9565b82800160010185558215620003a9579182015b82811115620003a85782518255916020019190600101906200038b565b5b509050620003b89190620003bc565b5090565b5b80821115620003d7576000816000905550600101620003bd565b5090565b60006002820490506001821680620003f457607f821691505b602082108114156200040b576200040a62000411565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61522580620004506000396000f3fe6080604052600436106102ae5760003560e01c8063715018a611610175578063a22cb465116100dc578063c4ae316811610095578063e222c7f91161006f578063e222c7f914610a60578063e8b5498d14610a77578063e985e9c514610aa2578063f2fde38b14610adf576102ae565b8063c4ae3168146109e1578063c87b56dd146109f8578063da46257e14610a35576102ae565b8063a22cb465146108e7578063a32fbc9614610910578063b0962c531461093b578063b60f8d0d14610964578063b88d4fde146109a1578063ba7a86b8146109ca576102ae565b80638bb64a8c1161012e5780638bb64a8c146107f65780638c9107741461080d5780638da5cb5b1461084a578063902d55a51461087557806395d89b41146108a0578063a0712d68146108cb576102ae565b8063715018a61461070a5780637a0101a2146107215780637cb647591461074c57806383a974a2146107755780638456cb59146107a057806386a173ee146107cb576102ae565b806342842e0e1161021957806354214f69116101d257806354214f69146105f857806359bf55bf146106235780635b8ad4291461064e5780636352211e1461066557806370a08231146106a257806370c24706146106df576102ae565b806342842e0e146104c2578063472316dd146104eb57806349590657146105285780634cf5f7a4146105535780634db86cb11461057e5780634f6ccce7146105bb576102ae565b80631f01f04b1161026b5780631f01f04b146103d557806323b872dd146103fe5780632904e6d9146104275780632f745c591461044357806333bc1c5c146104805780633ccfd60b146104ab576102ae565b806301ffc9a7146102b35780630675b7c6146102f057806306fdde0314610319578063081812fc14610344578063095ea7b31461038157806318160ddd146103aa575b600080fd5b3480156102bf57600080fd5b506102da60048036038101906102d59190613eea565b610b08565b6040516102e79190614525565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613f3c565b610c52565b005b34801561032557600080fd5b5061032e610ce8565b60405161033b919061455b565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613f7d565b610d7a565b604051610378919061449c565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190613e31565b610df6565b005b3480156103b657600080fd5b506103bf610f01565b6040516103cc919061479d565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f79190613f7d565b610f0a565b005b34801561040a57600080fd5b5061042560048036038101906104209190613d2b565b610f90565b005b610441600480360381019061043c9190613e6d565b610fa0565b005b34801561044f57600080fd5b5061046a60048036038101906104659190613e31565b61143b565b604051610477919061479d565b60405180910390f35b34801561048c57600080fd5b50610495611622565b6040516104a29190614525565b60405180910390f35b3480156104b757600080fd5b506104c0611635565b005b3480156104ce57600080fd5b506104e960048036038101906104e49190613d2b565b61170e565b005b3480156104f757600080fd5b50610512600480360381019061050d9190613f7d565b61172e565b60405161051f919061479d565b60405180910390f35b34801561053457600080fd5b5061053d611752565b60405161054a9190614540565b60405180910390f35b34801561055f57600080fd5b5061056861175c565b604051610575919061455b565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a09190613fa6565b6117ea565b6040516105b2919061479d565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd9190613f7d565b61180f565b6040516105ef919061479d565b60405180910390f35b34801561060457600080fd5b5061060d611859565b60405161061a9190614525565b60405180910390f35b34801561062f57600080fd5b5061063861186c565b604051610645919061479d565b60405180910390f35b34801561065a57600080fd5b50610663611871565b005b34801561067157600080fd5b5061068c60048036038101906106879190613f7d565b611919565b604051610699919061449c565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190613cc6565b61192f565b6040516106d6919061479d565b60405180910390f35b3480156106eb57600080fd5b506106f4611a0f565b604051610701919061479d565b60405180910390f35b34801561071657600080fd5b5061071f611a15565b005b34801561072d57600080fd5b50610736611a9d565b604051610743919061455b565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190613ec1565b611b2b565b005b34801561078157600080fd5b5061078a611bb1565b6040516107979190614503565b60405180910390f35b3480156107ac57600080fd5b506107b5611caf565b6040516107c29190614525565b60405180910390f35b3480156107d757600080fd5b506107e0611cc2565b6040516107ed9190614525565b60405180910390f35b34801561080257600080fd5b5061080b611cd5565b005b34801561081957600080fd5b50610834600480360381019061082f9190613fa6565b611d7d565b604051610841919061479d565b60405180910390f35b34801561085657600080fd5b5061085f611da2565b60405161086c919061449c565b60405180910390f35b34801561088157600080fd5b5061088a611dcc565b604051610897919061479d565b60405180910390f35b3480156108ac57600080fd5b506108b5611dd2565b6040516108c2919061455b565b60405180910390f35b6108e560048036038101906108e09190613f7d565b611e64565b005b3480156108f357600080fd5b5061090e60048036038101906109099190613df5565b6121bd565b005b34801561091c57600080fd5b50610925612335565b604051610932919061479d565b60405180910390f35b34801561094757600080fd5b50610962600480360381019061095d9190613f3c565b612340565b005b34801561097057600080fd5b5061098b60048036038101906109869190613f7d565b6123d6565b604051610998919061479d565b60405180910390f35b3480156109ad57600080fd5b506109c860048036038101906109c39190613d7a565b6123fa565b005b3480156109d657600080fd5b506109df61244d565b005b3480156109ed57600080fd5b506109f6612541565b005b348015610a0457600080fd5b50610a1f6004803603810190610a1a9190613f7d565b6125e9565b604051610a2c919061455b565b60405180910390f35b348015610a4157600080fd5b50610a4a61274b565b604051610a57919061479d565b60405180910390f35b348015610a6c57600080fd5b50610a75612750565b005b348015610a8357600080fd5b50610a8c6127f8565b604051610a999190614525565b60405180910390f35b348015610aae57600080fd5b50610ac96004803603810190610ac49190613cef565b61280b565b604051610ad69190614525565b60405180910390f35b348015610aeb57600080fd5b50610b066004803603810190610b019190613cc6565b61289f565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610bd357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c3b57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c4b5750610c4a82612997565b5b9050919050565b610c5a612a01565b73ffffffffffffffffffffffffffffffffffffffff16610c78611da2565b73ffffffffffffffffffffffffffffffffffffffff1614610cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc59061465d565b60405180910390fd5b80600a9080519060200190610ce4929190613a05565b5050565b606060018054610cf790614ad1565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2390614ad1565b8015610d705780601f10610d4557610100808354040283529160200191610d70565b820191906000526020600020905b815481529060010190602001808311610d5357829003601f168201915b5050505050905090565b6000610d8582612a09565b610dbb576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e0182611919565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e69576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e88612a01565b73ffffffffffffffffffffffffffffffffffffffff1614158015610eba5750610eb881610eb3612a01565b61280b565b155b15610ef1576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610efc838383612a16565b505050565b60008054905090565b610f12612a01565b73ffffffffffffffffffffffffffffffffffffffff16610f30611da2565b73ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9061465d565b60405180910390fd5b80600e8190555050565b610f9b838383612ac8565b505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461100e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110059061461d565b60405180910390fd5b6000336040516020016110219190614452565b60405160208183030381529060405280519060200120905061104683600d5483612fed565b611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c9061475d565b60405180910390fd5b600c60039054906101000a900460ff166110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb906146bd565b60405180910390fd5b600c60029054906101000a900460ff16611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a9061457d565b60405180910390fd5b6105fe8261112f610f01565b61113991906148fc565b111561117a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111719061469d565b60405180910390fd5b6008600e54815481106111b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154821115611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061471d565b60405180910390fd5b6008600e548154811061123f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001548260106000600e54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112a891906148fc565b11156112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e0906146fd565b60405180910390fd5b816009600e5481548110611326577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015461133b9190614983565b34101561137d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113749061473d565b60405180910390fd5b6004600e5411156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba906145bd565b60405180910390fd5b8160106000600e54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461142591906148fc565b925050819055506114363383613004565b505050565b60006114468361192f565b821061147e576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611488610f01565b905060008060005b838110156115e2576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461158257806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115d457868414156115cb57819550505050505061161c565b83806001019450505b508080600101915050611490565b506000611618577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b5050505b92915050565b600c60019054906101000a900460ff1681565b61163d612a01565b73ffffffffffffffffffffffffffffffffffffffff1661165b611da2565b73ffffffffffffffffffffffffffffffffffffffff16146116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a89061465d565b60405180910390fd5b735a68ffd29a8617a527f6bbd21c39f3a7d8ec77bf73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561170b573d6000803e3d6000fd5b50565b611729838383604051806020016040528060008152506123fa565b505050565b6008818154811061173e57600080fd5b906000526020600020016000915090505481565b6000600d54905090565b600b805461176990614ad1565b80601f016020809104026020016040519081016040528092919081815260200182805461179590614ad1565b80156117e25780601f106117b7576101008083540402835291602001916117e2565b820191906000526020600020905b8154815290600101906020018083116117c557829003601f168201915b505050505081565b600f602052816000526040600020602052806000526040600020600091509150505481565b6000611819610f01565b8210611851576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b600c60009054906101000a900460ff1681565b600381565b611879612a01565b73ffffffffffffffffffffffffffffffffffffffff16611897611da2565b73ffffffffffffffffffffffffffffffffffffffff16146118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e49061465d565b60405180910390fd5b600c60009054906101000a900460ff1615600c60006101000a81548160ff021916908315150217905550565b600061192482613022565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611997576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b600e5481565b611a1d612a01565b73ffffffffffffffffffffffffffffffffffffffff16611a3b611da2565b73ffffffffffffffffffffffffffffffffffffffff1614611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a889061465d565b60405180910390fd5b611a9b60006131aa565b565b600a8054611aaa90614ad1565b80601f0160208091040260200160405190810160405280929190818152602001828054611ad690614ad1565b8015611b235780601f10611af857610100808354040283529160200191611b23565b820191906000526020600020905b815481529060010190602001808311611b0657829003601f168201915b505050505081565b611b33612a01565b73ffffffffffffffffffffffffffffffffffffffff16611b51611da2565b73ffffffffffffffffffffffffffffffffffffffff1614611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e9061465d565b60405180910390fd5b80600d8190555050565b606060003390506000611bc38261192f565b905060008167ffffffffffffffff811115611c07577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611c355781602001602082028036833780820191505090505b50905060005b82811015611ca557611c4d848261143b565b828281518110611c86577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508080611c9d90614b34565b915050611c3b565b5080935050505090565b600c60039054906101000a900460ff1681565b600c60029054906101000a900460ff1681565b611cdd612a01565b73ffffffffffffffffffffffffffffffffffffffff16611cfb611da2565b73ffffffffffffffffffffffffffffffffffffffff1614611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d489061465d565b60405180910390fd5b600c60029054906101000a900460ff1615600c60026101000a81548160ff021916908315150217905550565b6010602052816000526040600020602052806000526040600020600091509150505481565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105fe81565b606060028054611de190614ad1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e0d90614ad1565b8015611e5a5780601f10611e2f57610100808354040283529160200191611e5a565b820191906000526020600020905b815481529060010190602001808311611e3d57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec99061461d565b60405180910390fd5b600c60039054906101000a900460ff16611f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f18906146bd565b60405180910390fd5b600c60019054906101000a900460ff16611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f679061463d565b60405180910390fd5b6105fe81611f7c610f01565b611f8691906148fc565b1115611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe906145fd565b60405180910390fd5b600381111561200b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120029061471d565b60405180910390fd5b6004600e541115612051576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612048906145bd565b60405180910390fd5b600381600f6000600e54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b191906148fc565b11156120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e9906146dd565b60405180910390fd5b8066f8b0a10e4700006121059190614983565b341015612147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213e9061477d565b60405180910390fd5b80600f6000600e54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121a991906148fc565b925050819055506121ba3382613004565b50565b6121c5612a01565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561222a576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060066000612237612a01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166122e4612a01565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123299190614525565b60405180910390a35050565b66f8b0a10e47000081565b612348612a01565b73ffffffffffffffffffffffffffffffffffffffff16612366611da2565b73ffffffffffffffffffffffffffffffffffffffff16146123bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b39061465d565b60405180910390fd5b80600b90805190602001906123d2929190613a05565b5050565b600981815481106123e657600080fd5b906000526020600020016000915090505481565b612405848484612ac8565b61241184848484613270565b612447576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b612455612a01565b73ffffffffffffffffffffffffffffffffffffffff16612473611da2565b73ffffffffffffffffffffffffffffffffffffffff16146124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c09061465d565b60405180910390fd5b600c60049054906101000a900460ff1615612519576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612510906145dd565b60405180910390fd5b6001600c60046101000a81548160ff02191690831515021790555061253f33600c613004565b565b612549612a01565b73ffffffffffffffffffffffffffffffffffffffff16612567611da2565b73ffffffffffffffffffffffffffffffffffffffff16146125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b49061465d565b60405180910390fd5b600c60039054906101000a900460ff1615600c60036101000a81548160ff021916908315150217905550565b60606125f482612a09565b612633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262a9061467d565b60405180910390fd5b600060018361264291906148fc565b9050600c60009054906101000a900460ff166126eb57600b805461266590614ad1565b80601f016020809104026020016040519081016040528092919081815260200182805461269190614ad1565b80156126de5780601f106126b3576101008083540402835291602001916126de565b820191906000526020600020905b8154815290600101906020018083116126c157829003601f168201915b5050505050915050612746565b6000600a80546126fa90614ad1565b9050116127165760405180602001604052806000815250612742565b600a612721826133fe565b60405160200161273292919061446d565b6040516020818303038152906040525b9150505b919050565b600481565b612758612a01565b73ffffffffffffffffffffffffffffffffffffffff16612776611da2565b73ffffffffffffffffffffffffffffffffffffffff16146127cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c39061465d565b60405180910390fd5b600c60019054906101000a900460ff1615600c60016101000a81548160ff021916908315150217905550565b600c60049054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6128a7612a01565b73ffffffffffffffffffffffffffffffffffffffff166128c5611da2565b73ffffffffffffffffffffffffffffffffffffffff161461291b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129129061465d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561298b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129829061459d565b60405180910390fd5b612994816131aa565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000612ad382613022565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612afa612a01565b73ffffffffffffffffffffffffffffffffffffffff161480612b565750612b1f612a01565b73ffffffffffffffffffffffffffffffffffffffff16612b3e84610d7a565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b725750612b718260000151612b6c612a01565b61280b565b5b905080612bab576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612c14576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c7b576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c8885858560016135ab565b612c986000848460000151612a16565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612f7d57612edc81612a09565b15612f7c5782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612fe685858560016135b1565b5050505050565b600082612ffa85846135b7565b1490509392505050565b61301e828260405180602001604052806000815250613652565b5050565b61302a613a8b565b61303382612a09565b613069576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290505b60008110613172576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146131635780925050506131a5565b5080806001900391505061306f565b506040517fe7c0edfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006132918473ffffffffffffffffffffffffffffffffffffffff16613664565b156133f1578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026132ba612a01565b8786866040518563ffffffff1660e01b81526004016132dc94939291906144b7565b602060405180830381600087803b1580156132f657600080fd5b505af192505050801561332757506040513d601f19601f820116820180604052508101906133249190613f13565b60015b6133a1573d8060008114613357576040519150601f19603f3d011682016040523d82523d6000602084013e61335c565b606091505b50600081511415613399576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506133f6565b600190505b949350505050565b60606000821415613446576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506135a6565b600082905060005b6000821461347857808061346190614b34565b915050600a826134719190614952565b915061344e565b60008167ffffffffffffffff8111156134ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156134ec5781602001600182028036833780820191505090505b5090505b6000851461359f5760018261350591906149dd565b9150600a856135149190614ba1565b603061352091906148fc565b60f81b81838151811061355c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856135989190614952565b94506134f0565b8093505050505b919050565b50505050565b50505050565b60008082905060005b8451811015613647576000858281518110613604577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190508083116136265761361f8382613687565b9250613633565b6136308184613687565b92505b50808061363f90614b34565b9150506135c0565b508091505092915050565b61365f838383600161369e565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082600052816020526040600020905092915050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561370b576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415613746576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61375360008683876135ab565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b858110156139e857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a483801561399c575061399a6000888488613270565b155b156139d3576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81806001019250508080600101915050613921565b5080600081905550506139fe60008683876135b1565b5050505050565b828054613a1190614ad1565b90600052602060002090601f016020900481019282613a335760008555613a7a565b82601f10613a4c57805160ff1916838001178555613a7a565b82800160010185558215613a7a579182015b82811115613a79578251825591602001919060010190613a5e565b5b509050613a879190613ac5565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115613ade576000816000905550600101613ac6565b5090565b6000613af5613af0846147dd565b6147b8565b90508083825260208201905082856020860282011115613b1457600080fd5b60005b85811015613b445781613b2a8882613c1e565b845260208401935060208301925050600181019050613b17565b5050509392505050565b6000613b61613b5c84614809565b6147b8565b905082815260208101848484011115613b7957600080fd5b613b84848285614a8f565b509392505050565b6000613b9f613b9a8461483a565b6147b8565b905082815260208101848484011115613bb757600080fd5b613bc2848285614a8f565b509392505050565b600081359050613bd98161517c565b92915050565b600082601f830112613bf057600080fd5b8135613c00848260208601613ae2565b91505092915050565b600081359050613c1881615193565b92915050565b600081359050613c2d816151aa565b92915050565b600081359050613c42816151c1565b92915050565b600081519050613c57816151c1565b92915050565b600082601f830112613c6e57600080fd5b8135613c7e848260208601613b4e565b91505092915050565b600082601f830112613c9857600080fd5b8135613ca8848260208601613b8c565b91505092915050565b600081359050613cc0816151d8565b92915050565b600060208284031215613cd857600080fd5b6000613ce684828501613bca565b91505092915050565b60008060408385031215613d0257600080fd5b6000613d1085828601613bca565b9250506020613d2185828601613bca565b9150509250929050565b600080600060608486031215613d4057600080fd5b6000613d4e86828701613bca565b9350506020613d5f86828701613bca565b9250506040613d7086828701613cb1565b9150509250925092565b60008060008060808587031215613d9057600080fd5b6000613d9e87828801613bca565b9450506020613daf87828801613bca565b9350506040613dc087828801613cb1565b925050606085013567ffffffffffffffff811115613ddd57600080fd5b613de987828801613c5d565b91505092959194509250565b60008060408385031215613e0857600080fd5b6000613e1685828601613bca565b9250506020613e2785828601613c09565b9150509250929050565b60008060408385031215613e4457600080fd5b6000613e5285828601613bca565b9250506020613e6385828601613cb1565b9150509250929050565b60008060408385031215613e8057600080fd5b600083013567ffffffffffffffff811115613e9a57600080fd5b613ea685828601613bdf565b9250506020613eb785828601613cb1565b9150509250929050565b600060208284031215613ed357600080fd5b6000613ee184828501613c1e565b91505092915050565b600060208284031215613efc57600080fd5b6000613f0a84828501613c33565b91505092915050565b600060208284031215613f2557600080fd5b6000613f3384828501613c48565b91505092915050565b600060208284031215613f4e57600080fd5b600082013567ffffffffffffffff811115613f6857600080fd5b613f7484828501613c87565b91505092915050565b600060208284031215613f8f57600080fd5b6000613f9d84828501613cb1565b91505092915050565b60008060408385031215613fb957600080fd5b6000613fc785828601613cb1565b9250506020613fd885828601613bca565b9150509250929050565b6000613fee8383614434565b60208301905092915050565b61400381614a11565b82525050565b61401a61401582614a11565b614b7d565b82525050565b600061402b82614890565b61403581856148be565b93506140408361486b565b8060005b838110156140715781516140588882613fe2565b9750614063836148b1565b925050600181019050614044565b5085935050505092915050565b61408781614a23565b82525050565b61409681614a2f565b82525050565b60006140a78261489b565b6140b181856148cf565b93506140c1818560208601614a9e565b6140ca81614c8e565b840191505092915050565b60006140e0826148a6565b6140ea81856148e0565b93506140fa818560208601614a9e565b61410381614c8e565b840191505092915050565b6000614119826148a6565b61412381856148f1565b9350614133818560208601614a9e565b80840191505092915050565b6000815461414c81614ad1565b61415681866148f1565b945060018216600081146141715760018114614182576141b5565b60ff198316865281860193506141b5565b61418b8561487b565b60005b838110156141ad5781548189015260018201915060208101905061418e565b838801955050505b50505092915050565b60006141cb6026836148e0565b91506141d682614cac565b604082019050919050565b60006141ee6026836148e0565b91506141f982614cfb565b604082019050919050565b60006142116028836148e0565b915061421c82614d4a565b604082019050919050565b60006142346026836148e0565b915061423f82614d99565b604082019050919050565b60006142576024836148e0565b915061426282614de8565b604082019050919050565b600061427a6032836148e0565b915061428582614e37565b604082019050919050565b600061429d6005836148f1565b91506142a882614e86565b600582019050919050565b60006142c06022836148e0565b91506142cb82614eaf565b604082019050919050565b60006142e36020836148e0565b91506142ee82614efe565b602082019050919050565b6000614306602f836148e0565b915061431182614f27565b604082019050919050565b60006143296030836148e0565b915061433482614f76565b604082019050919050565b600061434c601f836148e0565b915061435782614fc5565b602082019050919050565b600061436f6029836148e0565b915061437a82614fee565b604082019050919050565b60006143926039836148e0565b915061439d8261503d565b604082019050919050565b60006143b56020836148e0565b91506143c08261508c565b602082019050919050565b60006143d8602d836148e0565b91506143e3826150b5565b604082019050919050565b60006143fb602a836148e0565b915061440682615104565b604082019050919050565b600061441e6019836148e0565b915061442982615153565b602082019050919050565b61443d81614a85565b82525050565b61444c81614a85565b82525050565b600061445e8284614009565b60148201915081905092915050565b6000614479828561413f565b9150614485828461410e565b915061449082614290565b91508190509392505050565b60006020820190506144b16000830184613ffa565b92915050565b60006080820190506144cc6000830187613ffa565b6144d96020830186613ffa565b6144e66040830185614443565b81810360608301526144f8818461409c565b905095945050505050565b6000602082019050818103600083015261451d8184614020565b905092915050565b600060208201905061453a600083018461407e565b92915050565b6000602082019050614555600083018461408d565b92915050565b6000602082019050818103600083015261457581846140d5565b905092915050565b60006020820190508181036000830152614596816141be565b9050919050565b600060208201905081810360008301526145b6816141e1565b9050919050565b600060208201905081810360008301526145d681614204565b9050919050565b600060208201905081810360008301526145f681614227565b9050919050565b600060208201905081810360008301526146168161424a565b9050919050565b600060208201905081810360008301526146368161426d565b9050919050565b60006020820190508181036000830152614656816142b3565b9050919050565b60006020820190508181036000830152614676816142d6565b9050919050565b60006020820190508181036000830152614696816142f9565b9050919050565b600060208201905081810360008301526146b68161431c565b9050919050565b600060208201905081810360008301526146d68161433f565b9050919050565b600060208201905081810360008301526146f681614362565b9050919050565b6000602082019050818103600083015261471681614385565b9050919050565b60006020820190508181036000830152614736816143a8565b9050919050565b60006020820190508181036000830152614756816143cb565b9050919050565b60006020820190508181036000830152614776816143ee565b9050919050565b6000602082019050818103600083015261479681614411565b9050919050565b60006020820190506147b26000830184614443565b92915050565b60006147c26147d3565b90506147ce8282614b03565b919050565b6000604051905090565b600067ffffffffffffffff8211156147f8576147f7614c5f565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561482457614823614c5f565b5b61482d82614c8e565b9050602081019050919050565b600067ffffffffffffffff82111561485557614854614c5f565b5b61485e82614c8e565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061490782614a85565b915061491283614a85565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561494757614946614bd2565b5b828201905092915050565b600061495d82614a85565b915061496883614a85565b92508261497857614977614c01565b5b828204905092915050565b600061498e82614a85565b915061499983614a85565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149d2576149d1614bd2565b5b828202905092915050565b60006149e882614a85565b91506149f383614a85565b925082821015614a0657614a05614bd2565b5b828203905092915050565b6000614a1c82614a65565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614abc578082015181840152602081019050614aa1565b83811115614acb576000848401525b50505050565b60006002820490506001821680614ae957607f821691505b60208210811415614afd57614afc614c30565b5b50919050565b614b0c82614c8e565b810181811067ffffffffffffffff82111715614b2b57614b2a614c5f565b5b80604052505050565b6000614b3f82614a85565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614b7257614b71614bd2565b5b600182019050919050565b6000614b8882614b8f565b9050919050565b6000614b9a82614c9f565b9050919050565b6000614bac82614a85565b9150614bb783614a85565b925082614bc757614bc6614c01565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f416476656e747572652049736c616e64203a204d696e74696e67206973206f6e60008201527f2050617573650000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a204c41535420535441474520495360008201527f2053544147452034000000000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a205465616d20616c72656164792060008201527f6d696e7465640000000000000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a204265796f6e64204d617820537560008201527f70706c7900000000000000000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a3a2043616e6e6f7420626520636160008201527f6c6c6564206279206120636f6e74726163740000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f416476656e747572652049736c616e64203a204e6f742059657420416374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a2043616e6e6f74206d696e74206260008201527f65796f6e64206d617820737570706c7900000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a204d696e7420636c6f7365642e00600082015250565b7f416476656e747572652049736c616e64203a20416c7265616479206d696e746560008201527f642033204e465473210000000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a2043616e6e6f74206d696e74206260008201527f65796f6e642077686974656c697374206d6178206d696e742100000000000000602082015250565b7f416476656e747572652049736c616e64203a204d6178206d696e742069732033600082015250565b7f416476656e747572652049736c616e64203a205061796d656e7420697320626560008201527f6c6f772074686520707269636500000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a20596f7520617265206e6f74207760008201527f686974656c697374656400000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a2042656c6f772000000000000000600082015250565b61518581614a11565b811461519057600080fd5b50565b61519c81614a23565b81146151a757600080fd5b50565b6151b381614a2f565b81146151be57600080fd5b50565b6151ca81614a39565b81146151d557600080fd5b50565b6151e181614a85565b81146151ec57600080fd5b5056fea264697066735822122028f7f49e0ab8e9e7f896cb2bb8575b1cb28f7f901a8d7fde670081948336fe2b64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106102ae5760003560e01c8063715018a611610175578063a22cb465116100dc578063c4ae316811610095578063e222c7f91161006f578063e222c7f914610a60578063e8b5498d14610a77578063e985e9c514610aa2578063f2fde38b14610adf576102ae565b8063c4ae3168146109e1578063c87b56dd146109f8578063da46257e14610a35576102ae565b8063a22cb465146108e7578063a32fbc9614610910578063b0962c531461093b578063b60f8d0d14610964578063b88d4fde146109a1578063ba7a86b8146109ca576102ae565b80638bb64a8c1161012e5780638bb64a8c146107f65780638c9107741461080d5780638da5cb5b1461084a578063902d55a51461087557806395d89b41146108a0578063a0712d68146108cb576102ae565b8063715018a61461070a5780637a0101a2146107215780637cb647591461074c57806383a974a2146107755780638456cb59146107a057806386a173ee146107cb576102ae565b806342842e0e1161021957806354214f69116101d257806354214f69146105f857806359bf55bf146106235780635b8ad4291461064e5780636352211e1461066557806370a08231146106a257806370c24706146106df576102ae565b806342842e0e146104c2578063472316dd146104eb57806349590657146105285780634cf5f7a4146105535780634db86cb11461057e5780634f6ccce7146105bb576102ae565b80631f01f04b1161026b5780631f01f04b146103d557806323b872dd146103fe5780632904e6d9146104275780632f745c591461044357806333bc1c5c146104805780633ccfd60b146104ab576102ae565b806301ffc9a7146102b35780630675b7c6146102f057806306fdde0314610319578063081812fc14610344578063095ea7b31461038157806318160ddd146103aa575b600080fd5b3480156102bf57600080fd5b506102da60048036038101906102d59190613eea565b610b08565b6040516102e79190614525565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613f3c565b610c52565b005b34801561032557600080fd5b5061032e610ce8565b60405161033b919061455b565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613f7d565b610d7a565b604051610378919061449c565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190613e31565b610df6565b005b3480156103b657600080fd5b506103bf610f01565b6040516103cc919061479d565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f79190613f7d565b610f0a565b005b34801561040a57600080fd5b5061042560048036038101906104209190613d2b565b610f90565b005b610441600480360381019061043c9190613e6d565b610fa0565b005b34801561044f57600080fd5b5061046a60048036038101906104659190613e31565b61143b565b604051610477919061479d565b60405180910390f35b34801561048c57600080fd5b50610495611622565b6040516104a29190614525565b60405180910390f35b3480156104b757600080fd5b506104c0611635565b005b3480156104ce57600080fd5b506104e960048036038101906104e49190613d2b565b61170e565b005b3480156104f757600080fd5b50610512600480360381019061050d9190613f7d565b61172e565b60405161051f919061479d565b60405180910390f35b34801561053457600080fd5b5061053d611752565b60405161054a9190614540565b60405180910390f35b34801561055f57600080fd5b5061056861175c565b604051610575919061455b565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a09190613fa6565b6117ea565b6040516105b2919061479d565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd9190613f7d565b61180f565b6040516105ef919061479d565b60405180910390f35b34801561060457600080fd5b5061060d611859565b60405161061a9190614525565b60405180910390f35b34801561062f57600080fd5b5061063861186c565b604051610645919061479d565b60405180910390f35b34801561065a57600080fd5b50610663611871565b005b34801561067157600080fd5b5061068c60048036038101906106879190613f7d565b611919565b604051610699919061449c565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190613cc6565b61192f565b6040516106d6919061479d565b60405180910390f35b3480156106eb57600080fd5b506106f4611a0f565b604051610701919061479d565b60405180910390f35b34801561071657600080fd5b5061071f611a15565b005b34801561072d57600080fd5b50610736611a9d565b604051610743919061455b565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190613ec1565b611b2b565b005b34801561078157600080fd5b5061078a611bb1565b6040516107979190614503565b60405180910390f35b3480156107ac57600080fd5b506107b5611caf565b6040516107c29190614525565b60405180910390f35b3480156107d757600080fd5b506107e0611cc2565b6040516107ed9190614525565b60405180910390f35b34801561080257600080fd5b5061080b611cd5565b005b34801561081957600080fd5b50610834600480360381019061082f9190613fa6565b611d7d565b604051610841919061479d565b60405180910390f35b34801561085657600080fd5b5061085f611da2565b60405161086c919061449c565b60405180910390f35b34801561088157600080fd5b5061088a611dcc565b604051610897919061479d565b60405180910390f35b3480156108ac57600080fd5b506108b5611dd2565b6040516108c2919061455b565b60405180910390f35b6108e560048036038101906108e09190613f7d565b611e64565b005b3480156108f357600080fd5b5061090e60048036038101906109099190613df5565b6121bd565b005b34801561091c57600080fd5b50610925612335565b604051610932919061479d565b60405180910390f35b34801561094757600080fd5b50610962600480360381019061095d9190613f3c565b612340565b005b34801561097057600080fd5b5061098b60048036038101906109869190613f7d565b6123d6565b604051610998919061479d565b60405180910390f35b3480156109ad57600080fd5b506109c860048036038101906109c39190613d7a565b6123fa565b005b3480156109d657600080fd5b506109df61244d565b005b3480156109ed57600080fd5b506109f6612541565b005b348015610a0457600080fd5b50610a1f6004803603810190610a1a9190613f7d565b6125e9565b604051610a2c919061455b565b60405180910390f35b348015610a4157600080fd5b50610a4a61274b565b604051610a57919061479d565b60405180910390f35b348015610a6c57600080fd5b50610a75612750565b005b348015610a8357600080fd5b50610a8c6127f8565b604051610a999190614525565b60405180910390f35b348015610aae57600080fd5b50610ac96004803603810190610ac49190613cef565b61280b565b604051610ad69190614525565b60405180910390f35b348015610aeb57600080fd5b50610b066004803603810190610b019190613cc6565b61289f565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610bd357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c3b57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c4b5750610c4a82612997565b5b9050919050565b610c5a612a01565b73ffffffffffffffffffffffffffffffffffffffff16610c78611da2565b73ffffffffffffffffffffffffffffffffffffffff1614610cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc59061465d565b60405180910390fd5b80600a9080519060200190610ce4929190613a05565b5050565b606060018054610cf790614ad1565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2390614ad1565b8015610d705780601f10610d4557610100808354040283529160200191610d70565b820191906000526020600020905b815481529060010190602001808311610d5357829003601f168201915b5050505050905090565b6000610d8582612a09565b610dbb576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e0182611919565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e69576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e88612a01565b73ffffffffffffffffffffffffffffffffffffffff1614158015610eba5750610eb881610eb3612a01565b61280b565b155b15610ef1576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610efc838383612a16565b505050565b60008054905090565b610f12612a01565b73ffffffffffffffffffffffffffffffffffffffff16610f30611da2565b73ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9061465d565b60405180910390fd5b80600e8190555050565b610f9b838383612ac8565b505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461100e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110059061461d565b60405180910390fd5b6000336040516020016110219190614452565b60405160208183030381529060405280519060200120905061104683600d5483612fed565b611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c9061475d565b60405180910390fd5b600c60039054906101000a900460ff166110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb906146bd565b60405180910390fd5b600c60029054906101000a900460ff16611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a9061457d565b60405180910390fd5b6105fe8261112f610f01565b61113991906148fc565b111561117a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111719061469d565b60405180910390fd5b6008600e54815481106111b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154821115611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061471d565b60405180910390fd5b6008600e548154811061123f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001548260106000600e54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112a891906148fc565b11156112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e0906146fd565b60405180910390fd5b816009600e5481548110611326577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015461133b9190614983565b34101561137d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113749061473d565b60405180910390fd5b6004600e5411156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba906145bd565b60405180910390fd5b8160106000600e54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461142591906148fc565b925050819055506114363383613004565b505050565b60006114468361192f565b821061147e576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611488610f01565b905060008060005b838110156115e2576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461158257806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115d457868414156115cb57819550505050505061161c565b83806001019450505b508080600101915050611490565b506000611618577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b5050505b92915050565b600c60019054906101000a900460ff1681565b61163d612a01565b73ffffffffffffffffffffffffffffffffffffffff1661165b611da2565b73ffffffffffffffffffffffffffffffffffffffff16146116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a89061465d565b60405180910390fd5b735a68ffd29a8617a527f6bbd21c39f3a7d8ec77bf73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561170b573d6000803e3d6000fd5b50565b611729838383604051806020016040528060008152506123fa565b505050565b6008818154811061173e57600080fd5b906000526020600020016000915090505481565b6000600d54905090565b600b805461176990614ad1565b80601f016020809104026020016040519081016040528092919081815260200182805461179590614ad1565b80156117e25780601f106117b7576101008083540402835291602001916117e2565b820191906000526020600020905b8154815290600101906020018083116117c557829003601f168201915b505050505081565b600f602052816000526040600020602052806000526040600020600091509150505481565b6000611819610f01565b8210611851576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b600c60009054906101000a900460ff1681565b600381565b611879612a01565b73ffffffffffffffffffffffffffffffffffffffff16611897611da2565b73ffffffffffffffffffffffffffffffffffffffff16146118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e49061465d565b60405180910390fd5b600c60009054906101000a900460ff1615600c60006101000a81548160ff021916908315150217905550565b600061192482613022565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611997576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b600e5481565b611a1d612a01565b73ffffffffffffffffffffffffffffffffffffffff16611a3b611da2565b73ffffffffffffffffffffffffffffffffffffffff1614611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a889061465d565b60405180910390fd5b611a9b60006131aa565b565b600a8054611aaa90614ad1565b80601f0160208091040260200160405190810160405280929190818152602001828054611ad690614ad1565b8015611b235780601f10611af857610100808354040283529160200191611b23565b820191906000526020600020905b815481529060010190602001808311611b0657829003601f168201915b505050505081565b611b33612a01565b73ffffffffffffffffffffffffffffffffffffffff16611b51611da2565b73ffffffffffffffffffffffffffffffffffffffff1614611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e9061465d565b60405180910390fd5b80600d8190555050565b606060003390506000611bc38261192f565b905060008167ffffffffffffffff811115611c07577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611c355781602001602082028036833780820191505090505b50905060005b82811015611ca557611c4d848261143b565b828281518110611c86577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508080611c9d90614b34565b915050611c3b565b5080935050505090565b600c60039054906101000a900460ff1681565b600c60029054906101000a900460ff1681565b611cdd612a01565b73ffffffffffffffffffffffffffffffffffffffff16611cfb611da2565b73ffffffffffffffffffffffffffffffffffffffff1614611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d489061465d565b60405180910390fd5b600c60029054906101000a900460ff1615600c60026101000a81548160ff021916908315150217905550565b6010602052816000526040600020602052806000526040600020600091509150505481565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105fe81565b606060028054611de190614ad1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e0d90614ad1565b8015611e5a5780601f10611e2f57610100808354040283529160200191611e5a565b820191906000526020600020905b815481529060010190602001808311611e3d57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec99061461d565b60405180910390fd5b600c60039054906101000a900460ff16611f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f18906146bd565b60405180910390fd5b600c60019054906101000a900460ff16611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f679061463d565b60405180910390fd5b6105fe81611f7c610f01565b611f8691906148fc565b1115611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe906145fd565b60405180910390fd5b600381111561200b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120029061471d565b60405180910390fd5b6004600e541115612051576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612048906145bd565b60405180910390fd5b600381600f6000600e54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b191906148fc565b11156120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e9906146dd565b60405180910390fd5b8066f8b0a10e4700006121059190614983565b341015612147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213e9061477d565b60405180910390fd5b80600f6000600e54815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121a991906148fc565b925050819055506121ba3382613004565b50565b6121c5612a01565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561222a576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060066000612237612a01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166122e4612a01565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123299190614525565b60405180910390a35050565b66f8b0a10e47000081565b612348612a01565b73ffffffffffffffffffffffffffffffffffffffff16612366611da2565b73ffffffffffffffffffffffffffffffffffffffff16146123bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b39061465d565b60405180910390fd5b80600b90805190602001906123d2929190613a05565b5050565b600981815481106123e657600080fd5b906000526020600020016000915090505481565b612405848484612ac8565b61241184848484613270565b612447576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b612455612a01565b73ffffffffffffffffffffffffffffffffffffffff16612473611da2565b73ffffffffffffffffffffffffffffffffffffffff16146124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c09061465d565b60405180910390fd5b600c60049054906101000a900460ff1615612519576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612510906145dd565b60405180910390fd5b6001600c60046101000a81548160ff02191690831515021790555061253f33600c613004565b565b612549612a01565b73ffffffffffffffffffffffffffffffffffffffff16612567611da2565b73ffffffffffffffffffffffffffffffffffffffff16146125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b49061465d565b60405180910390fd5b600c60039054906101000a900460ff1615600c60036101000a81548160ff021916908315150217905550565b60606125f482612a09565b612633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262a9061467d565b60405180910390fd5b600060018361264291906148fc565b9050600c60009054906101000a900460ff166126eb57600b805461266590614ad1565b80601f016020809104026020016040519081016040528092919081815260200182805461269190614ad1565b80156126de5780601f106126b3576101008083540402835291602001916126de565b820191906000526020600020905b8154815290600101906020018083116126c157829003601f168201915b5050505050915050612746565b6000600a80546126fa90614ad1565b9050116127165760405180602001604052806000815250612742565b600a612721826133fe565b60405160200161273292919061446d565b6040516020818303038152906040525b9150505b919050565b600481565b612758612a01565b73ffffffffffffffffffffffffffffffffffffffff16612776611da2565b73ffffffffffffffffffffffffffffffffffffffff16146127cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c39061465d565b60405180910390fd5b600c60019054906101000a900460ff1615600c60016101000a81548160ff021916908315150217905550565b600c60049054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6128a7612a01565b73ffffffffffffffffffffffffffffffffffffffff166128c5611da2565b73ffffffffffffffffffffffffffffffffffffffff161461291b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129129061465d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561298b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129829061459d565b60405180910390fd5b612994816131aa565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000612ad382613022565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612afa612a01565b73ffffffffffffffffffffffffffffffffffffffff161480612b565750612b1f612a01565b73ffffffffffffffffffffffffffffffffffffffff16612b3e84610d7a565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b725750612b718260000151612b6c612a01565b61280b565b5b905080612bab576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612c14576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c7b576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c8885858560016135ab565b612c986000848460000151612a16565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612f7d57612edc81612a09565b15612f7c5782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612fe685858560016135b1565b5050505050565b600082612ffa85846135b7565b1490509392505050565b61301e828260405180602001604052806000815250613652565b5050565b61302a613a8b565b61303382612a09565b613069576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290505b60008110613172576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146131635780925050506131a5565b5080806001900391505061306f565b506040517fe7c0edfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006132918473ffffffffffffffffffffffffffffffffffffffff16613664565b156133f1578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026132ba612a01565b8786866040518563ffffffff1660e01b81526004016132dc94939291906144b7565b602060405180830381600087803b1580156132f657600080fd5b505af192505050801561332757506040513d601f19601f820116820180604052508101906133249190613f13565b60015b6133a1573d8060008114613357576040519150601f19603f3d011682016040523d82523d6000602084013e61335c565b606091505b50600081511415613399576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506133f6565b600190505b949350505050565b60606000821415613446576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506135a6565b600082905060005b6000821461347857808061346190614b34565b915050600a826134719190614952565b915061344e565b60008167ffffffffffffffff8111156134ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156134ec5781602001600182028036833780820191505090505b5090505b6000851461359f5760018261350591906149dd565b9150600a856135149190614ba1565b603061352091906148fc565b60f81b81838151811061355c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856135989190614952565b94506134f0565b8093505050505b919050565b50505050565b50505050565b60008082905060005b8451811015613647576000858281518110613604577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190508083116136265761361f8382613687565b9250613633565b6136308184613687565b92505b50808061363f90614b34565b9150506135c0565b508091505092915050565b61365f838383600161369e565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082600052816020526040600020905092915050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561370b576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415613746576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61375360008683876135ab565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b858110156139e857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a483801561399c575061399a6000888488613270565b155b156139d3576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81806001019250508080600101915050613921565b5080600081905550506139fe60008683876135b1565b5050505050565b828054613a1190614ad1565b90600052602060002090601f016020900481019282613a335760008555613a7a565b82601f10613a4c57805160ff1916838001178555613a7a565b82800160010185558215613a7a579182015b82811115613a79578251825591602001919060010190613a5e565b5b509050613a879190613ac5565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115613ade576000816000905550600101613ac6565b5090565b6000613af5613af0846147dd565b6147b8565b90508083825260208201905082856020860282011115613b1457600080fd5b60005b85811015613b445781613b2a8882613c1e565b845260208401935060208301925050600181019050613b17565b5050509392505050565b6000613b61613b5c84614809565b6147b8565b905082815260208101848484011115613b7957600080fd5b613b84848285614a8f565b509392505050565b6000613b9f613b9a8461483a565b6147b8565b905082815260208101848484011115613bb757600080fd5b613bc2848285614a8f565b509392505050565b600081359050613bd98161517c565b92915050565b600082601f830112613bf057600080fd5b8135613c00848260208601613ae2565b91505092915050565b600081359050613c1881615193565b92915050565b600081359050613c2d816151aa565b92915050565b600081359050613c42816151c1565b92915050565b600081519050613c57816151c1565b92915050565b600082601f830112613c6e57600080fd5b8135613c7e848260208601613b4e565b91505092915050565b600082601f830112613c9857600080fd5b8135613ca8848260208601613b8c565b91505092915050565b600081359050613cc0816151d8565b92915050565b600060208284031215613cd857600080fd5b6000613ce684828501613bca565b91505092915050565b60008060408385031215613d0257600080fd5b6000613d1085828601613bca565b9250506020613d2185828601613bca565b9150509250929050565b600080600060608486031215613d4057600080fd5b6000613d4e86828701613bca565b9350506020613d5f86828701613bca565b9250506040613d7086828701613cb1565b9150509250925092565b60008060008060808587031215613d9057600080fd5b6000613d9e87828801613bca565b9450506020613daf87828801613bca565b9350506040613dc087828801613cb1565b925050606085013567ffffffffffffffff811115613ddd57600080fd5b613de987828801613c5d565b91505092959194509250565b60008060408385031215613e0857600080fd5b6000613e1685828601613bca565b9250506020613e2785828601613c09565b9150509250929050565b60008060408385031215613e4457600080fd5b6000613e5285828601613bca565b9250506020613e6385828601613cb1565b9150509250929050565b60008060408385031215613e8057600080fd5b600083013567ffffffffffffffff811115613e9a57600080fd5b613ea685828601613bdf565b9250506020613eb785828601613cb1565b9150509250929050565b600060208284031215613ed357600080fd5b6000613ee184828501613c1e565b91505092915050565b600060208284031215613efc57600080fd5b6000613f0a84828501613c33565b91505092915050565b600060208284031215613f2557600080fd5b6000613f3384828501613c48565b91505092915050565b600060208284031215613f4e57600080fd5b600082013567ffffffffffffffff811115613f6857600080fd5b613f7484828501613c87565b91505092915050565b600060208284031215613f8f57600080fd5b6000613f9d84828501613cb1565b91505092915050565b60008060408385031215613fb957600080fd5b6000613fc785828601613cb1565b9250506020613fd885828601613bca565b9150509250929050565b6000613fee8383614434565b60208301905092915050565b61400381614a11565b82525050565b61401a61401582614a11565b614b7d565b82525050565b600061402b82614890565b61403581856148be565b93506140408361486b565b8060005b838110156140715781516140588882613fe2565b9750614063836148b1565b925050600181019050614044565b5085935050505092915050565b61408781614a23565b82525050565b61409681614a2f565b82525050565b60006140a78261489b565b6140b181856148cf565b93506140c1818560208601614a9e565b6140ca81614c8e565b840191505092915050565b60006140e0826148a6565b6140ea81856148e0565b93506140fa818560208601614a9e565b61410381614c8e565b840191505092915050565b6000614119826148a6565b61412381856148f1565b9350614133818560208601614a9e565b80840191505092915050565b6000815461414c81614ad1565b61415681866148f1565b945060018216600081146141715760018114614182576141b5565b60ff198316865281860193506141b5565b61418b8561487b565b60005b838110156141ad5781548189015260018201915060208101905061418e565b838801955050505b50505092915050565b60006141cb6026836148e0565b91506141d682614cac565b604082019050919050565b60006141ee6026836148e0565b91506141f982614cfb565b604082019050919050565b60006142116028836148e0565b915061421c82614d4a565b604082019050919050565b60006142346026836148e0565b915061423f82614d99565b604082019050919050565b60006142576024836148e0565b915061426282614de8565b604082019050919050565b600061427a6032836148e0565b915061428582614e37565b604082019050919050565b600061429d6005836148f1565b91506142a882614e86565b600582019050919050565b60006142c06022836148e0565b91506142cb82614eaf565b604082019050919050565b60006142e36020836148e0565b91506142ee82614efe565b602082019050919050565b6000614306602f836148e0565b915061431182614f27565b604082019050919050565b60006143296030836148e0565b915061433482614f76565b604082019050919050565b600061434c601f836148e0565b915061435782614fc5565b602082019050919050565b600061436f6029836148e0565b915061437a82614fee565b604082019050919050565b60006143926039836148e0565b915061439d8261503d565b604082019050919050565b60006143b56020836148e0565b91506143c08261508c565b602082019050919050565b60006143d8602d836148e0565b91506143e3826150b5565b604082019050919050565b60006143fb602a836148e0565b915061440682615104565b604082019050919050565b600061441e6019836148e0565b915061442982615153565b602082019050919050565b61443d81614a85565b82525050565b61444c81614a85565b82525050565b600061445e8284614009565b60148201915081905092915050565b6000614479828561413f565b9150614485828461410e565b915061449082614290565b91508190509392505050565b60006020820190506144b16000830184613ffa565b92915050565b60006080820190506144cc6000830187613ffa565b6144d96020830186613ffa565b6144e66040830185614443565b81810360608301526144f8818461409c565b905095945050505050565b6000602082019050818103600083015261451d8184614020565b905092915050565b600060208201905061453a600083018461407e565b92915050565b6000602082019050614555600083018461408d565b92915050565b6000602082019050818103600083015261457581846140d5565b905092915050565b60006020820190508181036000830152614596816141be565b9050919050565b600060208201905081810360008301526145b6816141e1565b9050919050565b600060208201905081810360008301526145d681614204565b9050919050565b600060208201905081810360008301526145f681614227565b9050919050565b600060208201905081810360008301526146168161424a565b9050919050565b600060208201905081810360008301526146368161426d565b9050919050565b60006020820190508181036000830152614656816142b3565b9050919050565b60006020820190508181036000830152614676816142d6565b9050919050565b60006020820190508181036000830152614696816142f9565b9050919050565b600060208201905081810360008301526146b68161431c565b9050919050565b600060208201905081810360008301526146d68161433f565b9050919050565b600060208201905081810360008301526146f681614362565b9050919050565b6000602082019050818103600083015261471681614385565b9050919050565b60006020820190508181036000830152614736816143a8565b9050919050565b60006020820190508181036000830152614756816143cb565b9050919050565b60006020820190508181036000830152614776816143ee565b9050919050565b6000602082019050818103600083015261479681614411565b9050919050565b60006020820190506147b26000830184614443565b92915050565b60006147c26147d3565b90506147ce8282614b03565b919050565b6000604051905090565b600067ffffffffffffffff8211156147f8576147f7614c5f565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561482457614823614c5f565b5b61482d82614c8e565b9050602081019050919050565b600067ffffffffffffffff82111561485557614854614c5f565b5b61485e82614c8e565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061490782614a85565b915061491283614a85565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561494757614946614bd2565b5b828201905092915050565b600061495d82614a85565b915061496883614a85565b92508261497857614977614c01565b5b828204905092915050565b600061498e82614a85565b915061499983614a85565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149d2576149d1614bd2565b5b828202905092915050565b60006149e882614a85565b91506149f383614a85565b925082821015614a0657614a05614bd2565b5b828203905092915050565b6000614a1c82614a65565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614abc578082015181840152602081019050614aa1565b83811115614acb576000848401525b50505050565b60006002820490506001821680614ae957607f821691505b60208210811415614afd57614afc614c30565b5b50919050565b614b0c82614c8e565b810181811067ffffffffffffffff82111715614b2b57614b2a614c5f565b5b80604052505050565b6000614b3f82614a85565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614b7257614b71614bd2565b5b600182019050919050565b6000614b8882614b8f565b9050919050565b6000614b9a82614c9f565b9050919050565b6000614bac82614a85565b9150614bb783614a85565b925082614bc757614bc6614c01565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f416476656e747572652049736c616e64203a204d696e74696e67206973206f6e60008201527f2050617573650000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a204c41535420535441474520495360008201527f2053544147452034000000000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a205465616d20616c72656164792060008201527f6d696e7465640000000000000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a204265796f6e64204d617820537560008201527f70706c7900000000000000000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a3a2043616e6e6f7420626520636160008201527f6c6c6564206279206120636f6e74726163740000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f416476656e747572652049736c616e64203a204e6f742059657420416374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a2043616e6e6f74206d696e74206260008201527f65796f6e64206d617820737570706c7900000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a204d696e7420636c6f7365642e00600082015250565b7f416476656e747572652049736c616e64203a20416c7265616479206d696e746560008201527f642033204e465473210000000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a2043616e6e6f74206d696e74206260008201527f65796f6e642077686974656c697374206d6178206d696e742100000000000000602082015250565b7f416476656e747572652049736c616e64203a204d6178206d696e742069732033600082015250565b7f416476656e747572652049736c616e64203a205061796d656e7420697320626560008201527f6c6f772074686520707269636500000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a20596f7520617265206e6f74207760008201527f686974656c697374656400000000000000000000000000000000000000000000602082015250565b7f416476656e747572652049736c616e64203a2042656c6f772000000000000000600082015250565b61518581614a11565b811461519057600080fd5b50565b61519c81614a23565b81146151a757600080fd5b50565b6151b381614a2f565b81146151be57600080fd5b50565b6151ca81614a39565b81146151d557600080fd5b50565b6151e181614a85565b81146151ec57600080fd5b5056fea264697066735822122028f7f49e0ab8e9e7f896cb2bb8575b1cb28f7f901a8d7fde670081948336fe2b64736f6c63430008040033
Deployed Bytecode Sourcemap
43462:5715:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30666:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48030:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32482:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33959:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33548:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28933:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48514:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34816:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45525:1168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29587:1007;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44146:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48988:186;;;;;;;;;;;;;:::i;:::-;;35057:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43653:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48414:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43958:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44330:70;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29111:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44117:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43597:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48895:85;;;;;;;;;;;;;:::i;:::-;;32291:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31102:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44297:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7415:103;;;;;;;;;;;;;:::i;:::-;;43924:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48301:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47616:406;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44207:17;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44175:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48692:98;;;;;;;;;;;;;:::i;:::-;;44407:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6764:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43547:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32651:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44704:813;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34235:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43719:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48151:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43785:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35313:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46701:183;;;;;;;;;;;;;:::i;:::-;;48610:74;;;;;;;;;;;;;:::i;:::-;;47049:473;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43877:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48798:89;;;;;;;;;;;;;:::i;:::-;;44231:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34585:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7673:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30666:372;30768:4;30820:25;30805:40;;;:11;:40;;;;:105;;;;30877:33;30862:48;;;:11;:48;;;;30805:105;:172;;;;30942:35;30927:50;;;:11;:50;;;;30805:172;:225;;;;30994:36;31018:11;30994:23;:36::i;:::-;30805:225;30785:245;;30666:372;;;:::o;48030:115::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48124:13:::1;48109:12;:28;;;;;;;;;;;;:::i;:::-;;48030:115:::0;:::o;32482:100::-;32536:13;32569:5;32562:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32482:100;:::o;33959:204::-;34027:7;34052:16;34060:7;34052;:16::i;:::-;34047:64;;34077:34;;;;;;;;;;;;;;34047:64;34131:15;:24;34147:7;34131:24;;;;;;;;;;;;;;;;;;;;;34124:31;;33959:204;;;:::o;33548:345::-;33621:13;33637:24;33653:7;33637:15;:24::i;:::-;33621:40;;33682:5;33676:11;;:2;:11;;;33672:48;;;33696:24;;;;;;;;;;;;;;33672:48;33753:5;33737:21;;:12;:10;:12::i;:::-;:21;;;;:63;;;;;33763:37;33780:5;33787:12;:10;:12::i;:::-;33763:16;:37::i;:::-;33762:38;33737:63;33733:111;;;33809:35;;;;;;;;;;;;;;33733:111;33857:28;33866:2;33870:7;33879:5;33857:8;:28::i;:::-;33548:345;;;:::o;28933:101::-;28986:7;29013:13;;29006:20;;28933:101;:::o;48514:88::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48588:6:::1;48580:5;:14;;;;48514:88:::0;:::o;34816:170::-;34950:28;34960:4;34966:2;34970:7;34950:9;:28::i;:::-;34816:170;;;:::o;45525:1168::-;44611:10;44598:23;;:9;:23;;;44590:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;45666:14:::1;45710:10;45693:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;45683:39;;;;;;45666:56;;45741:52;45760:12;45774:10;;45786:6;45741:18;:52::i;:::-;45733:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;45861:5;;;;;;;;;;;45853:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;45921:13;;;;;;;;;;;45913:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;43586:4;46013:9;45997:13;:11;:13::i;:::-;:25;;;;:::i;:::-;45996:43;;45988:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;46124:24;46149:5;;46124:31;;;;;;;;;;;;;;;;;;;;;;;;46111:9;:44;;46103:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;46266:24;46291:5;;46266:31;;;;;;;;;;;;;;;;;;;;;;;;46252:9;46212:18;:25;46231:5;;46212:25;;;;;;;;;;;:37;46238:10;46212:37;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;46211:86;;46203:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;46428:9;46392:26;46419:5;;46392:33;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;46378:9;:60;;46370:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;43914:1;46507:5;;:19;;46499:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;46633:9;46592:18;:25;46611:5;;46592:25;;;;;;;;;;;:37;46618:10;46592:37;;;;;;;;;;;;;;;;:50;;;;;;;:::i;:::-;;;;;;;;46653:32;46663:10;46675:9;46653;:32::i;:::-;44687:1;45525:1168:::0;;:::o;29587:1007::-;29676:7;29709:16;29719:5;29709:9;:16::i;:::-;29700:5;:25;29696:61;;29734:23;;;;;;;;;;;;;;29696:61;29768:22;29793:13;:11;:13::i;:::-;29768:38;;29817:19;29847:25;30036:9;30031:466;30051:14;30047:1;:18;30031:466;;;30091:31;30125:11;:14;30137:1;30125:14;;;;;;;;;;;30091:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30188:1;30162:28;;:9;:14;;;:28;;;30158:111;;30235:9;:14;;;30215:34;;30158:111;30312:5;30291:26;;:17;:26;;;30287:195;;;30361:5;30346:11;:20;30342:85;;;30402:1;30395:8;;;;;;;;;30342:85;30449:13;;;;;;;30287:195;30031:466;30067:3;;;;;;;30031:466;;;;30580:5;30573:13;;;;;;;;;;;;29587:1007;;;;;;;;:::o;44146:22::-;;;;;;;;;;;;;:::o;48988:186::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49091:42:::1;49083:60;;:83;49144:21;49083:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;48988:186::o:0;35057:185::-;35195:39;35212:4;35218:2;35222:7;35195:39;;;;;;;;;;;;:16;:39::i;:::-;35057:185;;;:::o;43653:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;48414:92::-;48462:7;48488:10;;48481:17;;48414:92;:::o;43958:35::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;44330:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29111:176::-;29178:7;29211:13;:11;:13::i;:::-;29202:5;:22;29198:58;;29233:23;;;;;;;;;;;;;;29198:58;29274:5;29267:12;;29111:176;;;:::o;44117:22::-;;;;;;;;;;;;;:::o;43597:49::-;43645:1;43597:49;:::o;48895:85::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48962:10:::1;;;;;;;;;;;48961:11;48948:10;;:24;;;;;;;;;;;;;;;;;;48895:85::o:0;32291:124::-;32355:7;32382:20;32394:7;32382:11;:20::i;:::-;:25;;;32375:32;;32291:124;;;:::o;31102:206::-;31166:7;31207:1;31190:19;;:5;:19;;;31186:60;;;31218:28;;;;;;;;;;;;;;31186:60;31272:12;:19;31285:5;31272:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;31264:36;;31257:43;;31102:206;;;:::o;44297:24::-;;;;:::o;7415:103::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7480:30:::1;7507:1;7480:18;:30::i;:::-;7415:103::o:0;43924:27::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;48301:105::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48387:11:::1;48374:10;:24;;;;48301:105:::0;:::o;47616:406::-;47658:16;47686:14;47703:10;47686:27;;47724:24;47751:17;47761:6;47751:9;:17::i;:::-;47724:44;;47779:25;47821:16;47807:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47779:59;;47855:13;47851:136;47882:16;47874:5;:24;47851:136;;;47941:34;47961:6;47969:5;47941:19;:34::i;:::-;47923:8;47932:5;47923:15;;;;;;;;;;;;;;;;;;;;;:52;;;;;47900:7;;;;;:::i;:::-;;;;47851:136;;;;48006:8;47999:15;;;;;47616:406;:::o;44207:17::-;;;;;;;;;;;;;:::o;44175:25::-;;;;;;;;;;;;;:::o;48692:98::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48769:13:::1;;;;;;;;;;;48768:14;48752:13;;:30;;;;;;;;;;;;;;;;;;48692:98::o:0;44407:73::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6764:87::-;6810:7;6837:6;;;;;;;;;;;6830:13;;6764:87;:::o;43547:43::-;43586:4;43547:43;:::o;32651:104::-;32707:13;32740:7;32733:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32651:104;:::o;44704:813::-;44611:10;44598:23;;:9;:23;;;44590:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;44785:5:::1;;;;;;;;;;;44777:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;44845:10;;;;;;;;;;;44837:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;43586:4;44930:9;44914:13;:11;:13::i;:::-;:25;;;;:::i;:::-;44913:43;;44905:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;43645:1;45016:9;:34;;45008:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;43914:1;45106:5;;:19;;45098:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;43645:1;45226:9;45190:15;:22;45206:5;;45190:22;;;;;;;;;;;:34;45213:10;45190:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;45189:72;;45181:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;45366:9;43769;45340:35;;;;:::i;:::-;45326:9;:50;;45318:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;45457:9;45419:15;:22;45435:5;;45419:22;;;;;;;;;;;:34;45442:10;45419:34;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;45477:32;45487:10;45499:9;45477;:32::i;:::-;44704:813:::0;:::o;34235:279::-;34338:12;:10;:12::i;:::-;34326:24;;:8;:24;;;34322:54;;;34359:17;;;;;;;;;;;;;;34322:54;34434:8;34389:18;:32;34408:12;:10;:12::i;:::-;34389:32;;;;;;;;;;;;;;;:42;34422:8;34389:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;34487:8;34458:48;;34473:12;:10;:12::i;:::-;34458:48;;;34497:8;34458:48;;;;;;:::i;:::-;;;;;;;;34235:279;;:::o;43719:59::-;43769:9;43719:59;:::o;48151:142::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48265:20:::1;48243:19;:42;;;;;;;;;;;;:::i;:::-;;48151:142:::0;:::o;43785:85::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;35313:308::-;35472:28;35482:4;35488:2;35492:7;35472:9;:28::i;:::-;35516:48;35539:4;35545:2;35549:7;35558:5;35516:22;:48::i;:::-;35511:102;;35573:40;;;;;;;;;;;;;;35511:102;35313:308;;;;:::o;46701:183::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46759:10:::1;;;;;;;;;;;46758:11;46750:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;46836:4;46823:10;;:17;;;;;;;;;;;;;;;;;;46851:25;46861:10;46873:2;46851:9;:25::i;:::-;46701:183::o:0;48610:74::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48671:5:::1;;;;;;;;;;;48670:6;48662:5;;:14;;;;;;;;;;;;;;;;;;48610:74::o:0;47049:473::-;47122:13;47156:16;47164:7;47156;:16::i;:::-;47148:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;47237:14;47264:1;47254:7;:11;;;;:::i;:::-;47237:28;;47282:10;;;;;;;;;;;47278:68;;47315:19;47308:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47278:68;47439:1;47416:12;47410:26;;;;;:::i;:::-;;;:30;:104;;;;;;;;;;;;;;;;;47467:12;47481:17;:6;:15;:17::i;:::-;47450:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;47410:104;47403:111;;;47049:473;;;;:::o;43877:38::-;43914:1;43877:38;:::o;48798:89::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48869:10:::1;;;;;;;;;;;48868:11;48855:10;;:24;;;;;;;;;;;;;;;;;;48798:89::o:0;44231:22::-;;;;;;;;;;;;;:::o;34585:164::-;34682:4;34706:18;:25;34725:5;34706:25;;;;;;;;;;;;;;;:35;34732:8;34706:35;;;;;;;;;;;;;;;;;;;;;;;;;34699:42;;34585:164;;;;:::o;7673:201::-;6995:12;:10;:12::i;:::-;6984:23;;:7;:5;:7::i;:::-;:23;;;6976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7782:1:::1;7762:22;;:8;:22;;;;7754:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7838:28;7857:8;7838:18;:28::i;:::-;7673:201:::0;:::o;19571:157::-;19656:4;19695:25;19680:40;;;:11;:40;;;;19673:47;;19571:157;;;:::o;5488:98::-;5541:7;5568:10;5561:17;;5488:98;:::o;35876:112::-;35933:4;35967:13;;35957:7;:23;35950:30;;35876:112;;;:::o;40639:196::-;40781:2;40754:15;:24;40770:7;40754:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;40819:7;40815:2;40799:28;;40808:5;40799:28;;;;;;;;;;;;40639:196;;;:::o;38559:1962::-;38674:35;38712:20;38724:7;38712:11;:20::i;:::-;38674:58;;38745:22;38787:13;:18;;;38771:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;38846:12;:10;:12::i;:::-;38822:36;;:20;38834:7;38822:11;:20::i;:::-;:36;;;38771:87;:154;;;;38875:50;38892:13;:18;;;38912:12;:10;:12::i;:::-;38875:16;:50::i;:::-;38771:154;38745:181;;38944:17;38939:66;;38970:35;;;;;;;;;;;;;;38939:66;39042:4;39020:26;;:13;:18;;;:26;;;39016:67;;39055:28;;;;;;;;;;;;;;39016:67;39112:1;39098:16;;:2;:16;;;39094:52;;;39123:23;;;;;;;;;;;;;;39094:52;39159:43;39181:4;39187:2;39191:7;39200:1;39159:21;:43::i;:::-;39267:49;39284:1;39288:7;39297:13;:18;;;39267:8;:49::i;:::-;39642:1;39612:12;:18;39625:4;39612:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39686:1;39658:12;:16;39671:2;39658:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39732:2;39704:11;:20;39716:7;39704:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;39794:15;39749:11;:20;39761:7;39749:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;40062:19;40094:1;40084:7;:11;40062:33;;40155:1;40114:43;;:11;:24;40126:11;40114:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;40110:295;;;40182:20;40190:11;40182:7;:20::i;:::-;40178:212;;;40259:13;:18;;;40227:11;:24;40239:11;40227:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;40342:13;:28;;;40300:11;:24;40312:11;40300:24;;;;;;;;;;;:39;;;:70;;;;;;;;;;;;;;;;;;40178:212;40110:295;38559:1962;40452:7;40448:2;40433:27;;40442:4;40433:27;;;;;;;;;;;;40471:42;40492:4;40498:2;40502:7;40511:1;40471:20;:42::i;:::-;38559:1962;;;;;:::o;1220:190::-;1345:4;1398;1369:25;1382:5;1389:4;1369:12;:25::i;:::-;:33;1362:40;;1220:190;;;;;:::o;35996:104::-;36065:27;36075:2;36079:8;36065:27;;;;;;;;;;;;:9;:27::i;:::-;35996:104;;:::o;31725:504::-;31786:21;;:::i;:::-;31825:16;31833:7;31825;:16::i;:::-;31820:61;;31850:31;;;;;;;;;;;;;;31820:61;31924:12;31939:7;31924:22;;31919:245;31956:1;31948:4;:9;31919:245;;31986:31;32020:11;:17;32032:4;32020:17;;;;;;;;;;;31986:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32086:1;32060:28;;:9;:14;;;:28;;;32056:93;;32120:9;32113:16;;;;;;32056:93;31919:245;31959:6;;;;;;;;31919:245;;;;32194:27;;;;;;;;;;;;;;31725:504;;;;:::o;8034:191::-;8108:16;8127:6;;;;;;;;;;;8108:25;;8153:8;8144:6;;:17;;;;;;;;;;;;;;;;;;8208:8;8177:40;;8198:8;8177:40;;;;;;;;;;;;8034:191;;:::o;41400:765::-;41555:4;41576:15;:2;:13;;;:15::i;:::-;41572:586;;;41628:2;41612:36;;;41649:12;:10;:12::i;:::-;41663:4;41669:7;41678:5;41612:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;41608:495;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41875:1;41858:6;:13;:18;41854:234;;;41885:40;;;;;;;;;;;;;;41854:234;42038:6;42032:13;42023:6;42019:2;42015:15;42008:38;41608:495;41745:45;;;41735:55;;;:6;:55;;;;41728:62;;;;;41572:586;42142:4;42135:11;;41400:765;;;;;;;:::o;3050:723::-;3106:13;3336:1;3327:5;:10;3323:53;;;3354:10;;;;;;;;;;;;;;;;;;;;;3323:53;3386:12;3401:5;3386:20;;3417:14;3442:78;3457:1;3449:4;:9;3442:78;;3475:8;;;;;:::i;:::-;;;;3506:2;3498:10;;;;;:::i;:::-;;;3442:78;;;3530:19;3562:6;3552:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3530:39;;3580:154;3596:1;3587:5;:10;3580:154;;3624:1;3614:11;;;;;:::i;:::-;;;3691:2;3683:5;:10;;;;:::i;:::-;3670:2;:24;;;;:::i;:::-;3657:39;;3640:6;3647;3640:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;3720:2;3711:11;;;;;:::i;:::-;;;3580:154;;;3758:6;3744:21;;;;;3050:723;;;;:::o;42653:159::-;;;;;:::o;43224:158::-;;;;;:::o;1771:675::-;1854:7;1874:20;1897:4;1874:27;;1917:9;1912:497;1936:5;:12;1932:1;:16;1912:497;;;1970:20;1993:5;1999:1;1993:8;;;;;;;;;;;;;;;;;;;;;;1970:31;;2036:12;2020;:28;2016:382;;2163:42;2178:12;2192;2163:14;:42::i;:::-;2148:57;;2016:382;;;2340:42;2355:12;2369;2340:14;:42::i;:::-;2325:57;;2016:382;1912:497;1950:3;;;;;:::i;:::-;;;;1912:497;;;;2426:12;2419:19;;;1771:675;;;;:::o;36463:163::-;36586:32;36592:2;36596:8;36606:5;36613:4;36586:5;:32::i;:::-;36463:163;;;:::o;9465:326::-;9525:4;9782:1;9760:7;:19;;;:23;9753:30;;9465:326;;;:::o;2454:224::-;2522:13;2585:1;2579:4;2572:15;2614:1;2608:4;2601:15;2655:4;2649;2639:21;2630:30;;2557:114;;;;:::o;36885:1420::-;37024:20;37047:13;;37024:36;;37089:1;37075:16;;:2;:16;;;37071:48;;;37100:19;;;;;;;;;;;;;;37071:48;37146:1;37134:8;:13;37130:44;;;37156:18;;;;;;;;;;;;;;37130:44;37187:61;37217:1;37221:2;37225:12;37239:8;37187:21;:61::i;:::-;37563:8;37527:12;:16;37540:2;37527:16;;;;;;;;;;;;;;;:24;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37628:8;37587:12;:16;37600:2;37587:16;;;;;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37687:2;37654:11;:25;37666:12;37654:25;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;37754:15;37704:11;:25;37716:12;37704:25;;;;;;;;;;;:40;;;:66;;;;;;;;;;;;;;;;;;37787:20;37810:12;37787:35;;37844:9;37839:330;37859:8;37855:1;:12;37839:330;;;37923:12;37919:2;37898:38;;37915:1;37898:38;;;;;;;;;;;;37959:4;:68;;;;;37968:59;37999:1;38003:2;38007:12;38021:5;37968:22;:59::i;:::-;37967:60;37959:68;37955:164;;;38059:40;;;;;;;;;;;;;;37955:164;38139:14;;;;;;;37869:3;;;;;;;37839:330;;;;38201:12;38185:13;:28;;;;36885:1420;38237:60;38266:1;38270:2;38274:12;38288:8;38237:20;:60::i;:::-;36885:1420;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:343::-;762:5;787:65;803:48;844:6;803:48;:::i;:::-;787:65;:::i;:::-;778:74;;875:6;868:5;861:21;913:4;906:5;902:16;951:3;942:6;937:3;933:16;930:25;927:2;;;968:1;965;958:12;927:2;981:41;1015:6;1010:3;1005;981:41;:::i;:::-;768:260;;;;;;:::o;1034:345::-;1112:5;1137:66;1153:49;1195:6;1153:49;:::i;:::-;1137:66;:::i;:::-;1128:75;;1226:6;1219:5;1212:21;1264:4;1257:5;1253:16;1302:3;1293:6;1288:3;1284:16;1281:25;1278:2;;;1319:1;1316;1309:12;1278:2;1332:41;1366:6;1361:3;1356;1332:41;:::i;:::-;1118:261;;;;;;:::o;1385:139::-;1431:5;1469:6;1456:20;1447:29;;1485:33;1512:5;1485:33;:::i;:::-;1437:87;;;;:::o;1547:303::-;1618:5;1667:3;1660:4;1652:6;1648:17;1644:27;1634:2;;1685:1;1682;1675:12;1634:2;1725:6;1712:20;1750:94;1840:3;1832:6;1825:4;1817:6;1813:17;1750:94;:::i;:::-;1741:103;;1624:226;;;;;:::o;1856:133::-;1899:5;1937:6;1924:20;1915:29;;1953:30;1977:5;1953:30;:::i;:::-;1905:84;;;;:::o;1995:139::-;2041:5;2079:6;2066:20;2057:29;;2095:33;2122:5;2095:33;:::i;:::-;2047:87;;;;:::o;2140:137::-;2185:5;2223:6;2210:20;2201:29;;2239:32;2265:5;2239:32;:::i;:::-;2191:86;;;;:::o;2283:141::-;2339:5;2370:6;2364:13;2355:22;;2386:32;2412:5;2386:32;:::i;:::-;2345:79;;;;:::o;2443:271::-;2498:5;2547:3;2540:4;2532:6;2528:17;2524:27;2514:2;;2565:1;2562;2555:12;2514:2;2605:6;2592:20;2630:78;2704:3;2696:6;2689:4;2681:6;2677:17;2630:78;:::i;:::-;2621:87;;2504:210;;;;;:::o;2734:273::-;2790:5;2839:3;2832:4;2824:6;2820:17;2816:27;2806:2;;2857:1;2854;2847:12;2806:2;2897:6;2884:20;2922:79;2997:3;2989:6;2982:4;2974:6;2970:17;2922:79;:::i;:::-;2913:88;;2796:211;;;;;:::o;3013:139::-;3059:5;3097:6;3084:20;3075:29;;3113:33;3140:5;3113:33;:::i;:::-;3065:87;;;;:::o;3158:262::-;3217:6;3266:2;3254:9;3245:7;3241:23;3237:32;3234:2;;;3282:1;3279;3272:12;3234:2;3325:1;3350:53;3395:7;3386:6;3375:9;3371:22;3350:53;:::i;:::-;3340:63;;3296:117;3224:196;;;;:::o;3426:407::-;3494:6;3502;3551:2;3539:9;3530:7;3526:23;3522:32;3519:2;;;3567:1;3564;3557:12;3519:2;3610:1;3635:53;3680:7;3671:6;3660:9;3656:22;3635:53;:::i;:::-;3625:63;;3581:117;3737:2;3763:53;3808:7;3799:6;3788:9;3784:22;3763:53;:::i;:::-;3753:63;;3708:118;3509:324;;;;;:::o;3839:552::-;3916:6;3924;3932;3981:2;3969:9;3960:7;3956:23;3952:32;3949:2;;;3997:1;3994;3987:12;3949:2;4040:1;4065:53;4110:7;4101:6;4090:9;4086:22;4065:53;:::i;:::-;4055:63;;4011:117;4167:2;4193:53;4238:7;4229:6;4218:9;4214:22;4193:53;:::i;:::-;4183:63;;4138:118;4295:2;4321:53;4366:7;4357:6;4346:9;4342:22;4321:53;:::i;:::-;4311:63;;4266:118;3939:452;;;;;:::o;4397:809::-;4492:6;4500;4508;4516;4565:3;4553:9;4544:7;4540:23;4536:33;4533:2;;;4582:1;4579;4572:12;4533:2;4625:1;4650:53;4695:7;4686:6;4675:9;4671:22;4650:53;:::i;:::-;4640:63;;4596:117;4752:2;4778:53;4823:7;4814:6;4803:9;4799:22;4778:53;:::i;:::-;4768:63;;4723:118;4880:2;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4851:118;5036:2;5025:9;5021:18;5008:32;5067:18;5059:6;5056:30;5053:2;;;5099:1;5096;5089:12;5053:2;5127:62;5181:7;5172:6;5161:9;5157:22;5127:62;:::i;:::-;5117:72;;4979:220;4523:683;;;;;;;:::o;5212:401::-;5277:6;5285;5334:2;5322:9;5313:7;5309:23;5305:32;5302:2;;;5350:1;5347;5340:12;5302:2;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5520:2;5546:50;5588:7;5579:6;5568:9;5564:22;5546:50;:::i;:::-;5536:60;;5491:115;5292:321;;;;;:::o;5619:407::-;5687:6;5695;5744:2;5732:9;5723:7;5719:23;5715:32;5712:2;;;5760:1;5757;5750:12;5712:2;5803:1;5828:53;5873:7;5864:6;5853:9;5849:22;5828:53;:::i;:::-;5818:63;;5774:117;5930:2;5956:53;6001:7;5992:6;5981:9;5977:22;5956:53;:::i;:::-;5946:63;;5901:118;5702:324;;;;;:::o;6032:550::-;6125:6;6133;6182:2;6170:9;6161:7;6157:23;6153:32;6150:2;;;6198:1;6195;6188:12;6150:2;6269:1;6258:9;6254:17;6241:31;6299:18;6291:6;6288:30;6285:2;;;6331:1;6328;6321:12;6285:2;6359:78;6429:7;6420:6;6409:9;6405:22;6359:78;:::i;:::-;6349:88;;6212:235;6486:2;6512:53;6557:7;6548:6;6537:9;6533:22;6512:53;:::i;:::-;6502:63;;6457:118;6140:442;;;;;:::o;6588:262::-;6647:6;6696:2;6684:9;6675:7;6671:23;6667:32;6664:2;;;6712:1;6709;6702:12;6664:2;6755:1;6780:53;6825:7;6816:6;6805:9;6801:22;6780:53;:::i;:::-;6770:63;;6726:117;6654:196;;;;:::o;6856:260::-;6914:6;6963:2;6951:9;6942:7;6938:23;6934:32;6931:2;;;6979:1;6976;6969:12;6931:2;7022:1;7047:52;7091:7;7082:6;7071:9;7067:22;7047:52;:::i;:::-;7037:62;;6993:116;6921:195;;;;:::o;7122:282::-;7191:6;7240:2;7228:9;7219:7;7215:23;7211:32;7208:2;;;7256:1;7253;7246:12;7208:2;7299:1;7324:63;7379:7;7370:6;7359:9;7355:22;7324:63;:::i;:::-;7314:73;;7270:127;7198:206;;;;:::o;7410:375::-;7479:6;7528:2;7516:9;7507:7;7503:23;7499:32;7496:2;;;7544:1;7541;7534:12;7496:2;7615:1;7604:9;7600:17;7587:31;7645:18;7637:6;7634:30;7631:2;;;7677:1;7674;7667:12;7631:2;7705:63;7760:7;7751:6;7740:9;7736:22;7705:63;:::i;:::-;7695:73;;7558:220;7486:299;;;;:::o;7791:262::-;7850:6;7899:2;7887:9;7878:7;7874:23;7870:32;7867:2;;;7915:1;7912;7905:12;7867:2;7958:1;7983:53;8028:7;8019:6;8008:9;8004:22;7983:53;:::i;:::-;7973:63;;7929:117;7857:196;;;;:::o;8059:407::-;8127:6;8135;8184:2;8172:9;8163:7;8159:23;8155:32;8152:2;;;8200:1;8197;8190:12;8152:2;8243:1;8268:53;8313:7;8304:6;8293:9;8289:22;8268:53;:::i;:::-;8258:63;;8214:117;8370:2;8396:53;8441:7;8432:6;8421:9;8417:22;8396:53;:::i;:::-;8386:63;;8341:118;8142:324;;;;;:::o;8472:179::-;8541:10;8562:46;8604:3;8596:6;8562:46;:::i;:::-;8640:4;8635:3;8631:14;8617:28;;8552:99;;;;:::o;8657:118::-;8744:24;8762:5;8744:24;:::i;:::-;8739:3;8732:37;8722:53;;:::o;8781:157::-;8886:45;8906:24;8924:5;8906:24;:::i;:::-;8886:45;:::i;:::-;8881:3;8874:58;8864:74;;:::o;8974:732::-;9093:3;9122:54;9170:5;9122:54;:::i;:::-;9192:86;9271:6;9266:3;9192:86;:::i;:::-;9185:93;;9302:56;9352:5;9302:56;:::i;:::-;9381:7;9412:1;9397:284;9422:6;9419:1;9416:13;9397:284;;;9498:6;9492:13;9525:63;9584:3;9569:13;9525:63;:::i;:::-;9518:70;;9611:60;9664:6;9611:60;:::i;:::-;9601:70;;9457:224;9444:1;9441;9437:9;9432:14;;9397:284;;;9401:14;9697:3;9690:10;;9098:608;;;;;;;:::o;9712:109::-;9793:21;9808:5;9793:21;:::i;:::-;9788:3;9781:34;9771:50;;:::o;9827:118::-;9914:24;9932:5;9914:24;:::i;:::-;9909:3;9902:37;9892:53;;:::o;9951:360::-;10037:3;10065:38;10097:5;10065:38;:::i;:::-;10119:70;10182:6;10177:3;10119:70;:::i;:::-;10112:77;;10198:52;10243:6;10238:3;10231:4;10224:5;10220:16;10198:52;:::i;:::-;10275:29;10297:6;10275:29;:::i;:::-;10270:3;10266:39;10259:46;;10041:270;;;;;:::o;10317:364::-;10405:3;10433:39;10466:5;10433:39;:::i;:::-;10488:71;10552:6;10547:3;10488:71;:::i;:::-;10481:78;;10568:52;10613:6;10608:3;10601:4;10594:5;10590:16;10568:52;:::i;:::-;10645:29;10667:6;10645:29;:::i;:::-;10640:3;10636:39;10629:46;;10409:272;;;;;:::o;10687:377::-;10793:3;10821:39;10854:5;10821:39;:::i;:::-;10876:89;10958:6;10953:3;10876:89;:::i;:::-;10869:96;;10974:52;11019:6;11014:3;11007:4;11000:5;10996:16;10974:52;:::i;:::-;11051:6;11046:3;11042:16;11035:23;;10797:267;;;;;:::o;11094:845::-;11197:3;11234:5;11228:12;11263:36;11289:9;11263:36;:::i;:::-;11315:89;11397:6;11392:3;11315:89;:::i;:::-;11308:96;;11435:1;11424:9;11420:17;11451:1;11446:137;;;;11597:1;11592:341;;;;11413:520;;11446:137;11530:4;11526:9;11515;11511:25;11506:3;11499:38;11566:6;11561:3;11557:16;11550:23;;11446:137;;11592:341;11659:38;11691:5;11659:38;:::i;:::-;11719:1;11733:154;11747:6;11744:1;11741:13;11733:154;;;11821:7;11815:14;11811:1;11806:3;11802:11;11795:35;11871:1;11862:7;11858:15;11847:26;;11769:4;11766:1;11762:12;11757:17;;11733:154;;;11916:6;11911:3;11907:16;11900:23;;11599:334;;11413:520;;11201:738;;;;;;:::o;11945:366::-;12087:3;12108:67;12172:2;12167:3;12108:67;:::i;:::-;12101:74;;12184:93;12273:3;12184:93;:::i;:::-;12302:2;12297:3;12293:12;12286:19;;12091:220;;;:::o;12317:366::-;12459:3;12480:67;12544:2;12539:3;12480:67;:::i;:::-;12473:74;;12556:93;12645:3;12556:93;:::i;:::-;12674:2;12669:3;12665:12;12658:19;;12463:220;;;:::o;12689:366::-;12831:3;12852:67;12916:2;12911:3;12852:67;:::i;:::-;12845:74;;12928:93;13017:3;12928:93;:::i;:::-;13046:2;13041:3;13037:12;13030:19;;12835:220;;;:::o;13061:366::-;13203:3;13224:67;13288:2;13283:3;13224:67;:::i;:::-;13217:74;;13300:93;13389:3;13300:93;:::i;:::-;13418:2;13413:3;13409:12;13402:19;;13207:220;;;:::o;13433:366::-;13575:3;13596:67;13660:2;13655:3;13596:67;:::i;:::-;13589:74;;13672:93;13761:3;13672:93;:::i;:::-;13790:2;13785:3;13781:12;13774:19;;13579:220;;;:::o;13805:366::-;13947:3;13968:67;14032:2;14027:3;13968:67;:::i;:::-;13961:74;;14044:93;14133:3;14044:93;:::i;:::-;14162:2;14157:3;14153:12;14146:19;;13951:220;;;:::o;14177:400::-;14337:3;14358:84;14440:1;14435:3;14358:84;:::i;:::-;14351:91;;14451:93;14540:3;14451:93;:::i;:::-;14569:1;14564:3;14560:11;14553:18;;14341:236;;;:::o;14583:366::-;14725:3;14746:67;14810:2;14805:3;14746:67;:::i;:::-;14739:74;;14822:93;14911:3;14822:93;:::i;:::-;14940:2;14935:3;14931:12;14924:19;;14729:220;;;:::o;14955:366::-;15097:3;15118:67;15182:2;15177:3;15118:67;:::i;:::-;15111:74;;15194:93;15283:3;15194:93;:::i;:::-;15312:2;15307:3;15303:12;15296:19;;15101:220;;;:::o;15327:366::-;15469:3;15490:67;15554:2;15549:3;15490:67;:::i;:::-;15483:74;;15566:93;15655:3;15566:93;:::i;:::-;15684:2;15679:3;15675:12;15668:19;;15473:220;;;:::o;15699:366::-;15841:3;15862:67;15926:2;15921:3;15862:67;:::i;:::-;15855:74;;15938:93;16027:3;15938:93;:::i;:::-;16056:2;16051:3;16047:12;16040:19;;15845:220;;;:::o;16071:366::-;16213:3;16234:67;16298:2;16293:3;16234:67;:::i;:::-;16227:74;;16310:93;16399:3;16310:93;:::i;:::-;16428:2;16423:3;16419:12;16412:19;;16217:220;;;:::o;16443:366::-;16585:3;16606:67;16670:2;16665:3;16606:67;:::i;:::-;16599:74;;16682:93;16771:3;16682:93;:::i;:::-;16800:2;16795:3;16791:12;16784:19;;16589:220;;;:::o;16815:366::-;16957:3;16978:67;17042:2;17037:3;16978:67;:::i;:::-;16971:74;;17054:93;17143:3;17054:93;:::i;:::-;17172:2;17167:3;17163:12;17156:19;;16961:220;;;:::o;17187:366::-;17329:3;17350:67;17414:2;17409:3;17350:67;:::i;:::-;17343:74;;17426:93;17515:3;17426:93;:::i;:::-;17544:2;17539:3;17535:12;17528:19;;17333:220;;;:::o;17559:366::-;17701:3;17722:67;17786:2;17781:3;17722:67;:::i;:::-;17715:74;;17798:93;17887:3;17798:93;:::i;:::-;17916:2;17911:3;17907:12;17900:19;;17705:220;;;:::o;17931:366::-;18073:3;18094:67;18158:2;18153:3;18094:67;:::i;:::-;18087:74;;18170:93;18259:3;18170:93;:::i;:::-;18288:2;18283:3;18279:12;18272:19;;18077:220;;;:::o;18303:366::-;18445:3;18466:67;18530:2;18525:3;18466:67;:::i;:::-;18459:74;;18542:93;18631:3;18542:93;:::i;:::-;18660:2;18655:3;18651:12;18644:19;;18449:220;;;:::o;18675:108::-;18752:24;18770:5;18752:24;:::i;:::-;18747:3;18740:37;18730:53;;:::o;18789:118::-;18876:24;18894:5;18876:24;:::i;:::-;18871:3;18864:37;18854:53;;:::o;18913:256::-;19025:3;19040:75;19111:3;19102:6;19040:75;:::i;:::-;19140:2;19135:3;19131:12;19124:19;;19160:3;19153:10;;19029:140;;;;:::o;19175:695::-;19453:3;19475:92;19563:3;19554:6;19475:92;:::i;:::-;19468:99;;19584:95;19675:3;19666:6;19584:95;:::i;:::-;19577:102;;19696:148;19840:3;19696:148;:::i;:::-;19689:155;;19861:3;19854:10;;19457:413;;;;;:::o;19876:222::-;19969:4;20007:2;19996:9;19992:18;19984:26;;20020:71;20088:1;20077:9;20073:17;20064:6;20020:71;:::i;:::-;19974:124;;;;:::o;20104:640::-;20299:4;20337:3;20326:9;20322:19;20314:27;;20351:71;20419:1;20408:9;20404:17;20395:6;20351:71;:::i;:::-;20432:72;20500:2;20489:9;20485:18;20476:6;20432:72;:::i;:::-;20514;20582:2;20571:9;20567:18;20558:6;20514:72;:::i;:::-;20633:9;20627:4;20623:20;20618:2;20607:9;20603:18;20596:48;20661:76;20732:4;20723:6;20661:76;:::i;:::-;20653:84;;20304:440;;;;;;;:::o;20750:373::-;20893:4;20931:2;20920:9;20916:18;20908:26;;20980:9;20974:4;20970:20;20966:1;20955:9;20951:17;20944:47;21008:108;21111:4;21102:6;21008:108;:::i;:::-;21000:116;;20898:225;;;;:::o;21129:210::-;21216:4;21254:2;21243:9;21239:18;21231:26;;21267:65;21329:1;21318:9;21314:17;21305:6;21267:65;:::i;:::-;21221:118;;;;:::o;21345:222::-;21438:4;21476:2;21465:9;21461:18;21453:26;;21489:71;21557:1;21546:9;21542:17;21533:6;21489:71;:::i;:::-;21443:124;;;;:::o;21573:313::-;21686:4;21724:2;21713:9;21709:18;21701:26;;21773:9;21767:4;21763:20;21759:1;21748:9;21744:17;21737:47;21801:78;21874:4;21865:6;21801:78;:::i;:::-;21793:86;;21691:195;;;;:::o;21892:419::-;22058:4;22096:2;22085:9;22081:18;22073:26;;22145:9;22139:4;22135:20;22131:1;22120:9;22116:17;22109:47;22173:131;22299:4;22173:131;:::i;:::-;22165:139;;22063:248;;;:::o;22317:419::-;22483:4;22521:2;22510:9;22506:18;22498:26;;22570:9;22564:4;22560:20;22556:1;22545:9;22541:17;22534:47;22598:131;22724:4;22598:131;:::i;:::-;22590:139;;22488:248;;;:::o;22742:419::-;22908:4;22946:2;22935:9;22931:18;22923:26;;22995:9;22989:4;22985:20;22981:1;22970:9;22966:17;22959:47;23023:131;23149:4;23023:131;:::i;:::-;23015:139;;22913:248;;;:::o;23167:419::-;23333:4;23371:2;23360:9;23356:18;23348:26;;23420:9;23414:4;23410:20;23406:1;23395:9;23391:17;23384:47;23448:131;23574:4;23448:131;:::i;:::-;23440:139;;23338:248;;;:::o;23592:419::-;23758:4;23796:2;23785:9;23781:18;23773:26;;23845:9;23839:4;23835:20;23831:1;23820:9;23816:17;23809:47;23873:131;23999:4;23873:131;:::i;:::-;23865:139;;23763:248;;;:::o;24017:419::-;24183:4;24221:2;24210:9;24206:18;24198:26;;24270:9;24264:4;24260:20;24256:1;24245:9;24241:17;24234:47;24298:131;24424:4;24298:131;:::i;:::-;24290:139;;24188:248;;;:::o;24442:419::-;24608:4;24646:2;24635:9;24631:18;24623:26;;24695:9;24689:4;24685:20;24681:1;24670:9;24666:17;24659:47;24723:131;24849:4;24723:131;:::i;:::-;24715:139;;24613:248;;;:::o;24867:419::-;25033:4;25071:2;25060:9;25056:18;25048:26;;25120:9;25114:4;25110:20;25106:1;25095:9;25091:17;25084:47;25148:131;25274:4;25148:131;:::i;:::-;25140:139;;25038:248;;;:::o;25292:419::-;25458:4;25496:2;25485:9;25481:18;25473:26;;25545:9;25539:4;25535:20;25531:1;25520:9;25516:17;25509:47;25573:131;25699:4;25573:131;:::i;:::-;25565:139;;25463:248;;;:::o;25717:419::-;25883:4;25921:2;25910:9;25906:18;25898:26;;25970:9;25964:4;25960:20;25956:1;25945:9;25941:17;25934:47;25998:131;26124:4;25998:131;:::i;:::-;25990:139;;25888:248;;;:::o;26142:419::-;26308:4;26346:2;26335:9;26331:18;26323:26;;26395:9;26389:4;26385:20;26381:1;26370:9;26366:17;26359:47;26423:131;26549:4;26423:131;:::i;:::-;26415:139;;26313:248;;;:::o;26567:419::-;26733:4;26771:2;26760:9;26756:18;26748:26;;26820:9;26814:4;26810:20;26806:1;26795:9;26791:17;26784:47;26848:131;26974:4;26848:131;:::i;:::-;26840:139;;26738:248;;;:::o;26992:419::-;27158:4;27196:2;27185:9;27181:18;27173:26;;27245:9;27239:4;27235:20;27231:1;27220:9;27216:17;27209:47;27273:131;27399:4;27273:131;:::i;:::-;27265:139;;27163:248;;;:::o;27417:419::-;27583:4;27621:2;27610:9;27606:18;27598:26;;27670:9;27664:4;27660:20;27656:1;27645:9;27641:17;27634:47;27698:131;27824:4;27698:131;:::i;:::-;27690:139;;27588:248;;;:::o;27842:419::-;28008:4;28046:2;28035:9;28031:18;28023:26;;28095:9;28089:4;28085:20;28081:1;28070:9;28066:17;28059:47;28123:131;28249:4;28123:131;:::i;:::-;28115:139;;28013:248;;;:::o;28267:419::-;28433:4;28471:2;28460:9;28456:18;28448:26;;28520:9;28514:4;28510:20;28506:1;28495:9;28491:17;28484:47;28548:131;28674:4;28548:131;:::i;:::-;28540:139;;28438:248;;;:::o;28692:419::-;28858:4;28896:2;28885:9;28881:18;28873:26;;28945:9;28939:4;28935:20;28931:1;28920:9;28916:17;28909:47;28973:131;29099:4;28973:131;:::i;:::-;28965:139;;28863:248;;;:::o;29117:222::-;29210:4;29248:2;29237:9;29233:18;29225:26;;29261:71;29329:1;29318:9;29314:17;29305:6;29261:71;:::i;:::-;29215:124;;;;:::o;29345:129::-;29379:6;29406:20;;:::i;:::-;29396:30;;29435:33;29463:4;29455:6;29435:33;:::i;:::-;29386:88;;;:::o;29480:75::-;29513:6;29546:2;29540:9;29530:19;;29520:35;:::o;29561:311::-;29638:4;29728:18;29720:6;29717:30;29714:2;;;29750:18;;:::i;:::-;29714:2;29800:4;29792:6;29788:17;29780:25;;29860:4;29854;29850:15;29842:23;;29643:229;;;:::o;29878:307::-;29939:4;30029:18;30021:6;30018:30;30015:2;;;30051:18;;:::i;:::-;30015:2;30089:29;30111:6;30089:29;:::i;:::-;30081:37;;30173:4;30167;30163:15;30155:23;;29944:241;;;:::o;30191:308::-;30253:4;30343:18;30335:6;30332:30;30329:2;;;30365:18;;:::i;:::-;30329:2;30403:29;30425:6;30403:29;:::i;:::-;30395:37;;30487:4;30481;30477:15;30469:23;;30258:241;;;:::o;30505:132::-;30572:4;30595:3;30587:11;;30625:4;30620:3;30616:14;30608:22;;30577:60;;;:::o;30643:141::-;30692:4;30715:3;30707:11;;30738:3;30735:1;30728:14;30772:4;30769:1;30759:18;30751:26;;30697:87;;;:::o;30790:114::-;30857:6;30891:5;30885:12;30875:22;;30864:40;;;:::o;30910:98::-;30961:6;30995:5;30989:12;30979:22;;30968:40;;;:::o;31014:99::-;31066:6;31100:5;31094:12;31084:22;;31073:40;;;:::o;31119:113::-;31189:4;31221;31216:3;31212:14;31204:22;;31194:38;;;:::o;31238:184::-;31337:11;31371:6;31366:3;31359:19;31411:4;31406:3;31402:14;31387:29;;31349:73;;;;:::o;31428:168::-;31511:11;31545:6;31540:3;31533:19;31585:4;31580:3;31576:14;31561:29;;31523:73;;;;:::o;31602:169::-;31686:11;31720:6;31715:3;31708:19;31760:4;31755:3;31751:14;31736:29;;31698:73;;;;:::o;31777:148::-;31879:11;31916:3;31901:18;;31891:34;;;;:::o;31931:305::-;31971:3;31990:20;32008:1;31990:20;:::i;:::-;31985:25;;32024:20;32042:1;32024:20;:::i;:::-;32019:25;;32178:1;32110:66;32106:74;32103:1;32100:81;32097:2;;;32184:18;;:::i;:::-;32097:2;32228:1;32225;32221:9;32214:16;;31975:261;;;;:::o;32242:185::-;32282:1;32299:20;32317:1;32299:20;:::i;:::-;32294:25;;32333:20;32351:1;32333:20;:::i;:::-;32328:25;;32372:1;32362:2;;32377:18;;:::i;:::-;32362:2;32419:1;32416;32412:9;32407:14;;32284:143;;;;:::o;32433:348::-;32473:7;32496:20;32514:1;32496:20;:::i;:::-;32491:25;;32530:20;32548:1;32530:20;:::i;:::-;32525:25;;32718:1;32650:66;32646:74;32643:1;32640:81;32635:1;32628:9;32621:17;32617:105;32614:2;;;32725:18;;:::i;:::-;32614:2;32773:1;32770;32766:9;32755:20;;32481:300;;;;:::o;32787:191::-;32827:4;32847:20;32865:1;32847:20;:::i;:::-;32842:25;;32881:20;32899:1;32881:20;:::i;:::-;32876:25;;32920:1;32917;32914:8;32911:2;;;32925:18;;:::i;:::-;32911:2;32970:1;32967;32963:9;32955:17;;32832:146;;;;:::o;32984:96::-;33021:7;33050:24;33068:5;33050:24;:::i;:::-;33039:35;;33029:51;;;:::o;33086:90::-;33120:7;33163:5;33156:13;33149:21;33138:32;;33128:48;;;:::o;33182:77::-;33219:7;33248:5;33237:16;;33227:32;;;:::o;33265:149::-;33301:7;33341:66;33334:5;33330:78;33319:89;;33309:105;;;:::o;33420:126::-;33457:7;33497:42;33490:5;33486:54;33475:65;;33465:81;;;:::o;33552:77::-;33589:7;33618:5;33607:16;;33597:32;;;:::o;33635:154::-;33719:6;33714:3;33709;33696:30;33781:1;33772:6;33767:3;33763:16;33756:27;33686:103;;;:::o;33795:307::-;33863:1;33873:113;33887:6;33884:1;33881:13;33873:113;;;33972:1;33967:3;33963:11;33957:18;33953:1;33948:3;33944:11;33937:39;33909:2;33906:1;33902:10;33897:15;;33873:113;;;34004:6;34001:1;33998:13;33995:2;;;34084:1;34075:6;34070:3;34066:16;34059:27;33995:2;33844:258;;;;:::o;34108:320::-;34152:6;34189:1;34183:4;34179:12;34169:22;;34236:1;34230:4;34226:12;34257:18;34247:2;;34313:4;34305:6;34301:17;34291:27;;34247:2;34375;34367:6;34364:14;34344:18;34341:38;34338:2;;;34394:18;;:::i;:::-;34338:2;34159:269;;;;:::o;34434:281::-;34517:27;34539:4;34517:27;:::i;:::-;34509:6;34505:40;34647:6;34635:10;34632:22;34611:18;34599:10;34596:34;34593:62;34590:2;;;34658:18;;:::i;:::-;34590:2;34698:10;34694:2;34687:22;34477:238;;;:::o;34721:233::-;34760:3;34783:24;34801:5;34783:24;:::i;:::-;34774:33;;34829:66;34822:5;34819:77;34816:2;;;34899:18;;:::i;:::-;34816:2;34946:1;34939:5;34935:13;34928:20;;34764:190;;;:::o;34960:100::-;34999:7;35028:26;35048:5;35028:26;:::i;:::-;35017:37;;35007:53;;;:::o;35066:94::-;35105:7;35134:20;35148:5;35134:20;:::i;:::-;35123:31;;35113:47;;;:::o;35166:176::-;35198:1;35215:20;35233:1;35215:20;:::i;:::-;35210:25;;35249:20;35267:1;35249:20;:::i;:::-;35244:25;;35288:1;35278:2;;35293:18;;:::i;:::-;35278:2;35334:1;35331;35327:9;35322:14;;35200:142;;;;:::o;35348:180::-;35396:77;35393:1;35386:88;35493:4;35490:1;35483:15;35517:4;35514:1;35507:15;35534:180;35582:77;35579:1;35572:88;35679:4;35676:1;35669:15;35703:4;35700:1;35693:15;35720:180;35768:77;35765:1;35758:88;35865:4;35862:1;35855:15;35889:4;35886:1;35879:15;35906:180;35954:77;35951:1;35944:88;36051:4;36048:1;36041:15;36075:4;36072:1;36065:15;36092:102;36133:6;36184:2;36180:7;36175:2;36168:5;36164:14;36160:28;36150:38;;36140:54;;;:::o;36200:94::-;36233:8;36281:5;36277:2;36273:14;36252:35;;36242:52;;;:::o;36300:225::-;36440:34;36436:1;36428:6;36424:14;36417:58;36509:8;36504:2;36496:6;36492:15;36485:33;36406:119;:::o;36531:225::-;36671:34;36667:1;36659:6;36655:14;36648:58;36740:8;36735:2;36727:6;36723:15;36716:33;36637:119;:::o;36762:227::-;36902:34;36898:1;36890:6;36886:14;36879:58;36971:10;36966:2;36958:6;36954:15;36947:35;36868:121;:::o;36995:225::-;37135:34;37131:1;37123:6;37119:14;37112:58;37204:8;37199:2;37191:6;37187:15;37180:33;37101:119;:::o;37226:223::-;37366:34;37362:1;37354:6;37350:14;37343:58;37435:6;37430:2;37422:6;37418:15;37411:31;37332:117;:::o;37455:237::-;37595:34;37591:1;37583:6;37579:14;37572:58;37664:20;37659:2;37651:6;37647:15;37640:45;37561:131;:::o;37698:155::-;37838:7;37834:1;37826:6;37822:14;37815:31;37804:49;:::o;37859:221::-;37999:34;37995:1;37987:6;37983:14;37976:58;38068:4;38063:2;38055:6;38051:15;38044:29;37965:115;:::o;38086:182::-;38226:34;38222:1;38214:6;38210:14;38203:58;38192:76;:::o;38274:234::-;38414:34;38410:1;38402:6;38398:14;38391:58;38483:17;38478:2;38470:6;38466:15;38459:42;38380:128;:::o;38514:235::-;38654:34;38650:1;38642:6;38638:14;38631:58;38723:18;38718:2;38710:6;38706:15;38699:43;38620:129;:::o;38755:181::-;38895:33;38891:1;38883:6;38879:14;38872:57;38861:75;:::o;38942:228::-;39082:34;39078:1;39070:6;39066:14;39059:58;39151:11;39146:2;39138:6;39134:15;39127:36;39048:122;:::o;39176:244::-;39316:34;39312:1;39304:6;39300:14;39293:58;39385:27;39380:2;39372:6;39368:15;39361:52;39282:138;:::o;39426:182::-;39566:34;39562:1;39554:6;39550:14;39543:58;39532:76;:::o;39614:232::-;39754:34;39750:1;39742:6;39738:14;39731:58;39823:15;39818:2;39810:6;39806:15;39799:40;39720:126;:::o;39852:229::-;39992:34;39988:1;39980:6;39976:14;39969:58;40061:12;40056:2;40048:6;40044:15;40037:37;39958:123;:::o;40087:175::-;40227:27;40223:1;40215:6;40211:14;40204:51;40193:69;:::o;40268:122::-;40341:24;40359:5;40341:24;:::i;:::-;40334:5;40331:35;40321:2;;40380:1;40377;40370:12;40321:2;40311:79;:::o;40396:116::-;40466:21;40481:5;40466:21;:::i;:::-;40459:5;40456:32;40446:2;;40502:1;40499;40492:12;40446:2;40436:76;:::o;40518:122::-;40591:24;40609:5;40591:24;:::i;:::-;40584:5;40581:35;40571:2;;40630:1;40627;40620:12;40571:2;40561:79;:::o;40646:120::-;40718:23;40735:5;40718:23;:::i;:::-;40711:5;40708:34;40698:2;;40756:1;40753;40746:12;40698:2;40688:78;:::o;40772:122::-;40845:24;40863:5;40845:24;:::i;:::-;40838:5;40835:35;40825:2;;40884:1;40881;40874:12;40825:2;40815:79;:::o
Swarm Source
ipfs://28f7f49e0ab8e9e7f896cb2bb8575b1cb28f7f901a8d7fde670081948336fe2b
Loading...
Loading
Loading...
Loading
OVERVIEW
Adventure Island is a collection of 1,534 surprise PFPs inspired by Adventure Island. Every HODLER is a unique warrior born to save the princess. The journey is long yet excited. Always, don't get mad, get fun.Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.