More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,940 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 17449434 | 23 days ago | IN | 0 CRO | 0.24896677 | ||||
Approve | 17378843 | 27 days ago | IN | 0 CRO | 0.24882542 | ||||
Set Approval For... | 17326184 | 31 days ago | IN | 0 CRO | 0.23602185 | ||||
Approve | 17013772 | 51 days ago | IN | 0 CRO | 0.24904075 | ||||
Set Approval For... | 16997072 | 53 days ago | IN | 0 CRO | 0.24782294 | ||||
Set Approval For... | 16971738 | 54 days ago | IN | 0 CRO | 0.23602185 | ||||
Set Approval For... | 16918403 | 58 days ago | IN | 0 CRO | 0.23602185 | ||||
Approve | 16888788 | 60 days ago | IN | 0 CRO | 0.24904075 | ||||
Approve | 16888779 | 60 days ago | IN | 0 CRO | 0.14854575 | ||||
Approve | 16888778 | 60 days ago | IN | 0 CRO | 0.24904075 | ||||
Approve | 16888768 | 60 days ago | IN | 0 CRO | 0.24904075 | ||||
Approve | 16852301 | 62 days ago | IN | 0 CRO | 0.24904075 | ||||
Set Approval For... | 16726503 | 71 days ago | IN | 0 CRO | 0.23602185 | ||||
Set Approval For... | 16374629 | 94 days ago | IN | 0 CRO | 0.23602185 | ||||
Set Approval For... | 16351084 | 95 days ago | IN | 0 CRO | 0.23602185 | ||||
Set Approval For... | 16205934 | 105 days ago | IN | 0 CRO | 0.38943327 | ||||
Safe Transfer Fr... | 16060178 | 114 days ago | IN | 0 CRO | 0.66733379 | ||||
Approve | 15946402 | 122 days ago | IN | 0 CRO | 0.24904075 | ||||
Approve | 15946381 | 122 days ago | IN | 0 CRO | 0.24904075 | ||||
Approve | 15898596 | 125 days ago | IN | 0 CRO | 0.24904075 | ||||
Set Approval For... | 15873438 | 126 days ago | IN | 0 CRO | 0.23602185 | ||||
Set Approval For... | 15860436 | 127 days ago | IN | 0 CRO | 0.23602185 | ||||
Safe Transfer Fr... | 15854730 | 128 days ago | IN | 0 CRO | 0.49668735 | ||||
Safe Transfer Fr... | 15854680 | 128 days ago | IN | 0 CRO | 0.51089779 | ||||
Set Approval For... | 15668676 | 140 days ago | IN | 0 CRO | 0.15405 |
Latest 20 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
6981939 | 707 days ago | 41,564.5 CRO | ||||
6981939 | 707 days ago | 1,285.5 CRO | ||||
6825796 | 718 days ago | 33,925.75 CRO | ||||
6825796 | 718 days ago | 1,049.25 CRO | ||||
6430969 | 743 days ago | 33,877.25 CRO | ||||
6430969 | 743 days ago | 1,047.75 CRO | ||||
6263856 | 754 days ago | 35,574.75 CRO | ||||
6263856 | 754 days ago | 1,100.25 CRO | ||||
6061781 | 768 days ago | 34,823 CRO | ||||
6061781 | 768 days ago | 1,077 CRO | ||||
5683714 | 792 days ago | 33,101.25 CRO | ||||
5683714 | 792 days ago | 1,023.75 CRO | ||||
5333084 | 815 days ago | 42,267.75 CRO | ||||
5333084 | 815 days ago | 1,307.25 CRO | ||||
4832122 | 848 days ago | 64,456.5 CRO | ||||
4832122 | 848 days ago | 1,993.5 CRO | ||||
4447920 | 874 days ago | 67,924.25 CRO | ||||
4447920 | 874 days ago | 2,100.75 CRO | ||||
4367154 | 879 days ago | 47,627 CRO | ||||
4367154 | 879 days ago | 1,473 CRO |
Loading...
Loading
Contract Name:
AlphaLionsNFT
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-08-19 */ // 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 v4.4.1 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/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 v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // File: contracts/AlphaLions.sol pragma solidity 0.8.13; contract AlphaLionsNFT is ERC721Enumerable, Ownable { using Strings for uint256; string public baseURI; string public baseExtension = ".json"; uint256 public baseCost = 375 ether; uint256 public presaleCost = 325 ether; uint256 public maxSupply = 1500; uint256 public maxMintAmount = 1500; uint256 public remainingSupplyForGiveaway = 170; uint256 public timePresale; uint256 public timePublicSale; address public devAddress = 0xC00e7D699E8289617Fb95809AEb36e629603Fa66; address public teamAddress = 0x9553Ff41B51A28f28DC87c95657dBA8b621D3fB4; address public crkNFTAddress = 0xAD4bDA67bB8b6A502496EEF4dFba2ffdBAc38dB6; address public crqNFTAddress = 0x51D25FB5FBfe57FF67B20c499d4dd1d3c64844B7; mapping(address => uint256) public totalMintedByAddress; mapping(address => bool) public addressIsWhitelisted; constructor(string memory _name, string memory _symbol, string memory _initialBaseURI, uint256 _presaleStartTime, uint256 _presaleDurationSeconds) ERC721(_name, _symbol){ require(_presaleStartTime > 0, "Presale Start Time"); require(_presaleDurationSeconds > 0, "Presale Duration must be set"); timePresale = _presaleStartTime; timePublicSale = _presaleStartTime + _presaleDurationSeconds; baseURI = _initialBaseURI; } function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function tokenURI(uint256 _tokenId) public view virtual override returns(string memory) { require(_exists(_tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, _tokenId.toString(), baseExtension)) : ""; } function mint(uint256 _mintAmount) public payable { require(totalSupply() + _mintAmount <= maxSupply, "Purchase exceeds maximum supply"); require(totalMintedByAddress[msg.sender] + _mintAmount <= maxMintAmount, "Purchase exceeds the limit of NFT's you can mint"); require(block.timestamp >= timePresale, "Sale is not yet open"); require(msg.value >= cost(msg.sender) * _mintAmount, "Please enter the correct price"); for(uint256 i = 1; i <= _mintAmount; i++) { uint256 tokenId = totalSupply() + 1; totalMintedByAddress[msg.sender] = totalMintedByAddress[msg.sender] + 1; _safeMint(msg.sender, tokenId); } } function mintGiveAwayTokens(uint256 _mintAmount) public onlyOwner { require(remainingSupplyForGiveaway > 0, "All giveaway tokens are minted"); require(_mintAmount <= remainingSupplyForGiveaway, "All giveaway tokens already minted"); for(uint256 i = 1; i <= _mintAmount; i++) { uint256 tokenId = totalSupply() + 1; remainingSupplyForGiveaway = remainingSupplyForGiveaway - 1; _safeMint(teamAddress, tokenId); } } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setMaxMintAmount(uint256 _maxMintAmount) public onlyOwner { maxMintAmount = _maxMintAmount; } function setCost(uint256 _newCost) public onlyOwner { baseCost = _newCost; } function setPresaleStart(uint256 _newTimePresale) public onlyOwner { timePresale = _newTimePresale; } function setPublicSaleStart(uint256 _newTimePublicSale) public onlyOwner { timePublicSale = _newTimePublicSale; } function setPresaleCost(uint256 _newPresaleCost) public onlyOwner { presaleCost = _newPresaleCost; } function addWalletToWhitelist(address _wallet) public onlyOwner { addressIsWhitelisted[_wallet] = true; } function removeWalletFromWhitelist(address _wallet) public onlyOwner { addressIsWhitelisted[_wallet] = false; } function bulkAddWalletsToWhitelist(address[] memory _wallets) public onlyOwner { for (uint256 i = 0; i < _wallets.length; i++) { addressIsWhitelisted[_wallets[i]] = true; } } function withdraw() public payable onlyOwner { (bool devPaid, ) = payable(devAddress).call{value: address(this).balance * 3 / 100}(""); require(devPaid); (bool teamPaid, ) = payable(teamAddress).call{value: address(this).balance}(""); require(teamPaid); } function cost(address _wallet) public view returns(uint256) { if(_walletValidForPresale(_wallet)) { return presaleCost; } else { return baseCost; } } function _walletValidForPresale(address _wallet) public view returns (bool) { if (addressIsWhitelisted[_wallet] || IERC721(crkNFTAddress).balanceOf(_wallet) > 0 || IERC721(crqNFTAddress).balanceOf(_wallet) > 0) { return true; } return false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initialBaseURI","type":"string"},{"internalType":"uint256","name":"_presaleStartTime","type":"uint256"},{"internalType":"uint256","name":"_presaleDurationSeconds","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"_walletValidForPresale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"addWalletToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressIsWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"baseCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"}],"name":"bulkAddWalletsToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"crkNFTAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"crqNFTAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mintGiveAwayTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"remainingSupplyForGiveaway","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"removeWalletFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintAmount","type":"uint256"}],"name":"setMaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPresaleCost","type":"uint256"}],"name":"setPresaleCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newTimePresale","type":"uint256"}],"name":"setPresaleStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newTimePublicSale","type":"uint256"}],"name":"setPublicSaleStart","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":"teamAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timePresale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timePublicSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalMintedByAddress","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":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c908051906020019062000051929190620003f3565b506814542ba12a337c0000600d5568119e47f21381f40000600e556105dc600f556105dc60105560aa60115573c00e7d699e8289617fb95809aeb36e629603fa66601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739553ff41b51a28f28dc87c95657dba8b621d3fb4601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ad4bda67bb8b6a502496eef4dfba2ffdbac38db6601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507351d25fb5fbfe57ff67b20c499d4dd1d3c64844b7601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001de57600080fd5b5060405162005a2338038062005a2383398181016040528101906200020491906200067b565b848481600090805190602001906200021e929190620003f3565b50806001908051906020019062000237929190620003f3565b5050506200025a6200024e6200032560201b60201c565b6200032d60201b60201c565b60008211620002a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200029790620007c1565b60405180910390fd5b60008111620002e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002dd9062000833565b60405180910390fd5b816012819055508082620002fb919062000884565b60138190555082600b908051906020019062000319929190620003f3565b50505050505062000945565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620004019062000910565b90600052602060002090601f01602090048101928262000425576000855562000471565b82601f106200044057805160ff191683800117855562000471565b8280016001018555821562000471579182015b828111156200047057825182559160200191906001019062000453565b5b50905062000480919062000484565b5090565b5b808211156200049f57600081600090555060010162000485565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200050c82620004c1565b810181811067ffffffffffffffff821117156200052e576200052d620004d2565b5b80604052505050565b600062000543620004a3565b905062000551828262000501565b919050565b600067ffffffffffffffff821115620005745762000573620004d2565b5b6200057f82620004c1565b9050602081019050919050565b60005b83811015620005ac5780820151818401526020810190506200058f565b83811115620005bc576000848401525b50505050565b6000620005d9620005d38462000556565b62000537565b905082815260208101848484011115620005f857620005f7620004bc565b5b620006058482856200058c565b509392505050565b600082601f830112620006255762000624620004b7565b5b815162000637848260208601620005c2565b91505092915050565b6000819050919050565b620006558162000640565b81146200066157600080fd5b50565b60008151905062000675816200064a565b92915050565b600080600080600060a086880312156200069a5762000699620004ad565b5b600086015167ffffffffffffffff811115620006bb57620006ba620004b2565b5b620006c9888289016200060d565b955050602086015167ffffffffffffffff811115620006ed57620006ec620004b2565b5b620006fb888289016200060d565b945050604086015167ffffffffffffffff8111156200071f576200071e620004b2565b5b6200072d888289016200060d565b9350506060620007408882890162000664565b9250506080620007538882890162000664565b9150509295509295909350565b600082825260208201905092915050565b7f50726573616c652053746172742054696d650000000000000000000000000000600082015250565b6000620007a960128362000760565b9150620007b68262000771565b602082019050919050565b60006020820190508181036000830152620007dc816200079a565b9050919050565b7f50726573616c65204475726174696f6e206d7573742062652073657400000000600082015250565b60006200081b601c8362000760565b91506200082882620007e3565b602082019050919050565b600060208201905081810360008301526200084e816200080c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008918262000640565b91506200089e8362000640565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620008d657620008d562000855565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200092957607f821691505b6020821081036200093f576200093e620008e1565b5b50919050565b6150ce80620009556000396000f3fe6080604052600436106102935760003560e01c806365c0cfa41161015a57806396f1833f116100c1578063c66828621161007a578063c6682862146109fa578063c87b56dd14610a25578063ce23772b14610a62578063d5abeb0114610a8b578063e985e9c514610ab6578063f2fde38b14610af357610293565b806396f1833f146108f957806397cf84fc14610924578063a0712d6814610961578063a22cb4651461097d578063b7fdc4cb146109a6578063b88d4fde146109d157610293565b80637fe49e00116101135780637fe49e00146107d557806385d33002146108125780638da5cb5b1461084f5780638fdcf9421461087a57806393822557146108a357806395d89b41146108ce57610293565b806365c0cfa4146106d757806368e7c8ac146107025780636c0360eb1461072d57806370a0823114610758578063715018a61461079557806378152bbe146107ac57610293565b806323b872dd116101fe5780633f0f42e2116101b75780633f0f42e2146105b957806342842e0e146105e257806344a0d68a1461060b5780634f6ccce71461063457806355f804b3146106715780636352211e1461069a57610293565b806323b872dd146104ca5780632a23d07d146104f35780632f745c591461051e57806331ed16ac1461055b5780633ad10ef6146105845780633ccfd60b146105af57610293565b80630b3ba988116102505780630b3ba988146103cc5780630ca282f7146103f557806318160ddd1461041e57806318ecc5e0146104495780631c75f08514610474578063239c70ae1461049f57610293565b80630152de7c1461029857806301ffc9a7146102d557806306fdde0314610312578063081812fc1461033d578063088a4ed01461037a578063095ea7b3146103a3575b600080fd5b3480156102a457600080fd5b506102bf60048036038101906102ba91906137b6565b610b1c565b6040516102cc91906137fe565b60405180910390f35b3480156102e157600080fd5b506102fc60048036038101906102f79190613871565b610ccf565b60405161030991906137fe565b60405180910390f35b34801561031e57600080fd5b50610327610d49565b6040516103349190613937565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f919061398f565b610ddb565b60405161037191906139cb565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c919061398f565b610e60565b005b3480156103af57600080fd5b506103ca60048036038101906103c591906139e6565b610ee6565b005b3480156103d857600080fd5b506103f360048036038101906103ee919061398f565b610ffd565b005b34801561040157600080fd5b5061041c6004803603810190610417919061398f565b611182565b005b34801561042a57600080fd5b50610433611208565b6040516104409190613a35565b60405180910390f35b34801561045557600080fd5b5061045e611215565b60405161046b9190613a35565b60405180910390f35b34801561048057600080fd5b5061048961121b565b60405161049691906139cb565b60405180910390f35b3480156104ab57600080fd5b506104b4611241565b6040516104c19190613a35565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190613a50565b611247565b005b3480156104ff57600080fd5b506105086112a7565b6040516105159190613a35565b60405180910390f35b34801561052a57600080fd5b50610545600480360381019061054091906139e6565b6112ad565b6040516105529190613a35565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d9190613beb565b611352565b005b34801561059057600080fd5b50610599611463565b6040516105a691906139cb565b60405180910390f35b6105b7611489565b005b3480156105c557600080fd5b506105e060048036038101906105db91906137b6565b611651565b005b3480156105ee57600080fd5b5061060960048036038101906106049190613a50565b611728565b005b34801561061757600080fd5b50610632600480360381019061062d919061398f565b611748565b005b34801561064057600080fd5b5061065b6004803603810190610656919061398f565b6117ce565b6040516106689190613a35565b60405180910390f35b34801561067d57600080fd5b5061069860048036038101906106939190613ce9565b61183f565b005b3480156106a657600080fd5b506106c160048036038101906106bc919061398f565b6118d5565b6040516106ce91906139cb565b60405180910390f35b3480156106e357600080fd5b506106ec611986565b6040516106f99190613a35565b60405180910390f35b34801561070e57600080fd5b5061071761198c565b6040516107249190613a35565b60405180910390f35b34801561073957600080fd5b50610742611992565b60405161074f9190613937565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a91906137b6565b611a20565b60405161078c9190613a35565b60405180910390f35b3480156107a157600080fd5b506107aa611ad7565b005b3480156107b857600080fd5b506107d360048036038101906107ce919061398f565b611b5f565b005b3480156107e157600080fd5b506107fc60048036038101906107f791906137b6565b611be5565b6040516108099190613a35565b60405180910390f35b34801561081e57600080fd5b50610839600480360381019061083491906137b6565b611c0a565b60405161084691906137fe565b60405180910390f35b34801561085b57600080fd5b50610864611c2a565b60405161087191906139cb565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c919061398f565b611c54565b005b3480156108af57600080fd5b506108b8611cda565b6040516108c59190613a35565b60405180910390f35b3480156108da57600080fd5b506108e3611ce0565b6040516108f09190613937565b60405180910390f35b34801561090557600080fd5b5061090e611d72565b60405161091b91906139cb565b60405180910390f35b34801561093057600080fd5b5061094b600480360381019061094691906137b6565b611d98565b6040516109589190613a35565b60405180910390f35b61097b6004803603810190610976919061398f565b611db0565b005b34801561098957600080fd5b506109a4600480360381019061099f9190613d5e565b612008565b005b3480156109b257600080fd5b506109bb61201e565b6040516109c891906139cb565b60405180910390f35b3480156109dd57600080fd5b506109f860048036038101906109f39190613e3f565b612044565b005b348015610a0657600080fd5b50610a0f6120a6565b604051610a1c9190613937565b60405180910390f35b348015610a3157600080fd5b50610a4c6004803603810190610a47919061398f565b612134565b604051610a599190613937565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a8491906137b6565b6121de565b005b348015610a9757600080fd5b50610aa06122b5565b604051610aad9190613a35565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190613ec2565b6122bb565b604051610aea91906137fe565b60405180910390f35b348015610aff57600080fd5b50610b1a6004803603810190610b1591906137b6565b61234f565b005b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610c1157506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610bce91906139cb565b602060405180830381865afa158015610beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0f9190613f17565b115b80610cb757506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610c7491906139cb565b602060405180830381865afa158015610c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb59190613f17565b115b15610cc55760019050610cca565b600090505b919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d425750610d4182612446565b5b9050919050565b606060008054610d5890613f73565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8490613f73565b8015610dd15780601f10610da657610100808354040283529160200191610dd1565b820191906000526020600020905b815481529060010190602001808311610db457829003601f168201915b5050505050905090565b6000610de682612528565b610e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1c90614016565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610e68612594565b73ffffffffffffffffffffffffffffffffffffffff16610e86611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed390614082565b60405180910390fd5b8060108190555050565b6000610ef1826118d5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5890614114565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f80612594565b73ffffffffffffffffffffffffffffffffffffffff161480610faf5750610fae81610fa9612594565b6122bb565b5b610fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe5906141a6565b60405180910390fd5b610ff8838361259c565b505050565b611005612594565b73ffffffffffffffffffffffffffffffffffffffff16611023611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107090614082565b60405180910390fd5b6000601154116110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590614212565b60405180910390fd5b601154811115611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa906142a4565b60405180910390fd5b6000600190505b81811161117e576000600161111d611208565b61112791906142f3565b905060016011546111389190614349565b60118190555061116a601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612655565b5080806111769061437d565b91505061110a565b5050565b61118a612594565b73ffffffffffffffffffffffffffffffffffffffff166111a8611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590614082565b60405180910390fd5b8060138190555050565b6000600880549050905090565b60115481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b611258611252612594565b82612673565b611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90614437565b60405180910390fd5b6112a2838383612751565b505050565b600e5481565b60006112b883611a20565b82106112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f0906144c9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61135a612594565b73ffffffffffffffffffffffffffffffffffffffff16611378611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c590614082565b60405180910390fd5b60005b815181101561145f576001601960008484815181106113f3576113f26144e9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114579061437d565b9150506113d1565b5050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611491612594565b73ffffffffffffffffffffffffffffffffffffffff166114af611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90614082565b60405180910390fd5b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16606460034761154f9190614518565b61155991906145a1565b60405161156590614603565b60006040518083038185875af1925050503d80600081146115a2576040519150601f19603f3d011682016040523d82523d6000602084013e6115a7565b606091505b50509050806115b557600080fd5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516115fd90614603565b60006040518083038185875af1925050503d806000811461163a576040519150601f19603f3d011682016040523d82523d6000602084013e61163f565b606091505b505090508061164d57600080fd5b5050565b611659612594565b73ffffffffffffffffffffffffffffffffffffffff16611677611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c490614082565b60405180910390fd5b6001601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61174383838360405180602001604052806000815250612044565b505050565b611750612594565b73ffffffffffffffffffffffffffffffffffffffff1661176e611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb90614082565b60405180910390fd5b80600d8190555050565b60006117d8611208565b8210611819576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118109061468a565b60405180910390fd5b6008828154811061182d5761182c6144e9565b5b90600052602060002001549050919050565b611847612594565b73ffffffffffffffffffffffffffffffffffffffff16611865611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290614082565b60405180910390fd5b80600b90805190602001906118d19291906136a1565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361197d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119749061471c565b60405180910390fd5b80915050919050565b60135481565b60125481565b600b805461199f90613f73565b80601f01602080910402602001604051908101604052809291908181526020018280546119cb90613f73565b8015611a185780601f106119ed57610100808354040283529160200191611a18565b820191906000526020600020905b8154815290600101906020018083116119fb57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a87906147ae565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611adf612594565b73ffffffffffffffffffffffffffffffffffffffff16611afd611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a90614082565b60405180910390fd5b611b5d60006129b7565b565b611b67612594565b73ffffffffffffffffffffffffffffffffffffffff16611b85611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd290614082565b60405180910390fd5b8060128190555050565b6000611bf082610b1c565b15611bff57600e549050611c05565b600d5490505b919050565b60196020528060005260406000206000915054906101000a900460ff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c5c612594565b73ffffffffffffffffffffffffffffffffffffffff16611c7a611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc790614082565b60405180910390fd5b80600e8190555050565b600d5481565b606060018054611cef90613f73565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1b90613f73565b8015611d685780601f10611d3d57610100808354040283529160200191611d68565b820191906000526020600020905b815481529060010190602001808311611d4b57829003601f168201915b5050505050905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60186020528060005260406000206000915090505481565b600f5481611dbc611208565b611dc691906142f3565b1115611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe9061481a565b60405180910390fd5b60105481601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e5591906142f3565b1115611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d906148ac565b60405180910390fd5b601254421015611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed290614918565b60405180910390fd5b80611ee533611be5565b611eef9190614518565b341015611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890614984565b60405180910390fd5b6000600190505b8181116120045760006001611f4b611208565b611f5591906142f3565b90506001601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa391906142f3565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ff03382612655565b508080611ffc9061437d565b915050611f38565b5050565b61201a612013612594565b8383612a7d565b5050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61205561204f612594565b83612673565b612094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208b90614437565b60405180910390fd5b6120a084848484612be9565b50505050565b600c80546120b390613f73565b80601f01602080910402602001604051908101604052809291908181526020018280546120df90613f73565b801561212c5780601f106121015761010080835404028352916020019161212c565b820191906000526020600020905b81548152906001019060200180831161210f57829003601f168201915b505050505081565b606061213f82612528565b61217e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217590614a16565b60405180910390fd5b6000612188612c45565b905060008151116121a857604051806020016040528060008152506121d6565b806121b284612cd7565b600c6040516020016121c693929190614b06565b6040516020818303038152906040525b915050919050565b6121e6612594565b73ffffffffffffffffffffffffffffffffffffffff16612204611c2a565b73ffffffffffffffffffffffffffffffffffffffff161461225a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225190614082565b60405180910390fd5b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612357612594565b73ffffffffffffffffffffffffffffffffffffffff16612375611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c290614082565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361243a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243190614ba9565b60405180910390fd5b612443816129b7565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061251157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612521575061252082612e37565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661260f836118d5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61266f828260405180602001604052806000815250612ea1565b5050565b600061267e82612528565b6126bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b490614c3b565b60405180910390fd5b60006126c8836118d5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061273757508373ffffffffffffffffffffffffffffffffffffffff1661271f84610ddb565b73ffffffffffffffffffffffffffffffffffffffff16145b80612748575061274781856122bb565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612771826118d5565b73ffffffffffffffffffffffffffffffffffffffff16146127c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127be90614ccd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282d90614d5f565b60405180910390fd5b612841838383612efc565b61284c60008261259c565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461289c9190614349565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128f391906142f3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46129b283838361300e565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae290614dcb565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612bdc91906137fe565b60405180910390a3505050565b612bf4848484612751565b612c0084848484613013565b612c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3690614e5d565b60405180910390fd5b50505050565b6060600b8054612c5490613f73565b80601f0160208091040260200160405190810160405280929190818152602001828054612c8090613f73565b8015612ccd5780601f10612ca257610100808354040283529160200191612ccd565b820191906000526020600020905b815481529060010190602001808311612cb057829003601f168201915b5050505050905090565b606060008203612d1e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e32565b600082905060005b60008214612d50578080612d399061437d565b915050600a82612d4991906145a1565b9150612d26565b60008167ffffffffffffffff811115612d6c57612d6b613aa8565b5b6040519080825280601f01601f191660200182016040528015612d9e5781602001600182028036833780820191505090505b5090505b60008514612e2b57600182612db79190614349565b9150600a85612dc69190614e7d565b6030612dd291906142f3565b60f81b818381518110612de857612de76144e9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e2491906145a1565b9450612da2565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612eab838361319a565b612eb86000848484613013565b612ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eee90614e5d565b60405180910390fd5b505050565b612f07838383613373565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f4957612f4481613378565b612f88565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612f8757612f8683826133c1565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fca57612fc58161352e565b613009565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146130085761300782826135ff565b5b5b505050565b505050565b60006130348473ffffffffffffffffffffffffffffffffffffffff1661367e565b1561318d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261305d612594565b8786866040518563ffffffff1660e01b815260040161307f9493929190614f03565b6020604051808303816000875af19250505080156130bb57506040513d601f19601f820116820180604052508101906130b89190614f64565b60015b61313d573d80600081146130eb576040519150601f19603f3d011682016040523d82523d6000602084013e6130f0565b606091505b506000815103613135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312c90614e5d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613192565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320090614fdd565b60405180910390fd5b61321281612528565b15613252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324990615049565b60405180910390fd5b61325e60008383612efc565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132ae91906142f3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461336f6000838361300e565b5050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016133ce84611a20565b6133d89190614349565b90506000600760008481526020019081526020016000205490508181146134bd576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506135429190614349565b9050600060096000848152602001908152602001600020549050600060088381548110613572576135716144e9565b5b906000526020600020015490508060088381548110613594576135936144e9565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806135e3576135e2615069565b5b6001900381819060005260206000200160009055905550505050565b600061360a83611a20565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546136ad90613f73565b90600052602060002090601f0160209004810192826136cf5760008555613716565b82601f106136e857805160ff1916838001178555613716565b82800160010185558215613716579182015b828111156137155782518255916020019190600101906136fa565b5b5090506137239190613727565b5090565b5b80821115613740576000816000905550600101613728565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061378382613758565b9050919050565b61379381613778565b811461379e57600080fd5b50565b6000813590506137b08161378a565b92915050565b6000602082840312156137cc576137cb61374e565b5b60006137da848285016137a1565b91505092915050565b60008115159050919050565b6137f8816137e3565b82525050565b600060208201905061381360008301846137ef565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61384e81613819565b811461385957600080fd5b50565b60008135905061386b81613845565b92915050565b6000602082840312156138875761388661374e565b5b60006138958482850161385c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156138d85780820151818401526020810190506138bd565b838111156138e7576000848401525b50505050565b6000601f19601f8301169050919050565b60006139098261389e565b61391381856138a9565b93506139238185602086016138ba565b61392c816138ed565b840191505092915050565b6000602082019050818103600083015261395181846138fe565b905092915050565b6000819050919050565b61396c81613959565b811461397757600080fd5b50565b60008135905061398981613963565b92915050565b6000602082840312156139a5576139a461374e565b5b60006139b38482850161397a565b91505092915050565b6139c581613778565b82525050565b60006020820190506139e060008301846139bc565b92915050565b600080604083850312156139fd576139fc61374e565b5b6000613a0b858286016137a1565b9250506020613a1c8582860161397a565b9150509250929050565b613a2f81613959565b82525050565b6000602082019050613a4a6000830184613a26565b92915050565b600080600060608486031215613a6957613a6861374e565b5b6000613a77868287016137a1565b9350506020613a88868287016137a1565b9250506040613a998682870161397a565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ae0826138ed565b810181811067ffffffffffffffff82111715613aff57613afe613aa8565b5b80604052505050565b6000613b12613744565b9050613b1e8282613ad7565b919050565b600067ffffffffffffffff821115613b3e57613b3d613aa8565b5b602082029050602081019050919050565b600080fd5b6000613b67613b6284613b23565b613b08565b90508083825260208201905060208402830185811115613b8a57613b89613b4f565b5b835b81811015613bb35780613b9f88826137a1565b845260208401935050602081019050613b8c565b5050509392505050565b600082601f830112613bd257613bd1613aa3565b5b8135613be2848260208601613b54565b91505092915050565b600060208284031215613c0157613c0061374e565b5b600082013567ffffffffffffffff811115613c1f57613c1e613753565b5b613c2b84828501613bbd565b91505092915050565b600080fd5b600067ffffffffffffffff821115613c5457613c53613aa8565b5b613c5d826138ed565b9050602081019050919050565b82818337600083830152505050565b6000613c8c613c8784613c39565b613b08565b905082815260208101848484011115613ca857613ca7613c34565b5b613cb3848285613c6a565b509392505050565b600082601f830112613cd057613ccf613aa3565b5b8135613ce0848260208601613c79565b91505092915050565b600060208284031215613cff57613cfe61374e565b5b600082013567ffffffffffffffff811115613d1d57613d1c613753565b5b613d2984828501613cbb565b91505092915050565b613d3b816137e3565b8114613d4657600080fd5b50565b600081359050613d5881613d32565b92915050565b60008060408385031215613d7557613d7461374e565b5b6000613d83858286016137a1565b9250506020613d9485828601613d49565b9150509250929050565b600067ffffffffffffffff821115613db957613db8613aa8565b5b613dc2826138ed565b9050602081019050919050565b6000613de2613ddd84613d9e565b613b08565b905082815260208101848484011115613dfe57613dfd613c34565b5b613e09848285613c6a565b509392505050565b600082601f830112613e2657613e25613aa3565b5b8135613e36848260208601613dcf565b91505092915050565b60008060008060808587031215613e5957613e5861374e565b5b6000613e67878288016137a1565b9450506020613e78878288016137a1565b9350506040613e898782880161397a565b925050606085013567ffffffffffffffff811115613eaa57613ea9613753565b5b613eb687828801613e11565b91505092959194509250565b60008060408385031215613ed957613ed861374e565b5b6000613ee7858286016137a1565b9250506020613ef8858286016137a1565b9150509250929050565b600081519050613f1181613963565b92915050565b600060208284031215613f2d57613f2c61374e565b5b6000613f3b84828501613f02565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f8b57607f821691505b602082108103613f9e57613f9d613f44565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614000602c836138a9565b915061400b82613fa4565b604082019050919050565b6000602082019050818103600083015261402f81613ff3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061406c6020836138a9565b915061407782614036565b602082019050919050565b6000602082019050818103600083015261409b8161405f565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006140fe6021836138a9565b9150614109826140a2565b604082019050919050565b6000602082019050818103600083015261412d816140f1565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006141906038836138a9565b915061419b82614134565b604082019050919050565b600060208201905081810360008301526141bf81614183565b9050919050565b7f416c6c20676976656177617920746f6b656e7320617265206d696e7465640000600082015250565b60006141fc601e836138a9565b9150614207826141c6565b602082019050919050565b6000602082019050818103600083015261422b816141ef565b9050919050565b7f416c6c20676976656177617920746f6b656e7320616c7265616479206d696e7460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600061428e6022836138a9565b915061429982614232565b604082019050919050565b600060208201905081810360008301526142bd81614281565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142fe82613959565b915061430983613959565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561433e5761433d6142c4565b5b828201905092915050565b600061435482613959565b915061435f83613959565b925082821015614372576143716142c4565b5b828203905092915050565b600061438882613959565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143ba576143b96142c4565b5b600182019050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006144216031836138a9565b915061442c826143c5565b604082019050919050565b6000602082019050818103600083015261445081614414565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006144b3602b836138a9565b91506144be82614457565b604082019050919050565b600060208201905081810360008301526144e2816144a6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061452382613959565b915061452e83613959565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614567576145666142c4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145ac82613959565b91506145b783613959565b9250826145c7576145c6614572565b5b828204905092915050565b600081905092915050565b50565b60006145ed6000836145d2565b91506145f8826145dd565b600082019050919050565b600061460e826145e0565b9150819050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614674602c836138a9565b915061467f82614618565b604082019050919050565b600060208201905081810360008301526146a381614667565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006147066029836138a9565b9150614711826146aa565b604082019050919050565b60006020820190508181036000830152614735816146f9565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614798602a836138a9565b91506147a38261473c565b604082019050919050565b600060208201905081810360008301526147c78161478b565b9050919050565b7f50757263686173652065786365656473206d6178696d756d20737570706c7900600082015250565b6000614804601f836138a9565b915061480f826147ce565b602082019050919050565b60006020820190508181036000830152614833816147f7565b9050919050565b7f5075726368617365206578636565647320746865206c696d6974206f66204e4660008201527f54277320796f752063616e206d696e7400000000000000000000000000000000602082015250565b60006148966030836138a9565b91506148a18261483a565b604082019050919050565b600060208201905081810360008301526148c581614889565b9050919050565b7f53616c65206973206e6f7420796574206f70656e000000000000000000000000600082015250565b60006149026014836138a9565b915061490d826148cc565b602082019050919050565b60006020820190508181036000830152614931816148f5565b9050919050565b7f506c6561736520656e7465722074686520636f72726563742070726963650000600082015250565b600061496e601e836138a9565b915061497982614938565b602082019050919050565b6000602082019050818103600083015261499d81614961565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614a00602f836138a9565b9150614a0b826149a4565b604082019050919050565b60006020820190508181036000830152614a2f816149f3565b9050919050565b600081905092915050565b6000614a4c8261389e565b614a568185614a36565b9350614a668185602086016138ba565b80840191505092915050565b60008190508160005260206000209050919050565b60008154614a9481613f73565b614a9e8186614a36565b94506001821660008114614ab95760018114614aca57614afd565b60ff19831686528186019350614afd565b614ad385614a72565b60005b83811015614af557815481890152600182019150602081019050614ad6565b838801955050505b50505092915050565b6000614b128286614a41565b9150614b1e8285614a41565b9150614b2a8284614a87565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b936026836138a9565b9150614b9e82614b37565b604082019050919050565b60006020820190508181036000830152614bc281614b86565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614c25602c836138a9565b9150614c3082614bc9565b604082019050919050565b60006020820190508181036000830152614c5481614c18565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000614cb76025836138a9565b9150614cc282614c5b565b604082019050919050565b60006020820190508181036000830152614ce681614caa565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d496024836138a9565b9150614d5482614ced565b604082019050919050565b60006020820190508181036000830152614d7881614d3c565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614db56019836138a9565b9150614dc082614d7f565b602082019050919050565b60006020820190508181036000830152614de481614da8565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614e476032836138a9565b9150614e5282614deb565b604082019050919050565b60006020820190508181036000830152614e7681614e3a565b9050919050565b6000614e8882613959565b9150614e9383613959565b925082614ea357614ea2614572565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b6000614ed582614eae565b614edf8185614eb9565b9350614eef8185602086016138ba565b614ef8816138ed565b840191505092915050565b6000608082019050614f1860008301876139bc565b614f2560208301866139bc565b614f326040830185613a26565b8181036060830152614f448184614eca565b905095945050505050565b600081519050614f5e81613845565b92915050565b600060208284031215614f7a57614f7961374e565b5b6000614f8884828501614f4f565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614fc76020836138a9565b9150614fd282614f91565b602082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615033601c836138a9565b915061503e82614ffd565b602082019050919050565b6000602082019050818103600083015261506281615026565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220f4fd2eade25cb58ff48ac7df4005089a5995c74cd8044a6019052168c31df0d464736f6c634300080d003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000062ffddb000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000014416c706861204c696f6e73205265626f6f7465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000003414c5200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d54635154377454315071573237546131583972754e506753624c486373434e47484d416d33454751704172632f00000000000000000000
Deployed Bytecode
0x6080604052600436106102935760003560e01c806365c0cfa41161015a57806396f1833f116100c1578063c66828621161007a578063c6682862146109fa578063c87b56dd14610a25578063ce23772b14610a62578063d5abeb0114610a8b578063e985e9c514610ab6578063f2fde38b14610af357610293565b806396f1833f146108f957806397cf84fc14610924578063a0712d6814610961578063a22cb4651461097d578063b7fdc4cb146109a6578063b88d4fde146109d157610293565b80637fe49e00116101135780637fe49e00146107d557806385d33002146108125780638da5cb5b1461084f5780638fdcf9421461087a57806393822557146108a357806395d89b41146108ce57610293565b806365c0cfa4146106d757806368e7c8ac146107025780636c0360eb1461072d57806370a0823114610758578063715018a61461079557806378152bbe146107ac57610293565b806323b872dd116101fe5780633f0f42e2116101b75780633f0f42e2146105b957806342842e0e146105e257806344a0d68a1461060b5780634f6ccce71461063457806355f804b3146106715780636352211e1461069a57610293565b806323b872dd146104ca5780632a23d07d146104f35780632f745c591461051e57806331ed16ac1461055b5780633ad10ef6146105845780633ccfd60b146105af57610293565b80630b3ba988116102505780630b3ba988146103cc5780630ca282f7146103f557806318160ddd1461041e57806318ecc5e0146104495780631c75f08514610474578063239c70ae1461049f57610293565b80630152de7c1461029857806301ffc9a7146102d557806306fdde0314610312578063081812fc1461033d578063088a4ed01461037a578063095ea7b3146103a3575b600080fd5b3480156102a457600080fd5b506102bf60048036038101906102ba91906137b6565b610b1c565b6040516102cc91906137fe565b60405180910390f35b3480156102e157600080fd5b506102fc60048036038101906102f79190613871565b610ccf565b60405161030991906137fe565b60405180910390f35b34801561031e57600080fd5b50610327610d49565b6040516103349190613937565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f919061398f565b610ddb565b60405161037191906139cb565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c919061398f565b610e60565b005b3480156103af57600080fd5b506103ca60048036038101906103c591906139e6565b610ee6565b005b3480156103d857600080fd5b506103f360048036038101906103ee919061398f565b610ffd565b005b34801561040157600080fd5b5061041c6004803603810190610417919061398f565b611182565b005b34801561042a57600080fd5b50610433611208565b6040516104409190613a35565b60405180910390f35b34801561045557600080fd5b5061045e611215565b60405161046b9190613a35565b60405180910390f35b34801561048057600080fd5b5061048961121b565b60405161049691906139cb565b60405180910390f35b3480156104ab57600080fd5b506104b4611241565b6040516104c19190613a35565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190613a50565b611247565b005b3480156104ff57600080fd5b506105086112a7565b6040516105159190613a35565b60405180910390f35b34801561052a57600080fd5b50610545600480360381019061054091906139e6565b6112ad565b6040516105529190613a35565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d9190613beb565b611352565b005b34801561059057600080fd5b50610599611463565b6040516105a691906139cb565b60405180910390f35b6105b7611489565b005b3480156105c557600080fd5b506105e060048036038101906105db91906137b6565b611651565b005b3480156105ee57600080fd5b5061060960048036038101906106049190613a50565b611728565b005b34801561061757600080fd5b50610632600480360381019061062d919061398f565b611748565b005b34801561064057600080fd5b5061065b6004803603810190610656919061398f565b6117ce565b6040516106689190613a35565b60405180910390f35b34801561067d57600080fd5b5061069860048036038101906106939190613ce9565b61183f565b005b3480156106a657600080fd5b506106c160048036038101906106bc919061398f565b6118d5565b6040516106ce91906139cb565b60405180910390f35b3480156106e357600080fd5b506106ec611986565b6040516106f99190613a35565b60405180910390f35b34801561070e57600080fd5b5061071761198c565b6040516107249190613a35565b60405180910390f35b34801561073957600080fd5b50610742611992565b60405161074f9190613937565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a91906137b6565b611a20565b60405161078c9190613a35565b60405180910390f35b3480156107a157600080fd5b506107aa611ad7565b005b3480156107b857600080fd5b506107d360048036038101906107ce919061398f565b611b5f565b005b3480156107e157600080fd5b506107fc60048036038101906107f791906137b6565b611be5565b6040516108099190613a35565b60405180910390f35b34801561081e57600080fd5b50610839600480360381019061083491906137b6565b611c0a565b60405161084691906137fe565b60405180910390f35b34801561085b57600080fd5b50610864611c2a565b60405161087191906139cb565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c919061398f565b611c54565b005b3480156108af57600080fd5b506108b8611cda565b6040516108c59190613a35565b60405180910390f35b3480156108da57600080fd5b506108e3611ce0565b6040516108f09190613937565b60405180910390f35b34801561090557600080fd5b5061090e611d72565b60405161091b91906139cb565b60405180910390f35b34801561093057600080fd5b5061094b600480360381019061094691906137b6565b611d98565b6040516109589190613a35565b60405180910390f35b61097b6004803603810190610976919061398f565b611db0565b005b34801561098957600080fd5b506109a4600480360381019061099f9190613d5e565b612008565b005b3480156109b257600080fd5b506109bb61201e565b6040516109c891906139cb565b60405180910390f35b3480156109dd57600080fd5b506109f860048036038101906109f39190613e3f565b612044565b005b348015610a0657600080fd5b50610a0f6120a6565b604051610a1c9190613937565b60405180910390f35b348015610a3157600080fd5b50610a4c6004803603810190610a47919061398f565b612134565b604051610a599190613937565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a8491906137b6565b6121de565b005b348015610a9757600080fd5b50610aa06122b5565b604051610aad9190613a35565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190613ec2565b6122bb565b604051610aea91906137fe565b60405180910390f35b348015610aff57600080fd5b50610b1a6004803603810190610b1591906137b6565b61234f565b005b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610c1157506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610bce91906139cb565b602060405180830381865afa158015610beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0f9190613f17565b115b80610cb757506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610c7491906139cb565b602060405180830381865afa158015610c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb59190613f17565b115b15610cc55760019050610cca565b600090505b919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d425750610d4182612446565b5b9050919050565b606060008054610d5890613f73565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8490613f73565b8015610dd15780601f10610da657610100808354040283529160200191610dd1565b820191906000526020600020905b815481529060010190602001808311610db457829003601f168201915b5050505050905090565b6000610de682612528565b610e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1c90614016565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610e68612594565b73ffffffffffffffffffffffffffffffffffffffff16610e86611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed390614082565b60405180910390fd5b8060108190555050565b6000610ef1826118d5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5890614114565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f80612594565b73ffffffffffffffffffffffffffffffffffffffff161480610faf5750610fae81610fa9612594565b6122bb565b5b610fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe5906141a6565b60405180910390fd5b610ff8838361259c565b505050565b611005612594565b73ffffffffffffffffffffffffffffffffffffffff16611023611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107090614082565b60405180910390fd5b6000601154116110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590614212565b60405180910390fd5b601154811115611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa906142a4565b60405180910390fd5b6000600190505b81811161117e576000600161111d611208565b61112791906142f3565b905060016011546111389190614349565b60118190555061116a601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612655565b5080806111769061437d565b91505061110a565b5050565b61118a612594565b73ffffffffffffffffffffffffffffffffffffffff166111a8611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590614082565b60405180910390fd5b8060138190555050565b6000600880549050905090565b60115481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b611258611252612594565b82612673565b611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90614437565b60405180910390fd5b6112a2838383612751565b505050565b600e5481565b60006112b883611a20565b82106112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f0906144c9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61135a612594565b73ffffffffffffffffffffffffffffffffffffffff16611378611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c590614082565b60405180910390fd5b60005b815181101561145f576001601960008484815181106113f3576113f26144e9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114579061437d565b9150506113d1565b5050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611491612594565b73ffffffffffffffffffffffffffffffffffffffff166114af611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90614082565b60405180910390fd5b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16606460034761154f9190614518565b61155991906145a1565b60405161156590614603565b60006040518083038185875af1925050503d80600081146115a2576040519150601f19603f3d011682016040523d82523d6000602084013e6115a7565b606091505b50509050806115b557600080fd5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516115fd90614603565b60006040518083038185875af1925050503d806000811461163a576040519150601f19603f3d011682016040523d82523d6000602084013e61163f565b606091505b505090508061164d57600080fd5b5050565b611659612594565b73ffffffffffffffffffffffffffffffffffffffff16611677611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c490614082565b60405180910390fd5b6001601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61174383838360405180602001604052806000815250612044565b505050565b611750612594565b73ffffffffffffffffffffffffffffffffffffffff1661176e611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb90614082565b60405180910390fd5b80600d8190555050565b60006117d8611208565b8210611819576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118109061468a565b60405180910390fd5b6008828154811061182d5761182c6144e9565b5b90600052602060002001549050919050565b611847612594565b73ffffffffffffffffffffffffffffffffffffffff16611865611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290614082565b60405180910390fd5b80600b90805190602001906118d19291906136a1565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361197d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119749061471c565b60405180910390fd5b80915050919050565b60135481565b60125481565b600b805461199f90613f73565b80601f01602080910402602001604051908101604052809291908181526020018280546119cb90613f73565b8015611a185780601f106119ed57610100808354040283529160200191611a18565b820191906000526020600020905b8154815290600101906020018083116119fb57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a87906147ae565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611adf612594565b73ffffffffffffffffffffffffffffffffffffffff16611afd611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a90614082565b60405180910390fd5b611b5d60006129b7565b565b611b67612594565b73ffffffffffffffffffffffffffffffffffffffff16611b85611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd290614082565b60405180910390fd5b8060128190555050565b6000611bf082610b1c565b15611bff57600e549050611c05565b600d5490505b919050565b60196020528060005260406000206000915054906101000a900460ff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c5c612594565b73ffffffffffffffffffffffffffffffffffffffff16611c7a611c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc790614082565b60405180910390fd5b80600e8190555050565b600d5481565b606060018054611cef90613f73565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1b90613f73565b8015611d685780601f10611d3d57610100808354040283529160200191611d68565b820191906000526020600020905b815481529060010190602001808311611d4b57829003601f168201915b5050505050905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60186020528060005260406000206000915090505481565b600f5481611dbc611208565b611dc691906142f3565b1115611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe9061481a565b60405180910390fd5b60105481601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e5591906142f3565b1115611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d906148ac565b60405180910390fd5b601254421015611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed290614918565b60405180910390fd5b80611ee533611be5565b611eef9190614518565b341015611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890614984565b60405180910390fd5b6000600190505b8181116120045760006001611f4b611208565b611f5591906142f3565b90506001601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa391906142f3565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ff03382612655565b508080611ffc9061437d565b915050611f38565b5050565b61201a612013612594565b8383612a7d565b5050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61205561204f612594565b83612673565b612094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208b90614437565b60405180910390fd5b6120a084848484612be9565b50505050565b600c80546120b390613f73565b80601f01602080910402602001604051908101604052809291908181526020018280546120df90613f73565b801561212c5780601f106121015761010080835404028352916020019161212c565b820191906000526020600020905b81548152906001019060200180831161210f57829003601f168201915b505050505081565b606061213f82612528565b61217e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217590614a16565b60405180910390fd5b6000612188612c45565b905060008151116121a857604051806020016040528060008152506121d6565b806121b284612cd7565b600c6040516020016121c693929190614b06565b6040516020818303038152906040525b915050919050565b6121e6612594565b73ffffffffffffffffffffffffffffffffffffffff16612204611c2a565b73ffffffffffffffffffffffffffffffffffffffff161461225a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225190614082565b60405180910390fd5b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612357612594565b73ffffffffffffffffffffffffffffffffffffffff16612375611c2a565b73ffffffffffffffffffffffffffffffffffffffff16146123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c290614082565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361243a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243190614ba9565b60405180910390fd5b612443816129b7565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061251157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612521575061252082612e37565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661260f836118d5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61266f828260405180602001604052806000815250612ea1565b5050565b600061267e82612528565b6126bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b490614c3b565b60405180910390fd5b60006126c8836118d5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061273757508373ffffffffffffffffffffffffffffffffffffffff1661271f84610ddb565b73ffffffffffffffffffffffffffffffffffffffff16145b80612748575061274781856122bb565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612771826118d5565b73ffffffffffffffffffffffffffffffffffffffff16146127c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127be90614ccd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282d90614d5f565b60405180910390fd5b612841838383612efc565b61284c60008261259c565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461289c9190614349565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128f391906142f3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46129b283838361300e565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae290614dcb565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612bdc91906137fe565b60405180910390a3505050565b612bf4848484612751565b612c0084848484613013565b612c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3690614e5d565b60405180910390fd5b50505050565b6060600b8054612c5490613f73565b80601f0160208091040260200160405190810160405280929190818152602001828054612c8090613f73565b8015612ccd5780601f10612ca257610100808354040283529160200191612ccd565b820191906000526020600020905b815481529060010190602001808311612cb057829003601f168201915b5050505050905090565b606060008203612d1e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e32565b600082905060005b60008214612d50578080612d399061437d565b915050600a82612d4991906145a1565b9150612d26565b60008167ffffffffffffffff811115612d6c57612d6b613aa8565b5b6040519080825280601f01601f191660200182016040528015612d9e5781602001600182028036833780820191505090505b5090505b60008514612e2b57600182612db79190614349565b9150600a85612dc69190614e7d565b6030612dd291906142f3565b60f81b818381518110612de857612de76144e9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e2491906145a1565b9450612da2565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612eab838361319a565b612eb86000848484613013565b612ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eee90614e5d565b60405180910390fd5b505050565b612f07838383613373565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f4957612f4481613378565b612f88565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612f8757612f8683826133c1565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fca57612fc58161352e565b613009565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146130085761300782826135ff565b5b5b505050565b505050565b60006130348473ffffffffffffffffffffffffffffffffffffffff1661367e565b1561318d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261305d612594565b8786866040518563ffffffff1660e01b815260040161307f9493929190614f03565b6020604051808303816000875af19250505080156130bb57506040513d601f19601f820116820180604052508101906130b89190614f64565b60015b61313d573d80600081146130eb576040519150601f19603f3d011682016040523d82523d6000602084013e6130f0565b606091505b506000815103613135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312c90614e5d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613192565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320090614fdd565b60405180910390fd5b61321281612528565b15613252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324990615049565b60405180910390fd5b61325e60008383612efc565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132ae91906142f3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461336f6000838361300e565b5050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016133ce84611a20565b6133d89190614349565b90506000600760008481526020019081526020016000205490508181146134bd576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506135429190614349565b9050600060096000848152602001908152602001600020549050600060088381548110613572576135716144e9565b5b906000526020600020015490508060088381548110613594576135936144e9565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806135e3576135e2615069565b5b6001900381819060005260206000200160009055905550505050565b600061360a83611a20565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546136ad90613f73565b90600052602060002090601f0160209004810192826136cf5760008555613716565b82601f106136e857805160ff1916838001178555613716565b82800160010185558215613716579182015b828111156137155782518255916020019190600101906136fa565b5b5090506137239190613727565b5090565b5b80821115613740576000816000905550600101613728565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061378382613758565b9050919050565b61379381613778565b811461379e57600080fd5b50565b6000813590506137b08161378a565b92915050565b6000602082840312156137cc576137cb61374e565b5b60006137da848285016137a1565b91505092915050565b60008115159050919050565b6137f8816137e3565b82525050565b600060208201905061381360008301846137ef565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61384e81613819565b811461385957600080fd5b50565b60008135905061386b81613845565b92915050565b6000602082840312156138875761388661374e565b5b60006138958482850161385c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156138d85780820151818401526020810190506138bd565b838111156138e7576000848401525b50505050565b6000601f19601f8301169050919050565b60006139098261389e565b61391381856138a9565b93506139238185602086016138ba565b61392c816138ed565b840191505092915050565b6000602082019050818103600083015261395181846138fe565b905092915050565b6000819050919050565b61396c81613959565b811461397757600080fd5b50565b60008135905061398981613963565b92915050565b6000602082840312156139a5576139a461374e565b5b60006139b38482850161397a565b91505092915050565b6139c581613778565b82525050565b60006020820190506139e060008301846139bc565b92915050565b600080604083850312156139fd576139fc61374e565b5b6000613a0b858286016137a1565b9250506020613a1c8582860161397a565b9150509250929050565b613a2f81613959565b82525050565b6000602082019050613a4a6000830184613a26565b92915050565b600080600060608486031215613a6957613a6861374e565b5b6000613a77868287016137a1565b9350506020613a88868287016137a1565b9250506040613a998682870161397a565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ae0826138ed565b810181811067ffffffffffffffff82111715613aff57613afe613aa8565b5b80604052505050565b6000613b12613744565b9050613b1e8282613ad7565b919050565b600067ffffffffffffffff821115613b3e57613b3d613aa8565b5b602082029050602081019050919050565b600080fd5b6000613b67613b6284613b23565b613b08565b90508083825260208201905060208402830185811115613b8a57613b89613b4f565b5b835b81811015613bb35780613b9f88826137a1565b845260208401935050602081019050613b8c565b5050509392505050565b600082601f830112613bd257613bd1613aa3565b5b8135613be2848260208601613b54565b91505092915050565b600060208284031215613c0157613c0061374e565b5b600082013567ffffffffffffffff811115613c1f57613c1e613753565b5b613c2b84828501613bbd565b91505092915050565b600080fd5b600067ffffffffffffffff821115613c5457613c53613aa8565b5b613c5d826138ed565b9050602081019050919050565b82818337600083830152505050565b6000613c8c613c8784613c39565b613b08565b905082815260208101848484011115613ca857613ca7613c34565b5b613cb3848285613c6a565b509392505050565b600082601f830112613cd057613ccf613aa3565b5b8135613ce0848260208601613c79565b91505092915050565b600060208284031215613cff57613cfe61374e565b5b600082013567ffffffffffffffff811115613d1d57613d1c613753565b5b613d2984828501613cbb565b91505092915050565b613d3b816137e3565b8114613d4657600080fd5b50565b600081359050613d5881613d32565b92915050565b60008060408385031215613d7557613d7461374e565b5b6000613d83858286016137a1565b9250506020613d9485828601613d49565b9150509250929050565b600067ffffffffffffffff821115613db957613db8613aa8565b5b613dc2826138ed565b9050602081019050919050565b6000613de2613ddd84613d9e565b613b08565b905082815260208101848484011115613dfe57613dfd613c34565b5b613e09848285613c6a565b509392505050565b600082601f830112613e2657613e25613aa3565b5b8135613e36848260208601613dcf565b91505092915050565b60008060008060808587031215613e5957613e5861374e565b5b6000613e67878288016137a1565b9450506020613e78878288016137a1565b9350506040613e898782880161397a565b925050606085013567ffffffffffffffff811115613eaa57613ea9613753565b5b613eb687828801613e11565b91505092959194509250565b60008060408385031215613ed957613ed861374e565b5b6000613ee7858286016137a1565b9250506020613ef8858286016137a1565b9150509250929050565b600081519050613f1181613963565b92915050565b600060208284031215613f2d57613f2c61374e565b5b6000613f3b84828501613f02565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f8b57607f821691505b602082108103613f9e57613f9d613f44565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614000602c836138a9565b915061400b82613fa4565b604082019050919050565b6000602082019050818103600083015261402f81613ff3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061406c6020836138a9565b915061407782614036565b602082019050919050565b6000602082019050818103600083015261409b8161405f565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006140fe6021836138a9565b9150614109826140a2565b604082019050919050565b6000602082019050818103600083015261412d816140f1565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006141906038836138a9565b915061419b82614134565b604082019050919050565b600060208201905081810360008301526141bf81614183565b9050919050565b7f416c6c20676976656177617920746f6b656e7320617265206d696e7465640000600082015250565b60006141fc601e836138a9565b9150614207826141c6565b602082019050919050565b6000602082019050818103600083015261422b816141ef565b9050919050565b7f416c6c20676976656177617920746f6b656e7320616c7265616479206d696e7460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600061428e6022836138a9565b915061429982614232565b604082019050919050565b600060208201905081810360008301526142bd81614281565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142fe82613959565b915061430983613959565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561433e5761433d6142c4565b5b828201905092915050565b600061435482613959565b915061435f83613959565b925082821015614372576143716142c4565b5b828203905092915050565b600061438882613959565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143ba576143b96142c4565b5b600182019050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006144216031836138a9565b915061442c826143c5565b604082019050919050565b6000602082019050818103600083015261445081614414565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006144b3602b836138a9565b91506144be82614457565b604082019050919050565b600060208201905081810360008301526144e2816144a6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061452382613959565b915061452e83613959565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614567576145666142c4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145ac82613959565b91506145b783613959565b9250826145c7576145c6614572565b5b828204905092915050565b600081905092915050565b50565b60006145ed6000836145d2565b91506145f8826145dd565b600082019050919050565b600061460e826145e0565b9150819050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614674602c836138a9565b915061467f82614618565b604082019050919050565b600060208201905081810360008301526146a381614667565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006147066029836138a9565b9150614711826146aa565b604082019050919050565b60006020820190508181036000830152614735816146f9565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614798602a836138a9565b91506147a38261473c565b604082019050919050565b600060208201905081810360008301526147c78161478b565b9050919050565b7f50757263686173652065786365656473206d6178696d756d20737570706c7900600082015250565b6000614804601f836138a9565b915061480f826147ce565b602082019050919050565b60006020820190508181036000830152614833816147f7565b9050919050565b7f5075726368617365206578636565647320746865206c696d6974206f66204e4660008201527f54277320796f752063616e206d696e7400000000000000000000000000000000602082015250565b60006148966030836138a9565b91506148a18261483a565b604082019050919050565b600060208201905081810360008301526148c581614889565b9050919050565b7f53616c65206973206e6f7420796574206f70656e000000000000000000000000600082015250565b60006149026014836138a9565b915061490d826148cc565b602082019050919050565b60006020820190508181036000830152614931816148f5565b9050919050565b7f506c6561736520656e7465722074686520636f72726563742070726963650000600082015250565b600061496e601e836138a9565b915061497982614938565b602082019050919050565b6000602082019050818103600083015261499d81614961565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614a00602f836138a9565b9150614a0b826149a4565b604082019050919050565b60006020820190508181036000830152614a2f816149f3565b9050919050565b600081905092915050565b6000614a4c8261389e565b614a568185614a36565b9350614a668185602086016138ba565b80840191505092915050565b60008190508160005260206000209050919050565b60008154614a9481613f73565b614a9e8186614a36565b94506001821660008114614ab95760018114614aca57614afd565b60ff19831686528186019350614afd565b614ad385614a72565b60005b83811015614af557815481890152600182019150602081019050614ad6565b838801955050505b50505092915050565b6000614b128286614a41565b9150614b1e8285614a41565b9150614b2a8284614a87565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b936026836138a9565b9150614b9e82614b37565b604082019050919050565b60006020820190508181036000830152614bc281614b86565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614c25602c836138a9565b9150614c3082614bc9565b604082019050919050565b60006020820190508181036000830152614c5481614c18565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000614cb76025836138a9565b9150614cc282614c5b565b604082019050919050565b60006020820190508181036000830152614ce681614caa565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d496024836138a9565b9150614d5482614ced565b604082019050919050565b60006020820190508181036000830152614d7881614d3c565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614db56019836138a9565b9150614dc082614d7f565b602082019050919050565b60006020820190508181036000830152614de481614da8565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614e476032836138a9565b9150614e5282614deb565b604082019050919050565b60006020820190508181036000830152614e7681614e3a565b9050919050565b6000614e8882613959565b9150614e9383613959565b925082614ea357614ea2614572565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b6000614ed582614eae565b614edf8185614eb9565b9350614eef8185602086016138ba565b614ef8816138ed565b840191505092915050565b6000608082019050614f1860008301876139bc565b614f2560208301866139bc565b614f326040830185613a26565b8181036060830152614f448184614eca565b905095945050505050565b600081519050614f5e81613845565b92915050565b600060208284031215614f7a57614f7961374e565b5b6000614f8884828501614f4f565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614fc76020836138a9565b9150614fd282614f91565b602082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615033601c836138a9565b915061503e82614ffd565b602082019050919050565b6000602082019050818103600083015261506281615026565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220f4fd2eade25cb58ff48ac7df4005089a5995c74cd8044a6019052168c31df0d464736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000062ffddb000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000014416c706861204c696f6e73205265626f6f7465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000003414c5200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d54635154377454315071573237546131583972754e506753624c486373434e47484d416d33454751704172632f00000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Alpha Lions Rebooted
Arg [1] : _symbol (string): ALR
Arg [2] : _initialBaseURI (string): ipfs://QmTcQT7tT1PqW27Ta1X9ruNPgSbLHcsCNGHMAm3EGQpArc/
Arg [3] : _presaleStartTime (uint256): 1660935600
Arg [4] : _presaleDurationSeconds (uint256): 1
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000000000000000000000000000000000000062ffddb0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [6] : 416c706861204c696f6e73205265626f6f746564000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [8] : 414c520000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [10] : 697066733a2f2f516d54635154377454315071573237546131583972754e5067
Arg [11] : 53624c486373434e47484d416d33454751704172632f00000000000000000000
Deployed Bytecode Sourcemap
45532:5103:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50342:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39314:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26134:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27693:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48740:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27216:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48127:493;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49085:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39954:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45870:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46076:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45828:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28443:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45745:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39622:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49602:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45999:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49820:299;;;:::i;:::-;;49342:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28853:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48864:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40144:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48628:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25828:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45957:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45924:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45625:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25558:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4730:103;;;;;;;;;;;;;:::i;:::-;;48962:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50127:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46378:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4079:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49220:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45703:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26303:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46234:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46316:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47413:706;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27986:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46154:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29109:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45653:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47033:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49469:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45790:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28212:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4988:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50342:290;50412:4;50433:20;:29;50454:7;50433:29;;;;;;;;;;;;;;;;;;;;;;;;;:78;;;;50510:1;50474:13;;;;;;;;;;;50466:32;;;50499:7;50466:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;50433:78;:127;;;;50559:1;50523:13;;;;;;;;;;;50515:32;;;50548:7;50515:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;50433:127;50429:171;;;50584:4;50577:11;;;;50429:171;50619:5;50612:12;;50342:290;;;;:::o;39314:224::-;39416:4;39455:35;39440:50;;;:11;:50;;;;:90;;;;39494:36;39518:11;39494:23;:36::i;:::-;39440:90;39433:97;;39314:224;;;:::o;26134:100::-;26188:13;26221:5;26214:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26134:100;:::o;27693:221::-;27769:7;27797:16;27805:7;27797;:16::i;:::-;27789:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27882:15;:24;27898:7;27882:24;;;;;;;;;;;;;;;;;;;;;27875:31;;27693:221;;;:::o;48740:116::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48834:14:::1;48818:13;:30;;;;48740:116:::0;:::o;27216:411::-;27297:13;27313:23;27328:7;27313:14;:23::i;:::-;27297:39;;27361:5;27355:11;;:2;:11;;;27347:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;27455:5;27439:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;27464:37;27481:5;27488:12;:10;:12::i;:::-;27464:16;:37::i;:::-;27439:62;27417:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;27598:21;27607:2;27611:7;27598:8;:21::i;:::-;27286:341;27216:411;;:::o;48127:493::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48241:1:::1;48212:26;;:30;48204:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;48311:26;;48296:11;:41;;48288:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;48393:9;48405:1;48393:13;;48389:224;48413:11;48408:1;:16;48389:224;;48446:15;48480:1;48464:13;:11;:13::i;:::-;:17;;;;:::i;:::-;48446:35;;48554:1;48525:26;;:30;;;;:::i;:::-;48496:26;:59;;;;48570:31;48580:11;;;;;;;;;;;48593:7;48570:9;:31::i;:::-;48431:182;48426:3;;;;;:::i;:::-;;;;48389:224;;;;48127:493:::0;:::o;49085:127::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49186:18:::1;49169:14;:35;;;;49085:127:::0;:::o;39954:113::-;40015:7;40042:10;:17;;;;40035:24;;39954:113;:::o;45870:47::-;;;;:::o;46076:71::-;;;;;;;;;;;;;:::o;45828:35::-;;;;:::o;28443:339::-;28638:41;28657:12;:10;:12::i;:::-;28671:7;28638:18;:41::i;:::-;28630:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;28746:28;28756:4;28762:2;28766:7;28746:9;:28::i;:::-;28443:339;;;:::o;45745:38::-;;;;:::o;39622:256::-;39719:7;39755:23;39772:5;39755:16;:23::i;:::-;39747:5;:31;39739:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;39844:12;:19;39857:5;39844:19;;;;;;;;;;;;;;;:26;39864:5;39844:26;;;;;;;;;;;;39837:33;;39622:256;;;;:::o;49602:210::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49697:9:::1;49692:113;49716:8;:15;49712:1;:19;49692:113;;;49789:4;49753:20;:33;49774:8;49783:1;49774:11;;;;;;;;:::i;:::-;;;;;;;;49753:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;49733:3;;;;;:::i;:::-;;;;49692:113;;;;49602:210:::0;:::o;45999:70::-;;;;;;;;;;;;;:::o;49820:299::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49877:12:::1;49903:10;;;;;;;;;;;49895:24;;49955:3;49951:1;49927:21;:25;;;;:::i;:::-;:31;;;;:::i;:::-;49895:68;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49876:87;;;49982:7;49974:16;;;::::0;::::1;;50004:13;50031:11;;;;;;;;;;;50023:25;;50056:21;50023:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50003:79;;;50101:8;50093:17;;;::::0;::::1;;49865:254;;49820:299::o:0;49342:119::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49449:4:::1;49417:20;:29;49438:7;49417:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;49342:119:::0;:::o;28853:185::-;28991:39;29008:4;29014:2;29018:7;28991:39;;;;;;;;;;;;:16;:39::i;:::-;28853:185;;;:::o;48864:90::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48938:8:::1;48927;:19;;;;48864:90:::0;:::o;40144:233::-;40219:7;40255:30;:28;:30::i;:::-;40247:5;:38;40239:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;40352:10;40363:5;40352:17;;;;;;;;:::i;:::-;;;;;;;;;;40345:24;;40144:233;;;:::o;48628:104::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48713:11:::1;48703:7;:21;;;;;;;;;;;;:::i;:::-;;48628:104:::0;:::o;25828:239::-;25900:7;25920:13;25936:7;:16;25944:7;25936:16;;;;;;;;;;;;;;;;;;;;;25920:32;;25988:1;25971:19;;:5;:19;;;25963:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26054:5;26047:12;;;25828:239;;;:::o;45957:29::-;;;;:::o;45924:26::-;;;;:::o;45625:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25558:208::-;25630:7;25675:1;25658:19;;:5;:19;;;25650:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25742:9;:16;25752:5;25742:16;;;;;;;;;;;;;;;;25735:23;;25558:208;;;:::o;4730:103::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4795:30:::1;4822:1;4795:18;:30::i;:::-;4730:103::o:0;48962:115::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49054:15:::1;49040:11;:29;;;;48962:115:::0;:::o;50127:207::-;50178:7;50201:31;50224:7;50201:22;:31::i;:::-;50198:129;;;50256:11;;50249:18;;;;50198:129;50307:8;;50300:15;;50127:207;;;;:::o;46378:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4079:87::-;4125:7;4152:6;;;;;;;;;;;4145:13;;4079:87;:::o;49220:114::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49311:15:::1;49297:11;:29;;;;49220:114:::0;:::o;45703:35::-;;;;:::o;26303:104::-;26359:13;26392:7;26385:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26303:104;:::o;46234:73::-;;;;;;;;;;;;;:::o;46316:55::-;;;;;;;;;;;;;;;;;:::o;47413:706::-;47513:9;;47498:11;47482:13;:11;:13::i;:::-;:27;;;;:::i;:::-;:40;;47474:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;47627:13;;47612:11;47577:20;:32;47598:10;47577:32;;;;;;;;;;;;;;;;:46;;;;:::i;:::-;:63;;47569:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;47731:11;;47712:15;:30;;47704:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;47818:11;47799:16;47804:10;47799:4;:16::i;:::-;:30;;;;:::i;:::-;47786:9;:43;;47778:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;47881:9;47893:1;47881:13;;47877:235;47901:11;47896:1;:16;47877:235;;47934:15;47968:1;47952:13;:11;:13::i;:::-;:17;;;;:::i;:::-;47934:35;;48054:1;48019:20;:32;48040:10;48019:32;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;47984:20;:32;48005:10;47984:32;;;;;;;;;;;;;;;:71;;;;48070:30;48080:10;48092:7;48070:9;:30::i;:::-;47919:193;47914:3;;;;;:::i;:::-;;;;47877:235;;;;47413:706;:::o;27986:155::-;28081:52;28100:12;:10;:12::i;:::-;28114:8;28124;28081:18;:52::i;:::-;27986:155;;:::o;46154:73::-;;;;;;;;;;;;;:::o;29109:328::-;29284:41;29303:12;:10;:12::i;:::-;29317:7;29284:18;:41::i;:::-;29276:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;29390:39;29404:4;29410:2;29414:7;29423:5;29390:13;:39::i;:::-;29109:328;;;;:::o;45653:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;47033:372::-;47106:13;47140:17;47148:8;47140:7;:17::i;:::-;47132:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;47222:28;47253:10;:8;:10::i;:::-;47222:41;;47312:1;47287:14;47281:28;:32;:116;;;;;;;;;;;;;;;;;47340:14;47356:19;:8;:17;:19::i;:::-;47377:13;47323:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;47281:116;47274:123;;;47033:372;;;:::o;49469:125::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49581:5:::1;49549:20;:29;49570:7;49549:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;49469:125:::0;:::o;45790:31::-;;;;:::o;28212:164::-;28309:4;28333:18;:25;28352:5;28333:25;;;;;;;;;;;;;;;:35;28359:8;28333:35;;;;;;;;;;;;;;;;;;;;;;;;;28326:42;;28212:164;;;;:::o;4988:201::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5097:1:::1;5077:22;;:8;:22;;::::0;5069:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5153:28;5172:8;5153:18;:28::i;:::-;4988:201:::0;:::o;25189:305::-;25291:4;25343:25;25328:40;;;:11;:40;;;;:105;;;;25400:33;25385:48;;;:11;:48;;;;25328:105;:158;;;;25450:36;25474:11;25450:23;:36::i;:::-;25328:158;25308:178;;25189:305;;;:::o;30947:127::-;31012:4;31064:1;31036:30;;:7;:16;31044:7;31036:16;;;;;;;;;;;;;;;;;;;;;:30;;;;31029:37;;30947:127;;;:::o;2803:98::-;2856:7;2883:10;2876:17;;2803:98;:::o;35093:174::-;35195:2;35168:15;:24;35184:7;35168:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;35251:7;35247:2;35213:46;;35222:23;35237:7;35222:14;:23::i;:::-;35213:46;;;;;;;;;;;;35093:174;;:::o;31931:110::-;32007:26;32017:2;32021:7;32007:26;;;;;;;;;;;;:9;:26::i;:::-;31931:110;;:::o;31241:348::-;31334:4;31359:16;31367:7;31359;:16::i;:::-;31351:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31435:13;31451:23;31466:7;31451:14;:23::i;:::-;31435:39;;31504:5;31493:16;;:7;:16;;;:51;;;;31537:7;31513:31;;:20;31525:7;31513:11;:20::i;:::-;:31;;;31493:51;:87;;;;31548:32;31565:5;31572:7;31548:16;:32::i;:::-;31493:87;31485:96;;;31241:348;;;;:::o;34350:625::-;34509:4;34482:31;;:23;34497:7;34482:14;:23::i;:::-;:31;;;34474:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;34588:1;34574:16;;:2;:16;;;34566:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;34644:39;34665:4;34671:2;34675:7;34644:20;:39::i;:::-;34748:29;34765:1;34769:7;34748:8;:29::i;:::-;34809:1;34790:9;:15;34800:4;34790:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;34838:1;34821:9;:13;34831:2;34821:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;34869:2;34850:7;:16;34858:7;34850:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;34908:7;34904:2;34889:27;;34898:4;34889:27;;;;;;;;;;;;34929:38;34949:4;34955:2;34959:7;34929:19;:38::i;:::-;34350:625;;;:::o;5349:191::-;5423:16;5442:6;;;;;;;;;;;5423:25;;5468:8;5459:6;;:17;;;;;;;;;;;;;;;;;;5523:8;5492:40;;5513:8;5492:40;;;;;;;;;;;;5412:128;5349:191;:::o;35409:315::-;35564:8;35555:17;;:5;:17;;;35547:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;35651:8;35613:18;:25;35632:5;35613:25;;;;;;;;;;;;;;;:35;35639:8;35613:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35697:8;35675:41;;35690:5;35675:41;;;35707:8;35675:41;;;;;;:::i;:::-;;;;;;;;35409:315;;;:::o;30319:::-;30476:28;30486:4;30492:2;30496:7;30476:9;:28::i;:::-;30523:48;30546:4;30552:2;30556:7;30565:5;30523:22;:48::i;:::-;30515:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;30319:315;;;;:::o;46917:108::-;46977:13;47010:7;47003:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46917:108;:::o;365:723::-;421:13;651:1;642:5;:10;638:53;;669:10;;;;;;;;;;;;;;;;;;;;;638:53;701:12;716:5;701:20;;732:14;757:78;772:1;764:4;:9;757:78;;790:8;;;;;:::i;:::-;;;;821:2;813:10;;;;;:::i;:::-;;;757:78;;;845:19;877:6;867:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;845:39;;895:154;911:1;902:5;:10;895:154;;939:1;929:11;;;;;:::i;:::-;;;1006:2;998:5;:10;;;;:::i;:::-;985:2;:24;;;;:::i;:::-;972:39;;955:6;962;955:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1035:2;1026:11;;;;;:::i;:::-;;;895:154;;;1073:6;1059:21;;;;;365:723;;;;:::o;16863:157::-;16948:4;16987:25;16972:40;;;:11;:40;;;;16965:47;;16863:157;;;:::o;32268:321::-;32398:18;32404:2;32408:7;32398:5;:18::i;:::-;32449:54;32480:1;32484:2;32488:7;32497:5;32449:22;:54::i;:::-;32427:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;32268:321;;;:::o;40990:589::-;41134:45;41161:4;41167:2;41171:7;41134:26;:45::i;:::-;41212:1;41196:18;;:4;:18;;;41192:187;;41231:40;41263:7;41231:31;:40::i;:::-;41192:187;;;41301:2;41293:10;;:4;:10;;;41289:90;;41320:47;41353:4;41359:7;41320:32;:47::i;:::-;41289:90;41192:187;41407:1;41393:16;;:2;:16;;;41389:183;;41426:45;41463:7;41426:36;:45::i;:::-;41389:183;;;41499:4;41493:10;;:2;:10;;;41489:83;;41520:40;41548:2;41552:7;41520:27;:40::i;:::-;41489:83;41389:183;40990:589;;;:::o;38171:125::-;;;;:::o;36289:799::-;36444:4;36465:15;:2;:13;;;:15::i;:::-;36461:620;;;36517:2;36501:36;;;36538:12;:10;:12::i;:::-;36552:4;36558:7;36567:5;36501:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;36497:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36760:1;36743:6;:13;:18;36739:272;;36786:60;;;;;;;;;;:::i;:::-;;;;;;;;36739:272;36961:6;36955:13;36946:6;36942:2;36938:15;36931:38;36497:529;36634:41;;;36624:51;;;:6;:51;;;;36617:58;;;;;36461:620;37065:4;37058:11;;36289:799;;;;;;;:::o;32925:439::-;33019:1;33005:16;;:2;:16;;;32997:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;33078:16;33086:7;33078;:16::i;:::-;33077:17;33069:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;33140:45;33169:1;33173:2;33177:7;33140:20;:45::i;:::-;33215:1;33198:9;:13;33208:2;33198:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;33246:2;33227:7;:16;33235:7;33227:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;33291:7;33287:2;33266:33;;33283:1;33266:33;;;;;;;;;;;;33312:44;33340:1;33344:2;33348:7;33312:19;:44::i;:::-;32925:439;;:::o;37660:126::-;;;;:::o;42302:164::-;42406:10;:17;;;;42379:15;:24;42395:7;42379:24;;;;;;;;;;;:44;;;;42434:10;42450:7;42434:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42302:164;:::o;43093:988::-;43359:22;43409:1;43384:22;43401:4;43384:16;:22::i;:::-;:26;;;;:::i;:::-;43359:51;;43421:18;43442:17;:26;43460:7;43442:26;;;;;;;;;;;;43421:47;;43589:14;43575:10;:28;43571:328;;43620:19;43642:12;:18;43655:4;43642:18;;;;;;;;;;;;;;;:34;43661:14;43642:34;;;;;;;;;;;;43620:56;;43726:11;43693:12;:18;43706:4;43693:18;;;;;;;;;;;;;;;:30;43712:10;43693:30;;;;;;;;;;;:44;;;;43843:10;43810:17;:30;43828:11;43810:30;;;;;;;;;;;:43;;;;43605:294;43571:328;43995:17;:26;44013:7;43995:26;;;;;;;;;;;43988:33;;;44039:12;:18;44052:4;44039:18;;;;;;;;;;;;;;;:34;44058:14;44039:34;;;;;;;;;;;44032:41;;;43174:907;;43093:988;;:::o;44376:1079::-;44629:22;44674:1;44654:10;:17;;;;:21;;;;:::i;:::-;44629:46;;44686:18;44707:15;:24;44723:7;44707:24;;;;;;;;;;;;44686:45;;45058:19;45080:10;45091:14;45080:26;;;;;;;;:::i;:::-;;;;;;;;;;45058:48;;45144:11;45119:10;45130;45119:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;45255:10;45224:15;:28;45240:11;45224:28;;;;;;;;;;;:41;;;;45396:15;:24;45412:7;45396:24;;;;;;;;;;;45389:31;;;45431:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;44447:1008;;;44376:1079;:::o;41880:221::-;41965:14;41982:20;41999:2;41982:16;:20::i;:::-;41965:37;;42040:7;42013:12;:16;42026:2;42013:16;;;;;;;;;;;;;;;:24;42030:6;42013:24;;;;;;;;;;;:34;;;;42087:6;42058:17;:26;42076:7;42058:26;;;;;;;;;;;:35;;;;41954:147;41880:221;;:::o;6780:326::-;6840:4;7097:1;7075:7;:19;;;:23;7068:30;;6780:326;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:90::-;1210:7;1253:5;1246:13;1239:21;1228:32;;1176:90;;;:::o;1272:109::-;1353:21;1368:5;1353:21;:::i;:::-;1348:3;1341:34;1272:109;;:::o;1387:210::-;1474:4;1512:2;1501:9;1497:18;1489:26;;1525:65;1587:1;1576:9;1572:17;1563:6;1525:65;:::i;:::-;1387:210;;;;:::o;1603:149::-;1639:7;1679:66;1672:5;1668:78;1657:89;;1603:149;;;:::o;1758:120::-;1830:23;1847:5;1830:23;:::i;:::-;1823:5;1820:34;1810:62;;1868:1;1865;1858:12;1810:62;1758:120;:::o;1884:137::-;1929:5;1967:6;1954:20;1945:29;;1983:32;2009:5;1983:32;:::i;:::-;1884:137;;;;:::o;2027:327::-;2085:6;2134:2;2122:9;2113:7;2109:23;2105:32;2102:119;;;2140:79;;:::i;:::-;2102:119;2260:1;2285:52;2329:7;2320:6;2309:9;2305:22;2285:52;:::i;:::-;2275:62;;2231:116;2027:327;;;;:::o;2360:99::-;2412:6;2446:5;2440:12;2430:22;;2360:99;;;:::o;2465:169::-;2549:11;2583:6;2578:3;2571:19;2623:4;2618:3;2614:14;2599:29;;2465:169;;;;:::o;2640:307::-;2708:1;2718:113;2732:6;2729:1;2726:13;2718:113;;;2817:1;2812:3;2808:11;2802:18;2798:1;2793:3;2789:11;2782:39;2754:2;2751:1;2747:10;2742:15;;2718:113;;;2849:6;2846:1;2843:13;2840:101;;;2929:1;2920:6;2915:3;2911:16;2904:27;2840:101;2689:258;2640:307;;;:::o;2953:102::-;2994:6;3045:2;3041:7;3036:2;3029:5;3025:14;3021:28;3011:38;;2953:102;;;:::o;3061:364::-;3149:3;3177:39;3210:5;3177:39;:::i;:::-;3232:71;3296:6;3291:3;3232:71;:::i;:::-;3225:78;;3312:52;3357:6;3352:3;3345:4;3338:5;3334:16;3312:52;:::i;:::-;3389:29;3411:6;3389:29;:::i;:::-;3384:3;3380:39;3373:46;;3153:272;3061:364;;;;:::o;3431:313::-;3544:4;3582:2;3571:9;3567:18;3559:26;;3631:9;3625:4;3621:20;3617:1;3606:9;3602:17;3595:47;3659:78;3732:4;3723:6;3659:78;:::i;:::-;3651:86;;3431:313;;;;:::o;3750:77::-;3787:7;3816:5;3805:16;;3750:77;;;:::o;3833:122::-;3906:24;3924:5;3906:24;:::i;:::-;3899:5;3896:35;3886:63;;3945:1;3942;3935:12;3886:63;3833:122;:::o;3961:139::-;4007:5;4045:6;4032:20;4023:29;;4061:33;4088:5;4061:33;:::i;:::-;3961:139;;;;:::o;4106:329::-;4165:6;4214:2;4202:9;4193:7;4189:23;4185:32;4182:119;;;4220:79;;:::i;:::-;4182:119;4340:1;4365:53;4410:7;4401:6;4390:9;4386:22;4365:53;:::i;:::-;4355:63;;4311:117;4106:329;;;;:::o;4441:118::-;4528:24;4546:5;4528:24;:::i;:::-;4523:3;4516:37;4441:118;;:::o;4565:222::-;4658:4;4696:2;4685:9;4681:18;4673:26;;4709:71;4777:1;4766:9;4762:17;4753:6;4709:71;:::i;:::-;4565:222;;;;:::o;4793:474::-;4861:6;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;4793:474;;;;;:::o;5273:118::-;5360:24;5378:5;5360:24;:::i;:::-;5355:3;5348:37;5273:118;;:::o;5397:222::-;5490:4;5528:2;5517:9;5513:18;5505:26;;5541:71;5609:1;5598:9;5594:17;5585:6;5541:71;:::i;:::-;5397:222;;;;:::o;5625:619::-;5702:6;5710;5718;5767:2;5755:9;5746:7;5742:23;5738:32;5735:119;;;5773:79;;:::i;:::-;5735:119;5893:1;5918:53;5963:7;5954:6;5943:9;5939:22;5918:53;:::i;:::-;5908:63;;5864:117;6020:2;6046:53;6091:7;6082:6;6071:9;6067:22;6046:53;:::i;:::-;6036:63;;5991:118;6148:2;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6119:118;5625:619;;;;;:::o;6250:117::-;6359:1;6356;6349:12;6373:180;6421:77;6418:1;6411:88;6518:4;6515:1;6508:15;6542:4;6539:1;6532:15;6559:281;6642:27;6664:4;6642:27;:::i;:::-;6634:6;6630:40;6772:6;6760:10;6757:22;6736:18;6724:10;6721:34;6718:62;6715:88;;;6783:18;;:::i;:::-;6715:88;6823:10;6819:2;6812:22;6602:238;6559:281;;:::o;6846:129::-;6880:6;6907:20;;:::i;:::-;6897:30;;6936:33;6964:4;6956:6;6936:33;:::i;:::-;6846:129;;;:::o;6981:311::-;7058:4;7148:18;7140:6;7137:30;7134:56;;;7170:18;;:::i;:::-;7134:56;7220:4;7212:6;7208:17;7200:25;;7280:4;7274;7270:15;7262:23;;6981:311;;;:::o;7298:117::-;7407:1;7404;7397:12;7438:710;7534:5;7559:81;7575:64;7632:6;7575:64;:::i;:::-;7559:81;:::i;:::-;7550:90;;7660:5;7689:6;7682:5;7675:21;7723:4;7716:5;7712:16;7705:23;;7776:4;7768:6;7764:17;7756:6;7752:30;7805:3;7797:6;7794:15;7791:122;;;7824:79;;:::i;:::-;7791:122;7939:6;7922:220;7956:6;7951:3;7948:15;7922:220;;;8031:3;8060:37;8093:3;8081:10;8060:37;:::i;:::-;8055:3;8048:50;8127:4;8122:3;8118:14;8111:21;;7998:144;7982:4;7977:3;7973:14;7966:21;;7922:220;;;7926:21;7540:608;;7438:710;;;;;:::o;8171:370::-;8242:5;8291:3;8284:4;8276:6;8272:17;8268:27;8258:122;;8299:79;;:::i;:::-;8258:122;8416:6;8403:20;8441:94;8531:3;8523:6;8516:4;8508:6;8504:17;8441:94;:::i;:::-;8432:103;;8248:293;8171:370;;;;:::o;8547:539::-;8631:6;8680:2;8668:9;8659:7;8655:23;8651:32;8648:119;;;8686:79;;:::i;:::-;8648:119;8834:1;8823:9;8819:17;8806:31;8864:18;8856:6;8853:30;8850:117;;;8886:79;;:::i;:::-;8850:117;8991:78;9061:7;9052:6;9041:9;9037:22;8991:78;:::i;:::-;8981:88;;8777:302;8547:539;;;;:::o;9092:117::-;9201:1;9198;9191:12;9215:308;9277:4;9367:18;9359:6;9356:30;9353:56;;;9389:18;;:::i;:::-;9353:56;9427:29;9449:6;9427:29;:::i;:::-;9419:37;;9511:4;9505;9501:15;9493:23;;9215:308;;;:::o;9529:154::-;9613:6;9608:3;9603;9590:30;9675:1;9666:6;9661:3;9657:16;9650:27;9529:154;;;:::o;9689:412::-;9767:5;9792:66;9808:49;9850:6;9808:49;:::i;:::-;9792:66;:::i;:::-;9783:75;;9881:6;9874:5;9867:21;9919:4;9912:5;9908:16;9957:3;9948:6;9943:3;9939:16;9936:25;9933:112;;;9964:79;;:::i;:::-;9933:112;10054:41;10088:6;10083:3;10078;10054:41;:::i;:::-;9773:328;9689:412;;;;;:::o;10121:340::-;10177:5;10226:3;10219:4;10211:6;10207:17;10203:27;10193:122;;10234:79;;:::i;:::-;10193:122;10351:6;10338:20;10376:79;10451:3;10443:6;10436:4;10428:6;10424:17;10376:79;:::i;:::-;10367:88;;10183:278;10121:340;;;;:::o;10467:509::-;10536:6;10585:2;10573:9;10564:7;10560:23;10556:32;10553:119;;;10591:79;;:::i;:::-;10553:119;10739:1;10728:9;10724:17;10711:31;10769:18;10761:6;10758:30;10755:117;;;10791:79;;:::i;:::-;10755:117;10896:63;10951:7;10942:6;10931:9;10927:22;10896:63;:::i;:::-;10886:73;;10682:287;10467:509;;;;:::o;10982:116::-;11052:21;11067:5;11052:21;:::i;:::-;11045:5;11042:32;11032:60;;11088:1;11085;11078:12;11032:60;10982:116;:::o;11104:133::-;11147:5;11185:6;11172:20;11163:29;;11201:30;11225:5;11201:30;:::i;:::-;11104:133;;;;:::o;11243:468::-;11308:6;11316;11365:2;11353:9;11344:7;11340:23;11336:32;11333:119;;;11371:79;;:::i;:::-;11333:119;11491:1;11516:53;11561:7;11552:6;11541:9;11537:22;11516:53;:::i;:::-;11506:63;;11462:117;11618:2;11644:50;11686:7;11677:6;11666:9;11662:22;11644:50;:::i;:::-;11634:60;;11589:115;11243:468;;;;;:::o;11717:307::-;11778:4;11868:18;11860:6;11857:30;11854:56;;;11890:18;;:::i;:::-;11854:56;11928:29;11950:6;11928:29;:::i;:::-;11920:37;;12012:4;12006;12002:15;11994:23;;11717:307;;;:::o;12030:410::-;12107:5;12132:65;12148:48;12189:6;12148:48;:::i;:::-;12132:65;:::i;:::-;12123:74;;12220:6;12213:5;12206:21;12258:4;12251:5;12247:16;12296:3;12287:6;12282:3;12278:16;12275:25;12272:112;;;12303:79;;:::i;:::-;12272:112;12393:41;12427:6;12422:3;12417;12393:41;:::i;:::-;12113:327;12030:410;;;;;:::o;12459:338::-;12514:5;12563:3;12556:4;12548:6;12544:17;12540:27;12530:122;;12571:79;;:::i;:::-;12530:122;12688:6;12675:20;12713:78;12787:3;12779:6;12772:4;12764:6;12760:17;12713:78;:::i;:::-;12704:87;;12520:277;12459:338;;;;:::o;12803:943::-;12898:6;12906;12914;12922;12971:3;12959:9;12950:7;12946:23;12942:33;12939:120;;;12978:79;;:::i;:::-;12939:120;13098:1;13123:53;13168:7;13159:6;13148:9;13144:22;13123:53;:::i;:::-;13113:63;;13069:117;13225:2;13251:53;13296:7;13287:6;13276:9;13272:22;13251:53;:::i;:::-;13241:63;;13196:118;13353:2;13379:53;13424:7;13415:6;13404:9;13400:22;13379:53;:::i;:::-;13369:63;;13324:118;13509:2;13498:9;13494:18;13481:32;13540:18;13532:6;13529:30;13526:117;;;13562:79;;:::i;:::-;13526:117;13667:62;13721:7;13712:6;13701:9;13697:22;13667:62;:::i;:::-;13657:72;;13452:287;12803:943;;;;;;;:::o;13752:474::-;13820:6;13828;13877:2;13865:9;13856:7;13852:23;13848:32;13845:119;;;13883:79;;:::i;:::-;13845:119;14003:1;14028:53;14073:7;14064:6;14053:9;14049:22;14028:53;:::i;:::-;14018:63;;13974:117;14130:2;14156:53;14201:7;14192:6;14181:9;14177:22;14156:53;:::i;:::-;14146:63;;14101:118;13752:474;;;;;:::o;14232:143::-;14289:5;14320:6;14314:13;14305:22;;14336:33;14363:5;14336:33;:::i;:::-;14232:143;;;;:::o;14381:351::-;14451:6;14500:2;14488:9;14479:7;14475:23;14471:32;14468:119;;;14506:79;;:::i;:::-;14468:119;14626:1;14651:64;14707:7;14698:6;14687:9;14683:22;14651:64;:::i;:::-;14641:74;;14597:128;14381:351;;;;:::o;14738:180::-;14786:77;14783:1;14776:88;14883:4;14880:1;14873:15;14907:4;14904:1;14897:15;14924:320;14968:6;15005:1;14999:4;14995:12;14985:22;;15052:1;15046:4;15042:12;15073:18;15063:81;;15129:4;15121:6;15117:17;15107:27;;15063:81;15191:2;15183:6;15180:14;15160:18;15157:38;15154:84;;15210:18;;:::i;:::-;15154:84;14975:269;14924:320;;;:::o;15250:231::-;15390:34;15386:1;15378:6;15374:14;15367:58;15459:14;15454:2;15446:6;15442:15;15435:39;15250:231;:::o;15487:366::-;15629:3;15650:67;15714:2;15709:3;15650:67;:::i;:::-;15643:74;;15726:93;15815:3;15726:93;:::i;:::-;15844:2;15839:3;15835:12;15828:19;;15487:366;;;:::o;15859:419::-;16025:4;16063:2;16052:9;16048:18;16040:26;;16112:9;16106:4;16102:20;16098:1;16087:9;16083:17;16076:47;16140:131;16266:4;16140:131;:::i;:::-;16132:139;;15859:419;;;:::o;16284:182::-;16424:34;16420:1;16412:6;16408:14;16401:58;16284:182;:::o;16472:366::-;16614:3;16635:67;16699:2;16694:3;16635:67;:::i;:::-;16628:74;;16711:93;16800:3;16711:93;:::i;:::-;16829:2;16824:3;16820:12;16813:19;;16472:366;;;:::o;16844:419::-;17010:4;17048:2;17037:9;17033:18;17025:26;;17097:9;17091:4;17087:20;17083:1;17072:9;17068:17;17061:47;17125:131;17251:4;17125:131;:::i;:::-;17117:139;;16844:419;;;:::o;17269:220::-;17409:34;17405:1;17397:6;17393:14;17386:58;17478:3;17473:2;17465:6;17461:15;17454:28;17269:220;:::o;17495:366::-;17637:3;17658:67;17722:2;17717:3;17658:67;:::i;:::-;17651:74;;17734:93;17823:3;17734:93;:::i;:::-;17852:2;17847:3;17843:12;17836:19;;17495:366;;;:::o;17867:419::-;18033:4;18071:2;18060:9;18056:18;18048:26;;18120:9;18114:4;18110:20;18106:1;18095:9;18091:17;18084:47;18148:131;18274:4;18148:131;:::i;:::-;18140:139;;17867:419;;;:::o;18292:243::-;18432:34;18428:1;18420:6;18416:14;18409:58;18501:26;18496:2;18488:6;18484:15;18477:51;18292:243;:::o;18541:366::-;18683:3;18704:67;18768:2;18763:3;18704:67;:::i;:::-;18697:74;;18780:93;18869:3;18780:93;:::i;:::-;18898:2;18893:3;18889:12;18882:19;;18541:366;;;:::o;18913:419::-;19079:4;19117:2;19106:9;19102:18;19094:26;;19166:9;19160:4;19156:20;19152:1;19141:9;19137:17;19130:47;19194:131;19320:4;19194:131;:::i;:::-;19186:139;;18913:419;;;:::o;19338:180::-;19478:32;19474:1;19466:6;19462:14;19455:56;19338:180;:::o;19524:366::-;19666:3;19687:67;19751:2;19746:3;19687:67;:::i;:::-;19680:74;;19763:93;19852:3;19763:93;:::i;:::-;19881:2;19876:3;19872:12;19865:19;;19524:366;;;:::o;19896:419::-;20062:4;20100:2;20089:9;20085:18;20077:26;;20149:9;20143:4;20139:20;20135:1;20124:9;20120:17;20113:47;20177:131;20303:4;20177:131;:::i;:::-;20169:139;;19896:419;;;:::o;20321:221::-;20461:34;20457:1;20449:6;20445:14;20438:58;20530:4;20525:2;20517:6;20513:15;20506:29;20321:221;:::o;20548:366::-;20690:3;20711:67;20775:2;20770:3;20711:67;:::i;:::-;20704:74;;20787:93;20876:3;20787:93;:::i;:::-;20905:2;20900:3;20896:12;20889:19;;20548:366;;;:::o;20920:419::-;21086:4;21124:2;21113:9;21109:18;21101:26;;21173:9;21167:4;21163:20;21159:1;21148:9;21144:17;21137:47;21201:131;21327:4;21201:131;:::i;:::-;21193:139;;20920:419;;;:::o;21345:180::-;21393:77;21390:1;21383:88;21490:4;21487:1;21480:15;21514:4;21511:1;21504:15;21531:305;21571:3;21590:20;21608:1;21590:20;:::i;:::-;21585:25;;21624:20;21642:1;21624:20;:::i;:::-;21619:25;;21778:1;21710:66;21706:74;21703:1;21700:81;21697:107;;;21784:18;;:::i;:::-;21697:107;21828:1;21825;21821:9;21814:16;;21531:305;;;;:::o;21842:191::-;21882:4;21902:20;21920:1;21902:20;:::i;:::-;21897:25;;21936:20;21954:1;21936:20;:::i;:::-;21931:25;;21975:1;21972;21969:8;21966:34;;;21980:18;;:::i;:::-;21966:34;22025:1;22022;22018:9;22010:17;;21842:191;;;;:::o;22039:233::-;22078:3;22101:24;22119:5;22101:24;:::i;:::-;22092:33;;22147:66;22140:5;22137:77;22134:103;;22217:18;;:::i;:::-;22134:103;22264:1;22257:5;22253:13;22246:20;;22039:233;;;:::o;22278:236::-;22418:34;22414:1;22406:6;22402:14;22395:58;22487:19;22482:2;22474:6;22470:15;22463:44;22278:236;:::o;22520:366::-;22662:3;22683:67;22747:2;22742:3;22683:67;:::i;:::-;22676:74;;22759:93;22848:3;22759:93;:::i;:::-;22877:2;22872:3;22868:12;22861:19;;22520:366;;;:::o;22892:419::-;23058:4;23096:2;23085:9;23081:18;23073:26;;23145:9;23139:4;23135:20;23131:1;23120:9;23116:17;23109:47;23173:131;23299:4;23173:131;:::i;:::-;23165:139;;22892:419;;;:::o;23317:230::-;23457:34;23453:1;23445:6;23441:14;23434:58;23526:13;23521:2;23513:6;23509:15;23502:38;23317:230;:::o;23553:366::-;23695:3;23716:67;23780:2;23775:3;23716:67;:::i;:::-;23709:74;;23792:93;23881:3;23792:93;:::i;:::-;23910:2;23905:3;23901:12;23894:19;;23553:366;;;:::o;23925:419::-;24091:4;24129:2;24118:9;24114:18;24106:26;;24178:9;24172:4;24168:20;24164:1;24153:9;24149:17;24142:47;24206:131;24332:4;24206:131;:::i;:::-;24198:139;;23925:419;;;:::o;24350:180::-;24398:77;24395:1;24388:88;24495:4;24492:1;24485:15;24519:4;24516:1;24509:15;24536:348;24576:7;24599:20;24617:1;24599:20;:::i;:::-;24594:25;;24633:20;24651:1;24633:20;:::i;:::-;24628:25;;24821:1;24753:66;24749:74;24746:1;24743:81;24738:1;24731:9;24724:17;24720:105;24717:131;;;24828:18;;:::i;:::-;24717:131;24876:1;24873;24869:9;24858:20;;24536:348;;;;:::o;24890:180::-;24938:77;24935:1;24928:88;25035:4;25032:1;25025:15;25059:4;25056:1;25049:15;25076:185;25116:1;25133:20;25151:1;25133:20;:::i;:::-;25128:25;;25167:20;25185:1;25167:20;:::i;:::-;25162:25;;25206:1;25196:35;;25211:18;;:::i;:::-;25196:35;25253:1;25250;25246:9;25241:14;;25076:185;;;;:::o;25267:147::-;25368:11;25405:3;25390:18;;25267:147;;;;:::o;25420:114::-;;:::o;25540:398::-;25699:3;25720:83;25801:1;25796:3;25720:83;:::i;:::-;25713:90;;25812:93;25901:3;25812:93;:::i;:::-;25930:1;25925:3;25921:11;25914:18;;25540:398;;;:::o;25944:379::-;26128:3;26150:147;26293:3;26150:147;:::i;:::-;26143:154;;26314:3;26307:10;;25944:379;;;:::o;26329:231::-;26469:34;26465:1;26457:6;26453:14;26446:58;26538:14;26533:2;26525:6;26521:15;26514:39;26329:231;:::o;26566:366::-;26708:3;26729:67;26793:2;26788:3;26729:67;:::i;:::-;26722:74;;26805:93;26894:3;26805:93;:::i;:::-;26923:2;26918:3;26914:12;26907:19;;26566:366;;;:::o;26938:419::-;27104:4;27142:2;27131:9;27127:18;27119:26;;27191:9;27185:4;27181:20;27177:1;27166:9;27162:17;27155:47;27219:131;27345:4;27219:131;:::i;:::-;27211:139;;26938:419;;;:::o;27363:228::-;27503:34;27499:1;27491:6;27487:14;27480:58;27572:11;27567:2;27559:6;27555:15;27548:36;27363:228;:::o;27597:366::-;27739:3;27760:67;27824:2;27819:3;27760:67;:::i;:::-;27753:74;;27836:93;27925:3;27836:93;:::i;:::-;27954:2;27949:3;27945:12;27938:19;;27597:366;;;:::o;27969:419::-;28135:4;28173:2;28162:9;28158:18;28150:26;;28222:9;28216:4;28212:20;28208:1;28197:9;28193:17;28186:47;28250:131;28376:4;28250:131;:::i;:::-;28242:139;;27969:419;;;:::o;28394:229::-;28534:34;28530:1;28522:6;28518:14;28511:58;28603:12;28598:2;28590:6;28586:15;28579:37;28394:229;:::o;28629:366::-;28771:3;28792:67;28856:2;28851:3;28792:67;:::i;:::-;28785:74;;28868:93;28957:3;28868:93;:::i;:::-;28986:2;28981:3;28977:12;28970:19;;28629:366;;;:::o;29001:419::-;29167:4;29205:2;29194:9;29190:18;29182:26;;29254:9;29248:4;29244:20;29240:1;29229:9;29225:17;29218:47;29282:131;29408:4;29282:131;:::i;:::-;29274:139;;29001:419;;;:::o;29426:181::-;29566:33;29562:1;29554:6;29550:14;29543:57;29426:181;:::o;29613:366::-;29755:3;29776:67;29840:2;29835:3;29776:67;:::i;:::-;29769:74;;29852:93;29941:3;29852:93;:::i;:::-;29970:2;29965:3;29961:12;29954:19;;29613:366;;;:::o;29985:419::-;30151:4;30189:2;30178:9;30174:18;30166:26;;30238:9;30232:4;30228:20;30224:1;30213:9;30209:17;30202:47;30266:131;30392:4;30266:131;:::i;:::-;30258:139;;29985:419;;;:::o;30410:235::-;30550:34;30546:1;30538:6;30534:14;30527:58;30619:18;30614:2;30606:6;30602:15;30595:43;30410:235;:::o;30651:366::-;30793:3;30814:67;30878:2;30873:3;30814:67;:::i;:::-;30807:74;;30890:93;30979:3;30890:93;:::i;:::-;31008:2;31003:3;30999:12;30992:19;;30651:366;;;:::o;31023:419::-;31189:4;31227:2;31216:9;31212:18;31204:26;;31276:9;31270:4;31266:20;31262:1;31251:9;31247:17;31240:47;31304:131;31430:4;31304:131;:::i;:::-;31296:139;;31023:419;;;:::o;31448:170::-;31588:22;31584:1;31576:6;31572:14;31565:46;31448:170;:::o;31624:366::-;31766:3;31787:67;31851:2;31846:3;31787:67;:::i;:::-;31780:74;;31863:93;31952:3;31863:93;:::i;:::-;31981:2;31976:3;31972:12;31965:19;;31624:366;;;:::o;31996:419::-;32162:4;32200:2;32189:9;32185:18;32177:26;;32249:9;32243:4;32239:20;32235:1;32224:9;32220:17;32213:47;32277:131;32403:4;32277:131;:::i;:::-;32269:139;;31996:419;;;:::o;32421:180::-;32561:32;32557:1;32549:6;32545:14;32538:56;32421:180;:::o;32607:366::-;32749:3;32770:67;32834:2;32829:3;32770:67;:::i;:::-;32763:74;;32846:93;32935:3;32846:93;:::i;:::-;32964:2;32959:3;32955:12;32948:19;;32607:366;;;:::o;32979:419::-;33145:4;33183:2;33172:9;33168:18;33160:26;;33232:9;33226:4;33222:20;33218:1;33207:9;33203:17;33196:47;33260:131;33386:4;33260:131;:::i;:::-;33252:139;;32979:419;;;:::o;33404:234::-;33544:34;33540:1;33532:6;33528:14;33521:58;33613:17;33608:2;33600:6;33596:15;33589:42;33404:234;:::o;33644:366::-;33786:3;33807:67;33871:2;33866:3;33807:67;:::i;:::-;33800:74;;33883:93;33972:3;33883:93;:::i;:::-;34001:2;33996:3;33992:12;33985:19;;33644:366;;;:::o;34016:419::-;34182:4;34220:2;34209:9;34205:18;34197:26;;34269:9;34263:4;34259:20;34255:1;34244:9;34240:17;34233:47;34297:131;34423:4;34297:131;:::i;:::-;34289:139;;34016:419;;;:::o;34441:148::-;34543:11;34580:3;34565:18;;34441:148;;;;:::o;34595:377::-;34701:3;34729:39;34762:5;34729:39;:::i;:::-;34784:89;34866:6;34861:3;34784:89;:::i;:::-;34777:96;;34882:52;34927:6;34922:3;34915:4;34908:5;34904:16;34882:52;:::i;:::-;34959:6;34954:3;34950:16;34943:23;;34705:267;34595:377;;;;:::o;34978:141::-;35027:4;35050:3;35042:11;;35073:3;35070:1;35063:14;35107:4;35104:1;35094:18;35086:26;;34978:141;;;:::o;35149:845::-;35252:3;35289:5;35283:12;35318:36;35344:9;35318:36;:::i;:::-;35370:89;35452:6;35447:3;35370:89;:::i;:::-;35363:96;;35490:1;35479:9;35475:17;35506:1;35501:137;;;;35652:1;35647:341;;;;35468:520;;35501:137;35585:4;35581:9;35570;35566:25;35561:3;35554:38;35621:6;35616:3;35612:16;35605:23;;35501:137;;35647:341;35714:38;35746:5;35714:38;:::i;:::-;35774:1;35788:154;35802:6;35799:1;35796:13;35788:154;;;35876:7;35870:14;35866:1;35861:3;35857:11;35850:35;35926:1;35917:7;35913:15;35902:26;;35824:4;35821:1;35817:12;35812:17;;35788:154;;;35971:6;35966:3;35962:16;35955:23;;35654:334;;35468:520;;35256:738;;35149:845;;;;:::o;36000:589::-;36225:3;36247:95;36338:3;36329:6;36247:95;:::i;:::-;36240:102;;36359:95;36450:3;36441:6;36359:95;:::i;:::-;36352:102;;36471:92;36559:3;36550:6;36471:92;:::i;:::-;36464:99;;36580:3;36573:10;;36000:589;;;;;;:::o;36595:225::-;36735:34;36731:1;36723:6;36719:14;36712:58;36804:8;36799:2;36791:6;36787:15;36780:33;36595:225;:::o;36826:366::-;36968:3;36989:67;37053:2;37048:3;36989:67;:::i;:::-;36982:74;;37065:93;37154:3;37065:93;:::i;:::-;37183:2;37178:3;37174:12;37167:19;;36826:366;;;:::o;37198:419::-;37364:4;37402:2;37391:9;37387:18;37379:26;;37451:9;37445:4;37441:20;37437:1;37426:9;37422:17;37415:47;37479:131;37605:4;37479:131;:::i;:::-;37471:139;;37198:419;;;:::o;37623:231::-;37763:34;37759:1;37751:6;37747:14;37740:58;37832:14;37827:2;37819:6;37815:15;37808:39;37623:231;:::o;37860:366::-;38002:3;38023:67;38087:2;38082:3;38023:67;:::i;:::-;38016:74;;38099:93;38188:3;38099:93;:::i;:::-;38217:2;38212:3;38208:12;38201:19;;37860:366;;;:::o;38232:419::-;38398:4;38436:2;38425:9;38421:18;38413:26;;38485:9;38479:4;38475:20;38471:1;38460:9;38456:17;38449:47;38513:131;38639:4;38513:131;:::i;:::-;38505:139;;38232:419;;;:::o;38657:224::-;38797:34;38793:1;38785:6;38781:14;38774:58;38866:7;38861:2;38853:6;38849:15;38842:32;38657:224;:::o;38887:366::-;39029:3;39050:67;39114:2;39109:3;39050:67;:::i;:::-;39043:74;;39126:93;39215:3;39126:93;:::i;:::-;39244:2;39239:3;39235:12;39228:19;;38887:366;;;:::o;39259:419::-;39425:4;39463:2;39452:9;39448:18;39440:26;;39512:9;39506:4;39502:20;39498:1;39487:9;39483:17;39476:47;39540:131;39666:4;39540:131;:::i;:::-;39532:139;;39259:419;;;:::o;39684:223::-;39824:34;39820:1;39812:6;39808:14;39801:58;39893:6;39888:2;39880:6;39876:15;39869:31;39684:223;:::o;39913:366::-;40055:3;40076:67;40140:2;40135:3;40076:67;:::i;:::-;40069:74;;40152:93;40241:3;40152:93;:::i;:::-;40270:2;40265:3;40261:12;40254:19;;39913:366;;;:::o;40285:419::-;40451:4;40489:2;40478:9;40474:18;40466:26;;40538:9;40532:4;40528:20;40524:1;40513:9;40509:17;40502:47;40566:131;40692:4;40566:131;:::i;:::-;40558:139;;40285:419;;;:::o;40710:175::-;40850:27;40846:1;40838:6;40834:14;40827:51;40710:175;:::o;40891:366::-;41033:3;41054:67;41118:2;41113:3;41054:67;:::i;:::-;41047:74;;41130:93;41219:3;41130:93;:::i;:::-;41248:2;41243:3;41239:12;41232:19;;40891:366;;;:::o;41263:419::-;41429:4;41467:2;41456:9;41452:18;41444:26;;41516:9;41510:4;41506:20;41502:1;41491:9;41487:17;41480:47;41544:131;41670:4;41544:131;:::i;:::-;41536:139;;41263:419;;;:::o;41688:237::-;41828:34;41824:1;41816:6;41812:14;41805:58;41897:20;41892:2;41884:6;41880:15;41873:45;41688:237;:::o;41931:366::-;42073:3;42094:67;42158:2;42153:3;42094:67;:::i;:::-;42087:74;;42170:93;42259:3;42170:93;:::i;:::-;42288:2;42283:3;42279:12;42272:19;;41931:366;;;:::o;42303:419::-;42469:4;42507:2;42496:9;42492:18;42484:26;;42556:9;42550:4;42546:20;42542:1;42531:9;42527:17;42520:47;42584:131;42710:4;42584:131;:::i;:::-;42576:139;;42303:419;;;:::o;42728:176::-;42760:1;42777:20;42795:1;42777:20;:::i;:::-;42772:25;;42811:20;42829:1;42811:20;:::i;:::-;42806:25;;42850:1;42840:35;;42855:18;;:::i;:::-;42840:35;42896:1;42893;42889:9;42884:14;;42728:176;;;;:::o;42910:98::-;42961:6;42995:5;42989:12;42979:22;;42910:98;;;:::o;43014:168::-;43097:11;43131:6;43126:3;43119:19;43171:4;43166:3;43162:14;43147:29;;43014:168;;;;:::o;43188:360::-;43274:3;43302:38;43334:5;43302:38;:::i;:::-;43356:70;43419:6;43414:3;43356:70;:::i;:::-;43349:77;;43435:52;43480:6;43475:3;43468:4;43461:5;43457:16;43435:52;:::i;:::-;43512:29;43534:6;43512:29;:::i;:::-;43507:3;43503:39;43496:46;;43278:270;43188:360;;;;:::o;43554:640::-;43749:4;43787:3;43776:9;43772:19;43764:27;;43801:71;43869:1;43858:9;43854:17;43845:6;43801:71;:::i;:::-;43882:72;43950:2;43939:9;43935:18;43926:6;43882:72;:::i;:::-;43964;44032:2;44021:9;44017:18;44008:6;43964:72;:::i;:::-;44083:9;44077:4;44073:20;44068:2;44057:9;44053:18;44046:48;44111:76;44182:4;44173:6;44111:76;:::i;:::-;44103:84;;43554:640;;;;;;;:::o;44200:141::-;44256:5;44287:6;44281:13;44272:22;;44303:32;44329:5;44303:32;:::i;:::-;44200:141;;;;:::o;44347:349::-;44416:6;44465:2;44453:9;44444:7;44440:23;44436:32;44433:119;;;44471:79;;:::i;:::-;44433:119;44591:1;44616:63;44671:7;44662:6;44651:9;44647:22;44616:63;:::i;:::-;44606:73;;44562:127;44347:349;;;;:::o;44702:182::-;44842:34;44838:1;44830:6;44826:14;44819:58;44702:182;:::o;44890:366::-;45032:3;45053:67;45117:2;45112:3;45053:67;:::i;:::-;45046:74;;45129:93;45218:3;45129:93;:::i;:::-;45247:2;45242:3;45238:12;45231:19;;44890:366;;;:::o;45262:419::-;45428:4;45466:2;45455:9;45451:18;45443:26;;45515:9;45509:4;45505:20;45501:1;45490:9;45486:17;45479:47;45543:131;45669:4;45543:131;:::i;:::-;45535:139;;45262:419;;;:::o;45687:178::-;45827:30;45823:1;45815:6;45811:14;45804:54;45687:178;:::o;45871:366::-;46013:3;46034:67;46098:2;46093:3;46034:67;:::i;:::-;46027:74;;46110:93;46199:3;46110:93;:::i;:::-;46228:2;46223:3;46219:12;46212:19;;45871:366;;;:::o;46243:419::-;46409:4;46447:2;46436:9;46432:18;46424:26;;46496:9;46490:4;46486:20;46482:1;46471:9;46467:17;46460:47;46524:131;46650:4;46524:131;:::i;:::-;46516:139;;46243:419;;;:::o;46668:180::-;46716:77;46713:1;46706:88;46813:4;46810:1;46803:15;46837:4;46834:1;46827:15
Swarm Source
ipfs://f4fd2eade25cb58ff48ac7df4005089a5995c74cd8044a6019052168c31df0d4
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.