Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 45 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint | 14126713 | 1029 days ago | IN | 0.05 ETH | 0.0105148 | ||||
Mint | 14123609 | 1029 days ago | IN | 0.05 ETH | 0.02741904 | ||||
Mint | 14123607 | 1029 days ago | IN | 0.05 ETH | 0.02281213 | ||||
Mint | 14123600 | 1029 days ago | IN | 0.05 ETH | 0.02779351 | ||||
Mint | 14121589 | 1029 days ago | IN | 0.05 ETH | 0.01292579 | ||||
Mint | 14121057 | 1030 days ago | IN | 0.05 ETH | 0.03177063 | ||||
Mint | 14121029 | 1030 days ago | IN | 0.05 ETH | 0.02080054 | ||||
Mint | 14121025 | 1030 days ago | IN | 0.05 ETH | 0.02169395 | ||||
Mint | 14121021 | 1030 days ago | IN | 0.05 ETH | 0.02152225 | ||||
Mint | 14120976 | 1030 days ago | IN | 0.05 ETH | 0.0147235 | ||||
Mint | 14120973 | 1030 days ago | IN | 0.05 ETH | 0.02215922 | ||||
Mint | 14120960 | 1030 days ago | IN | 0.05 ETH | 0.01168054 | ||||
Mint | 14120958 | 1030 days ago | IN | 0.05 ETH | 0.02326209 | ||||
Mint | 14120949 | 1030 days ago | IN | 0.05 ETH | 0.01297954 | ||||
Mint | 14120944 | 1030 days ago | IN | 0.05 ETH | 0.01581589 | ||||
Mint | 14120929 | 1030 days ago | IN | 0.05 ETH | 0.01673689 | ||||
Mint | 14120922 | 1030 days ago | IN | 0.05 ETH | 0.01533902 | ||||
Mint | 14120913 | 1030 days ago | IN | 0.05 ETH | 0.01287022 | ||||
Mint | 14120909 | 1030 days ago | IN | 0.05 ETH | 0.01382045 | ||||
Mint | 14120907 | 1030 days ago | IN | 0.05 ETH | 0.02823655 | ||||
Mint | 14120904 | 1030 days ago | IN | 0.05 ETH | 0.01449508 | ||||
Mint | 14120900 | 1030 days ago | IN | 0.05 ETH | 0.0168362 | ||||
Mint | 14120898 | 1030 days ago | IN | 0.05 ETH | 0.014987 | ||||
Mint | 14120897 | 1030 days ago | IN | 0.05 ETH | 0.01335146 | ||||
Mint | 14120891 | 1030 days ago | IN | 0.05 ETH | 0.0321414 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
14126713 | 1029 days ago | 0.0275 ETH | ||||
14126713 | 1029 days ago | 0.0125 ETH | ||||
14126713 | 1029 days ago | 0.01 ETH | ||||
14123609 | 1029 days ago | 0.0275 ETH | ||||
14123609 | 1029 days ago | 0.0125 ETH | ||||
14123609 | 1029 days ago | 0.01 ETH | ||||
14123607 | 1029 days ago | 0.0275 ETH | ||||
14123607 | 1029 days ago | 0.0125 ETH | ||||
14123607 | 1029 days ago | 0.01 ETH | ||||
14123600 | 1029 days ago | 0.0275 ETH | ||||
14123600 | 1029 days ago | 0.0125 ETH | ||||
14123600 | 1029 days ago | 0.01 ETH | ||||
14121057 | 1030 days ago | 0.0275 ETH | ||||
14121057 | 1030 days ago | 0.0125 ETH | ||||
14121057 | 1030 days ago | 0.01 ETH | ||||
14121029 | 1030 days ago | 0.0275 ETH | ||||
14121029 | 1030 days ago | 0.0125 ETH | ||||
14121029 | 1030 days ago | 0.01 ETH | ||||
14121025 | 1030 days ago | 0.01 ETH | ||||
14121021 | 1030 days ago | 0.0125 ETH | ||||
14121021 | 1030 days ago | 0.01 ETH | ||||
14120973 | 1030 days ago | 0.01 ETH | ||||
14120958 | 1030 days ago | 0.0275 ETH | ||||
14120958 | 1030 days ago | 0.0125 ETH | ||||
14120958 | 1030 days ago | 0.01 ETH |
Loading...
Loading
Contract Name:
SOTD
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-30 */ // 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 v4.4.1 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/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 v4.4.1 (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 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File: @openzeppelin/contracts/token/ERC721/extensions/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 v4.4.1 (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); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev 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 {} } // 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: societyofthedoges.sol pragma solidity >=0.7.0 <0.9.0; contract SOTD is ERC721Enumerable, Ownable { using Strings for uint256; string public baseURI; string public baseExtension = ".json"; string public notRevealedUri; uint256 public cost = 0.05 ether; uint256 public maxSupply = 6000; uint256 public maxMintAmount = 1; uint256 public nftPerAddressLimit = 5; bool public paused = false; bool public revealed = false; bool public onlyWhitelisted = true; address[] public whitelistedAddresses; mapping(address => uint256) public addressMintedBalance; constructor( string memory _name, string memory _symbol, string memory _initBaseURI, string memory _initNotRevealedUri ) ERC721(_name, _symbol) { setBaseURI(_initBaseURI); setNotRevealedURI(_initNotRevealedUri); } // Base URI function _baseURI() internal view virtual override returns (string memory) { return baseURI; } // Mint function mint(uint256 _mintAmount) public payable { require(!paused, "The contract is paused"); uint256 supply = totalSupply(); require(_mintAmount > 0, "Need to mint at least 1 NFT"); require(_mintAmount <= maxMintAmount, "Max mint amount per session exceeded"); require(supply + _mintAmount <= maxSupply, "Max NFT limit exceeded"); if (msg.sender != owner()) { if(onlyWhitelisted == true) { require(isWhitelisted(msg.sender), "User is not whitelisted"); } uint256 ownerMintedCount = addressMintedBalance[msg.sender]; require(ownerMintedCount + _mintAmount <= nftPerAddressLimit, "Max NFT per address exceeded"); require(msg.value >= cost * _mintAmount, "Insufficient funds"); } for (uint256 i = 1; i <= _mintAmount; i++) { addressMintedBalance[msg.sender]++; _safeMint(msg.sender, supply + i); } withdraw(); } // Is Whitelisted function isWhitelisted(address _user) public view returns (bool) { for (uint i = 0; i < whitelistedAddresses.length; i++) { if (whitelistedAddresses[i] == _user) { return true; } } return false; } // Token URI function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); if(revealed == false) { return notRevealedUri; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension)) : ""; } // Reveal function reveal() public onlyOwner { revealed = true; } // Set NFT Per Address Limit function setNftPerAddressLimit(uint256 _limit) public onlyOwner { nftPerAddressLimit = _limit; } // Set Cost function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } // Set Max Mint Amount function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner { maxMintAmount = _newmaxMintAmount; } // Set Base URI function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } // Set Base Extension function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } // Set Not Revealed URI function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner { notRevealedUri = _notRevealedURI; } // Set Only Whitelisted function setOnlyWhitelisted(bool _state) public onlyOwner { onlyWhitelisted = _state; } // Whitelist Users function whitelistUsers(address[] calldata _users) public onlyOwner { delete whitelistedAddresses; whitelistedAddresses = _users; } // Withdraw function withdraw() public payable { uint256 contractBalance = address(this).balance; // 20% - 0x33b6B458D3cC4634A334DD0c8922C609B84A0E6C (bool ps1, ) = payable(0x33b6B458D3cC4634A334DD0c8922C609B84A0E6C).call{value: contractBalance * 20 / 100}(""); require(ps1); //25% - 0x4a3F495AE0a2F5ff0D67176041b1B890a936415A (bool ps2, ) = payable(0x4a3F495AE0a2F5ff0D67176041b1B890a936415A).call{value: contractBalance * 25 / 100}(""); require(ps2); // 55% - 0x5141611eCF14fC2E3C7796DF1980d7FbcD1BBe9C (bool ps3, ) = payable(owner()).call{value: address(this).balance}(""); require(ps3); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressMintedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"_user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onlyWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setNftPerAddressLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setOnlyWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"whitelistUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c908051906020019062000051929190620003c1565b5066b1a2bc2ec50000600e55611770600f55600160105560056011556000601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff021916908315150217905550348015620000cb57600080fd5b506040516200567d3803806200567d8339818101604052810190620000f19190620004ef565b838381600090805190602001906200010b929190620003c1565b50806001908051906020019062000124929190620003c1565b505050620001476200013b6200017360201b60201c565b6200017b60201b60201c565b62000158826200024160201b60201c565b6200016981620002ec60201b60201c565b50505050620007e4565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002516200017360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002776200039760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002c79062000604565b60405180910390fd5b80600b9080519060200190620002e8929190620003c1565b5050565b620002fc6200017360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003226200039760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200037b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003729062000604565b60405180910390fd5b80600d908051906020019062000393929190620003c1565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003cf90620006cc565b90600052602060002090601f016020900481019282620003f357600085556200043f565b82601f106200040e57805160ff19168380011785556200043f565b828001600101855582156200043f579182015b828111156200043e57825182559160200191906001019062000421565b5b5090506200044e919062000452565b5090565b5b808211156200046d57600081600090555060010162000453565b5090565b60006200048862000482846200064f565b62000626565b905082815260208101848484011115620004a757620004a66200079b565b5b620004b484828562000696565b509392505050565b600082601f830112620004d457620004d362000796565b5b8151620004e684826020860162000471565b91505092915050565b600080600080608085870312156200050c576200050b620007a5565b5b600085015167ffffffffffffffff8111156200052d576200052c620007a0565b5b6200053b87828801620004bc565b945050602085015167ffffffffffffffff8111156200055f576200055e620007a0565b5b6200056d87828801620004bc565b935050604085015167ffffffffffffffff811115620005915762000590620007a0565b5b6200059f87828801620004bc565b925050606085015167ffffffffffffffff811115620005c357620005c2620007a0565b5b620005d187828801620004bc565b91505092959194509250565b6000620005ec60208362000685565b9150620005f982620007bb565b602082019050919050565b600060208201905081810360008301526200061f81620005dd565b9050919050565b60006200063262000645565b905062000640828262000702565b919050565b6000604051905090565b600067ffffffffffffffff8211156200066d576200066c62000767565b5b6200067882620007aa565b9050602081019050919050565b600082825260208201905092915050565b60005b83811015620006b657808201518184015260208101905062000699565b83811115620006c6576000848401525b50505050565b60006002820490506001821680620006e557607f821691505b60208210811415620006fc57620006fb62000738565b5b50919050565b6200070d82620007aa565b810181811067ffffffffffffffff821117156200072f576200072e62000767565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b614e8980620007f46000396000f3fe60806040526004361061025c5760003560e01c80636c0360eb11610144578063ba4e5c49116100b6578063d5abeb011161007a578063d5abeb01146108e0578063da3ef23f1461090b578063e985e9c514610934578063edec5f2714610971578063f2c4ce1e1461099a578063f2fde38b146109c35761025c565b8063ba4e5c49146107e7578063ba7d2c7614610824578063c66828621461084f578063c87b56dd1461087a578063d0eb26b0146108b75761025c565b806395d89b411161010857806395d89b411461070c5780639c70b51214610737578063a0712d6814610762578063a22cb4651461077e578063a475b5dd146107a7578063b88d4fde146107be5761025c565b80636c0360eb1461063957806370a0823114610664578063715018a6146106a15780637f00c7a6146106b85780638da5cb5b146106e15761025c565b80632f745c59116101dd57806344a0d68a116101a157806344a0d68a146105175780634f6ccce714610540578063518302271461057d57806355f804b3146105a85780635c975abb146105d15780636352211e146105fc5761025c565b80632f745c59146104415780633af32abf1461047e5780633c952764146104bb5780633ccfd60b146104e457806342842e0e146104ee5761025c565b806313faede61161022457806313faede61461035a57806318160ddd1461038557806318cae269146103b0578063239c70ae146103ed57806323b872dd146104185761025c565b806301ffc9a71461026157806306fdde031461029e578063081812fc146102c9578063081c8c4414610306578063095ea7b314610331575b600080fd5b34801561026d57600080fd5b506102886004803603810190610283919061390c565b6109ec565b6040516102959190613f66565b60405180910390f35b3480156102aa57600080fd5b506102b3610a66565b6040516102c09190613f81565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906139af565b610af8565b6040516102fd9190613eff565b60405180910390f35b34801561031257600080fd5b5061031b610b7d565b6040516103289190613f81565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190613852565b610c0b565b005b34801561036657600080fd5b5061036f610d23565b60405161037c91906142c3565b60405180910390f35b34801561039157600080fd5b5061039a610d29565b6040516103a791906142c3565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d291906136cf565b610d36565b6040516103e491906142c3565b60405180910390f35b3480156103f957600080fd5b50610402610d4e565b60405161040f91906142c3565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a919061373c565b610d54565b005b34801561044d57600080fd5b5061046860048036038101906104639190613852565b610db4565b60405161047591906142c3565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a091906136cf565b610e59565b6040516104b29190613f66565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906138df565b610f08565b005b6104ec610fa1565b005b3480156104fa57600080fd5b506105156004803603810190610510919061373c565b61116d565b005b34801561052357600080fd5b5061053e600480360381019061053991906139af565b61118d565b005b34801561054c57600080fd5b50610567600480360381019061056291906139af565b611213565b60405161057491906142c3565b60405180910390f35b34801561058957600080fd5b50610592611284565b60405161059f9190613f66565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca9190613966565b611297565b005b3480156105dd57600080fd5b506105e661132d565b6040516105f39190613f66565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e91906139af565b611340565b6040516106309190613eff565b60405180910390f35b34801561064557600080fd5b5061064e6113f2565b60405161065b9190613f81565b60405180910390f35b34801561067057600080fd5b5061068b600480360381019061068691906136cf565b611480565b60405161069891906142c3565b60405180910390f35b3480156106ad57600080fd5b506106b6611538565b005b3480156106c457600080fd5b506106df60048036038101906106da91906139af565b6115c0565b005b3480156106ed57600080fd5b506106f6611646565b6040516107039190613eff565b60405180910390f35b34801561071857600080fd5b50610721611670565b60405161072e9190613f81565b60405180910390f35b34801561074357600080fd5b5061074c611702565b6040516107599190613f66565b60405180910390f35b61077c600480360381019061077791906139af565b611715565b005b34801561078a57600080fd5b506107a560048036038101906107a09190613812565b611a66565b005b3480156107b357600080fd5b506107bc611a7c565b005b3480156107ca57600080fd5b506107e560048036038101906107e0919061378f565b611b15565b005b3480156107f357600080fd5b5061080e600480360381019061080991906139af565b611b77565b60405161081b9190613eff565b60405180910390f35b34801561083057600080fd5b50610839611bb6565b60405161084691906142c3565b60405180910390f35b34801561085b57600080fd5b50610864611bbc565b6040516108719190613f81565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c91906139af565b611c4a565b6040516108ae9190613f81565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d991906139af565b611da3565b005b3480156108ec57600080fd5b506108f5611e29565b60405161090291906142c3565b60405180910390f35b34801561091757600080fd5b50610932600480360381019061092d9190613966565b611e2f565b005b34801561094057600080fd5b5061095b600480360381019061095691906136fc565b611ec5565b6040516109689190613f66565b60405180910390f35b34801561097d57600080fd5b5061099860048036038101906109939190613892565b611f59565b005b3480156109a657600080fd5b506109c160048036038101906109bc9190613966565b611ff9565b005b3480156109cf57600080fd5b506109ea60048036038101906109e591906136cf565b61208f565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a5f5750610a5e82612187565b5b9050919050565b606060008054610a7590614593565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa190614593565b8015610aee5780601f10610ac357610100808354040283529160200191610aee565b820191906000526020600020905b815481529060010190602001808311610ad157829003601f168201915b5050505050905090565b6000610b0382612269565b610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b39906141a3565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600d8054610b8a90614593565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb690614593565b8015610c035780601f10610bd857610100808354040283529160200191610c03565b820191906000526020600020905b815481529060010190602001808311610be657829003601f168201915b505050505081565b6000610c1682611340565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7e90614243565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ca66122d5565b73ffffffffffffffffffffffffffffffffffffffff161480610cd55750610cd481610ccf6122d5565b611ec5565b5b610d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0b90614103565b60405180910390fd5b610d1e83836122dd565b505050565b600e5481565b6000600880549050905090565b60146020528060005260406000206000915090505481565b60105481565b610d65610d5f6122d5565b82612396565b610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90614263565b60405180910390fd5b610daf838383612474565b505050565b6000610dbf83611480565b8210610e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df790613fa3565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600080600090505b601380549050811015610efd578273ffffffffffffffffffffffffffffffffffffffff1660138281548110610e9957610e9861472c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eea576001915050610f03565b8080610ef5906145f6565b915050610e61565b50600090505b919050565b610f106122d5565b73ffffffffffffffffffffffffffffffffffffffff16610f2e611646565b73ffffffffffffffffffffffffffffffffffffffff1614610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7b906141c3565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b600047905060007333b6b458d3cc4634a334dd0c8922c609b84a0e6c73ffffffffffffffffffffffffffffffffffffffff166064601484610fe2919061444f565b610fec919061441e565b604051610ff890613eea565b60006040518083038185875af1925050503d8060008114611035576040519150601f19603f3d011682016040523d82523d6000602084013e61103a565b606091505b505090508061104857600080fd5b6000734a3f495ae0a2f5ff0d67176041b1b890a936415a73ffffffffffffffffffffffffffffffffffffffff166064601985611084919061444f565b61108e919061441e565b60405161109a90613eea565b60006040518083038185875af1925050503d80600081146110d7576040519150601f19603f3d011682016040523d82523d6000602084013e6110dc565b606091505b50509050806110ea57600080fd5b60006110f4611646565b73ffffffffffffffffffffffffffffffffffffffff164760405161111790613eea565b60006040518083038185875af1925050503d8060008114611154576040519150601f19603f3d011682016040523d82523d6000602084013e611159565b606091505b505090508061116757600080fd5b50505050565b61118883838360405180602001604052806000815250611b15565b505050565b6111956122d5565b73ffffffffffffffffffffffffffffffffffffffff166111b3611646565b73ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611200906141c3565b60405180910390fd5b80600e8190555050565b600061121d610d29565b821061125e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125590614283565b60405180910390fd5b600882815481106112725761127161472c565b5b90600052602060002001549050919050565b601260019054906101000a900460ff1681565b61129f6122d5565b73ffffffffffffffffffffffffffffffffffffffff166112bd611646565b73ffffffffffffffffffffffffffffffffffffffff1614611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a906141c3565b60405180910390fd5b80600b90805190602001906113299291906133cc565b5050565b601260009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e090614143565b60405180910390fd5b80915050919050565b600b80546113ff90614593565b80601f016020809104026020016040519081016040528092919081815260200182805461142b90614593565b80156114785780601f1061144d57610100808354040283529160200191611478565b820191906000526020600020905b81548152906001019060200180831161145b57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e890614123565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115406122d5565b73ffffffffffffffffffffffffffffffffffffffff1661155e611646565b73ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab906141c3565b60405180910390fd5b6115be60006126d0565b565b6115c86122d5565b73ffffffffffffffffffffffffffffffffffffffff166115e6611646565b73ffffffffffffffffffffffffffffffffffffffff161461163c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611633906141c3565b60405180910390fd5b8060108190555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461167f90614593565b80601f01602080910402602001604051908101604052809291908181526020018280546116ab90614593565b80156116f85780601f106116cd576101008083540402835291602001916116f8565b820191906000526020600020905b8154815290600101906020018083116116db57829003601f168201915b5050505050905090565b601260029054906101000a900460ff1681565b601260009054906101000a900460ff1615611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c90613fe3565b60405180910390fd5b600061176f610d29565b9050600082116117b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ab906142a3565b60405180910390fd5b6010548211156117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f0906140a3565b60405180910390fd5b600f54828261180891906143c8565b1115611849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184090614163565b60405180910390fd5b611851611646565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119ce5760011515601260029054906101000a900460ff16151514156118e8576118a833610e59565b6118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906140e3565b60405180910390fd5b5b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601154838261193b91906143c8565b111561197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390614223565b60405180910390fd5b82600e5461198a919061444f565b3410156119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c3906140c3565b60405180910390fd5b505b6000600190505b828111611a5957601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611a2c906145f6565b9190505550611a46338284611a4191906143c8565b612796565b8080611a51906145f6565b9150506119d5565b50611a62610fa1565b5050565b611a78611a716122d5565b83836127b4565b5050565b611a846122d5565b73ffffffffffffffffffffffffffffffffffffffff16611aa2611646565b73ffffffffffffffffffffffffffffffffffffffff1614611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906141c3565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550565b611b26611b206122d5565b83612396565b611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c90614263565b60405180910390fd5b611b7184848484612921565b50505050565b60138181548110611b8757600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c8054611bc990614593565b80601f0160208091040260200160405190810160405280929190818152602001828054611bf590614593565b8015611c425780601f10611c1757610100808354040283529160200191611c42565b820191906000526020600020905b815481529060010190602001808311611c2557829003601f168201915b505050505081565b6060611c5582612269565b611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90614203565b60405180910390fd5b60001515601260019054906101000a900460ff1615151415611d4257600d8054611cbd90614593565b80601f0160208091040260200160405190810160405280929190818152602001828054611ce990614593565b8015611d365780601f10611d0b57610100808354040283529160200191611d36565b820191906000526020600020905b815481529060010190602001808311611d1957829003601f168201915b50505050509050611d9e565b6000611d4c61297d565b90506000815111611d6c5760405180602001604052806000815250611d9a565b80611d7684612a0f565b600c604051602001611d8a93929190613eb9565b6040516020818303038152906040525b9150505b919050565b611dab6122d5565b73ffffffffffffffffffffffffffffffffffffffff16611dc9611646565b73ffffffffffffffffffffffffffffffffffffffff1614611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e16906141c3565b60405180910390fd5b8060118190555050565b600f5481565b611e376122d5565b73ffffffffffffffffffffffffffffffffffffffff16611e55611646565b73ffffffffffffffffffffffffffffffffffffffff1614611eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea2906141c3565b60405180910390fd5b80600c9080519060200190611ec19291906133cc565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611f616122d5565b73ffffffffffffffffffffffffffffffffffffffff16611f7f611646565b73ffffffffffffffffffffffffffffffffffffffff1614611fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcc906141c3565b60405180910390fd5b60136000611fe39190613452565b818160139190611ff4929190613473565b505050565b6120016122d5565b73ffffffffffffffffffffffffffffffffffffffff1661201f611646565b73ffffffffffffffffffffffffffffffffffffffff1614612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906141c3565b60405180910390fd5b80600d908051906020019061208b9291906133cc565b5050565b6120976122d5565b73ffffffffffffffffffffffffffffffffffffffff166120b5611646565b73ffffffffffffffffffffffffffffffffffffffff161461210b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612102906141c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561217b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217290614003565b60405180910390fd5b612184816126d0565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061225257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612262575061226182612b70565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661235083611340565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006123a182612269565b6123e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d790614083565b60405180910390fd5b60006123eb83611340565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061245a57508373ffffffffffffffffffffffffffffffffffffffff1661244284610af8565b73ffffffffffffffffffffffffffffffffffffffff16145b8061246b575061246a8185611ec5565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661249482611340565b73ffffffffffffffffffffffffffffffffffffffff16146124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e1906141e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561255a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255190614043565b60405180910390fd5b612565838383612bda565b6125706000826122dd565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125c091906144a9565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461261791906143c8565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6127b0828260405180602001604052806000815250612cee565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281a90614063565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516129149190613f66565b60405180910390a3505050565b61292c848484612474565b61293884848484612d49565b612977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296e90613fc3565b60405180910390fd5b50505050565b6060600b805461298c90614593565b80601f01602080910402602001604051908101604052809291908181526020018280546129b890614593565b8015612a055780601f106129da57610100808354040283529160200191612a05565b820191906000526020600020905b8154815290600101906020018083116129e857829003601f168201915b5050505050905090565b60606000821415612a57576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612b6b565b600082905060005b60008214612a89578080612a72906145f6565b915050600a82612a82919061441e565b9150612a5f565b60008167ffffffffffffffff811115612aa557612aa461475b565b5b6040519080825280601f01601f191660200182016040528015612ad75781602001600182028036833780820191505090505b5090505b60008514612b6457600182612af091906144a9565b9150600a85612aff919061463f565b6030612b0b91906143c8565b60f81b818381518110612b2157612b2061472c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612b5d919061441e565b9450612adb565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612be5838383612ee0565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c2857612c2381612ee5565b612c67565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612c6657612c658382612f2e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612caa57612ca58161309b565b612ce9565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612ce857612ce7828261316c565b5b5b505050565b612cf883836131eb565b612d056000848484612d49565b612d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3b90613fc3565b60405180910390fd5b505050565b6000612d6a8473ffffffffffffffffffffffffffffffffffffffff166133b9565b15612ed3578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d936122d5565b8786866040518563ffffffff1660e01b8152600401612db59493929190613f1a565b602060405180830381600087803b158015612dcf57600080fd5b505af1925050508015612e0057506040513d601f19601f82011682018060405250810190612dfd9190613939565b60015b612e83573d8060008114612e30576040519150601f19603f3d011682016040523d82523d6000602084013e612e35565b606091505b50600081511415612e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7290613fc3565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612ed8565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612f3b84611480565b612f4591906144a9565b905060006007600084815260200190815260200160002054905081811461302a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506130af91906144a9565b90506000600960008481526020019081526020016000205490506000600883815481106130df576130de61472c565b5b9060005260206000200154905080600883815481106131015761310061472c565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806131505761314f6146fd565b5b6001900381819060005260206000200160009055905550505050565b600061317783611480565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561325b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325290614183565b60405180910390fd5b61326481612269565b156132a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329b90614023565b60405180910390fd5b6132b060008383612bda565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461330091906143c8565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546133d890614593565b90600052602060002090601f0160209004810192826133fa5760008555613441565b82601f1061341357805160ff1916838001178555613441565b82800160010185558215613441579182015b82811115613440578251825591602001919060010190613425565b5b50905061344e9190613513565b5090565b50805460008255906000526020600020908101906134709190613513565b50565b828054828255906000526020600020908101928215613502579160200282015b8281111561350157823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613493565b5b50905061350f9190613513565b5090565b5b8082111561352c576000816000905550600101613514565b5090565b600061354361353e84614303565b6142de565b90508281526020810184848401111561355f5761355e614799565b5b61356a848285614551565b509392505050565b600061358561358084614334565b6142de565b9050828152602081018484840111156135a1576135a0614799565b5b6135ac848285614551565b509392505050565b6000813590506135c381614df7565b92915050565b60008083601f8401126135df576135de61478f565b5b8235905067ffffffffffffffff8111156135fc576135fb61478a565b5b60208301915083602082028301111561361857613617614794565b5b9250929050565b60008135905061362e81614e0e565b92915050565b60008135905061364381614e25565b92915050565b60008151905061365881614e25565b92915050565b600082601f8301126136735761367261478f565b5b8135613683848260208601613530565b91505092915050565b600082601f8301126136a1576136a061478f565b5b81356136b1848260208601613572565b91505092915050565b6000813590506136c981614e3c565b92915050565b6000602082840312156136e5576136e46147a3565b5b60006136f3848285016135b4565b91505092915050565b60008060408385031215613713576137126147a3565b5b6000613721858286016135b4565b9250506020613732858286016135b4565b9150509250929050565b600080600060608486031215613755576137546147a3565b5b6000613763868287016135b4565b9350506020613774868287016135b4565b9250506040613785868287016136ba565b9150509250925092565b600080600080608085870312156137a9576137a86147a3565b5b60006137b7878288016135b4565b94505060206137c8878288016135b4565b93505060406137d9878288016136ba565b925050606085013567ffffffffffffffff8111156137fa576137f961479e565b5b6138068782880161365e565b91505092959194509250565b60008060408385031215613829576138286147a3565b5b6000613837858286016135b4565b92505060206138488582860161361f565b9150509250929050565b60008060408385031215613869576138686147a3565b5b6000613877858286016135b4565b9250506020613888858286016136ba565b9150509250929050565b600080602083850312156138a9576138a86147a3565b5b600083013567ffffffffffffffff8111156138c7576138c661479e565b5b6138d3858286016135c9565b92509250509250929050565b6000602082840312156138f5576138f46147a3565b5b60006139038482850161361f565b91505092915050565b600060208284031215613922576139216147a3565b5b600061393084828501613634565b91505092915050565b60006020828403121561394f5761394e6147a3565b5b600061395d84828501613649565b91505092915050565b60006020828403121561397c5761397b6147a3565b5b600082013567ffffffffffffffff81111561399a5761399961479e565b5b6139a68482850161368c565b91505092915050565b6000602082840312156139c5576139c46147a3565b5b60006139d3848285016136ba565b91505092915050565b6139e5816144dd565b82525050565b6139f4816144ef565b82525050565b6000613a058261437a565b613a0f8185614390565b9350613a1f818560208601614560565b613a28816147a8565b840191505092915050565b6000613a3e82614385565b613a4881856143ac565b9350613a58818560208601614560565b613a61816147a8565b840191505092915050565b6000613a7782614385565b613a8181856143bd565b9350613a91818560208601614560565b80840191505092915050565b60008154613aaa81614593565b613ab481866143bd565b94506001821660008114613acf5760018114613ae057613b13565b60ff19831686528186019350613b13565b613ae985614365565b60005b83811015613b0b57815481890152600182019150602081019050613aec565b838801955050505b50505092915050565b6000613b29602b836143ac565b9150613b34826147b9565b604082019050919050565b6000613b4c6032836143ac565b9150613b5782614808565b604082019050919050565b6000613b6f6016836143ac565b9150613b7a82614857565b602082019050919050565b6000613b926026836143ac565b9150613b9d82614880565b604082019050919050565b6000613bb5601c836143ac565b9150613bc0826148cf565b602082019050919050565b6000613bd86024836143ac565b9150613be3826148f8565b604082019050919050565b6000613bfb6019836143ac565b9150613c0682614947565b602082019050919050565b6000613c1e602c836143ac565b9150613c2982614970565b604082019050919050565b6000613c416024836143ac565b9150613c4c826149bf565b604082019050919050565b6000613c646012836143ac565b9150613c6f82614a0e565b602082019050919050565b6000613c876017836143ac565b9150613c9282614a37565b602082019050919050565b6000613caa6038836143ac565b9150613cb582614a60565b604082019050919050565b6000613ccd602a836143ac565b9150613cd882614aaf565b604082019050919050565b6000613cf06029836143ac565b9150613cfb82614afe565b604082019050919050565b6000613d136016836143ac565b9150613d1e82614b4d565b602082019050919050565b6000613d366020836143ac565b9150613d4182614b76565b602082019050919050565b6000613d59602c836143ac565b9150613d6482614b9f565b604082019050919050565b6000613d7c6020836143ac565b9150613d8782614bee565b602082019050919050565b6000613d9f6029836143ac565b9150613daa82614c17565b604082019050919050565b6000613dc2602f836143ac565b9150613dcd82614c66565b604082019050919050565b6000613de5601c836143ac565b9150613df082614cb5565b602082019050919050565b6000613e086021836143ac565b9150613e1382614cde565b604082019050919050565b6000613e2b6000836143a1565b9150613e3682614d2d565b600082019050919050565b6000613e4e6031836143ac565b9150613e5982614d30565b604082019050919050565b6000613e71602c836143ac565b9150613e7c82614d7f565b604082019050919050565b6000613e94601b836143ac565b9150613e9f82614dce565b602082019050919050565b613eb381614547565b82525050565b6000613ec58286613a6c565b9150613ed18285613a6c565b9150613edd8284613a9d565b9150819050949350505050565b6000613ef582613e1e565b9150819050919050565b6000602082019050613f1460008301846139dc565b92915050565b6000608082019050613f2f60008301876139dc565b613f3c60208301866139dc565b613f496040830185613eaa565b8181036060830152613f5b81846139fa565b905095945050505050565b6000602082019050613f7b60008301846139eb565b92915050565b60006020820190508181036000830152613f9b8184613a33565b905092915050565b60006020820190508181036000830152613fbc81613b1c565b9050919050565b60006020820190508181036000830152613fdc81613b3f565b9050919050565b60006020820190508181036000830152613ffc81613b62565b9050919050565b6000602082019050818103600083015261401c81613b85565b9050919050565b6000602082019050818103600083015261403c81613ba8565b9050919050565b6000602082019050818103600083015261405c81613bcb565b9050919050565b6000602082019050818103600083015261407c81613bee565b9050919050565b6000602082019050818103600083015261409c81613c11565b9050919050565b600060208201905081810360008301526140bc81613c34565b9050919050565b600060208201905081810360008301526140dc81613c57565b9050919050565b600060208201905081810360008301526140fc81613c7a565b9050919050565b6000602082019050818103600083015261411c81613c9d565b9050919050565b6000602082019050818103600083015261413c81613cc0565b9050919050565b6000602082019050818103600083015261415c81613ce3565b9050919050565b6000602082019050818103600083015261417c81613d06565b9050919050565b6000602082019050818103600083015261419c81613d29565b9050919050565b600060208201905081810360008301526141bc81613d4c565b9050919050565b600060208201905081810360008301526141dc81613d6f565b9050919050565b600060208201905081810360008301526141fc81613d92565b9050919050565b6000602082019050818103600083015261421c81613db5565b9050919050565b6000602082019050818103600083015261423c81613dd8565b9050919050565b6000602082019050818103600083015261425c81613dfb565b9050919050565b6000602082019050818103600083015261427c81613e41565b9050919050565b6000602082019050818103600083015261429c81613e64565b9050919050565b600060208201905081810360008301526142bc81613e87565b9050919050565b60006020820190506142d86000830184613eaa565b92915050565b60006142e86142f9565b90506142f482826145c5565b919050565b6000604051905090565b600067ffffffffffffffff82111561431e5761431d61475b565b5b614327826147a8565b9050602081019050919050565b600067ffffffffffffffff82111561434f5761434e61475b565b5b614358826147a8565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006143d382614547565b91506143de83614547565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561441357614412614670565b5b828201905092915050565b600061442982614547565b915061443483614547565b9250826144445761444361469f565b5b828204905092915050565b600061445a82614547565b915061446583614547565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561449e5761449d614670565b5b828202905092915050565b60006144b482614547565b91506144bf83614547565b9250828210156144d2576144d1614670565b5b828203905092915050565b60006144e882614527565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561457e578082015181840152602081019050614563565b8381111561458d576000848401525b50505050565b600060028204905060018216806145ab57607f821691505b602082108114156145bf576145be6146ce565b5b50919050565b6145ce826147a8565b810181811067ffffffffffffffff821117156145ed576145ec61475b565b5b80604052505050565b600061460182614547565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561463457614633614670565b5b600182019050919050565b600061464a82614547565b915061465583614547565b9250826146655761466461469f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f54686520636f6e74726163742069732070617573656400000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4d6178206d696e7420616d6f756e74207065722073657373696f6e206578636560008201527f6564656400000000000000000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742066756e64730000000000000000000000000000600082015250565b7f55736572206973206e6f742077686974656c6973746564000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4d6178204e4654206c696d697420657863656564656400000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4d6178204e465420706572206164647265737320657863656564656400000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4e65656420746f206d696e74206174206c656173742031204e46540000000000600082015250565b614e00816144dd565b8114614e0b57600080fd5b50565b614e17816144ef565b8114614e2257600080fd5b50565b614e2e816144fb565b8114614e3957600080fd5b50565b614e4581614547565b8114614e5057600080fd5b5056fea26469706673582212200e7f45af4dc9bc830443cbef13e94ba65f885e4835b1d2faa28b54744f1d296764736f6c63430008070033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000014536f6369657479206f662054686520446f6765730000000000000000000000000000000000000000000000000000000000000000000000000000000000000004534f544400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005368747470733a2f2f736f63696574796f66746865646f6765732e636f6d2f516d5a3667464c425133647a345774484d6f6d5a46395a70544570656d32756b553937413144504e5941704c74362f6a736f6e732f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000006368747470733a2f2f736f63696574796f66746865646f6765732e636f6d2f516d5a3667464c425133647a345774484d6f6d5a46395a70544570656d32756b553937413144504e5941704c74362f6a736f6e732f706c616365686f6c6465722e6a736f6e0000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061025c5760003560e01c80636c0360eb11610144578063ba4e5c49116100b6578063d5abeb011161007a578063d5abeb01146108e0578063da3ef23f1461090b578063e985e9c514610934578063edec5f2714610971578063f2c4ce1e1461099a578063f2fde38b146109c35761025c565b8063ba4e5c49146107e7578063ba7d2c7614610824578063c66828621461084f578063c87b56dd1461087a578063d0eb26b0146108b75761025c565b806395d89b411161010857806395d89b411461070c5780639c70b51214610737578063a0712d6814610762578063a22cb4651461077e578063a475b5dd146107a7578063b88d4fde146107be5761025c565b80636c0360eb1461063957806370a0823114610664578063715018a6146106a15780637f00c7a6146106b85780638da5cb5b146106e15761025c565b80632f745c59116101dd57806344a0d68a116101a157806344a0d68a146105175780634f6ccce714610540578063518302271461057d57806355f804b3146105a85780635c975abb146105d15780636352211e146105fc5761025c565b80632f745c59146104415780633af32abf1461047e5780633c952764146104bb5780633ccfd60b146104e457806342842e0e146104ee5761025c565b806313faede61161022457806313faede61461035a57806318160ddd1461038557806318cae269146103b0578063239c70ae146103ed57806323b872dd146104185761025c565b806301ffc9a71461026157806306fdde031461029e578063081812fc146102c9578063081c8c4414610306578063095ea7b314610331575b600080fd5b34801561026d57600080fd5b506102886004803603810190610283919061390c565b6109ec565b6040516102959190613f66565b60405180910390f35b3480156102aa57600080fd5b506102b3610a66565b6040516102c09190613f81565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906139af565b610af8565b6040516102fd9190613eff565b60405180910390f35b34801561031257600080fd5b5061031b610b7d565b6040516103289190613f81565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190613852565b610c0b565b005b34801561036657600080fd5b5061036f610d23565b60405161037c91906142c3565b60405180910390f35b34801561039157600080fd5b5061039a610d29565b6040516103a791906142c3565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d291906136cf565b610d36565b6040516103e491906142c3565b60405180910390f35b3480156103f957600080fd5b50610402610d4e565b60405161040f91906142c3565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a919061373c565b610d54565b005b34801561044d57600080fd5b5061046860048036038101906104639190613852565b610db4565b60405161047591906142c3565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a091906136cf565b610e59565b6040516104b29190613f66565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906138df565b610f08565b005b6104ec610fa1565b005b3480156104fa57600080fd5b506105156004803603810190610510919061373c565b61116d565b005b34801561052357600080fd5b5061053e600480360381019061053991906139af565b61118d565b005b34801561054c57600080fd5b50610567600480360381019061056291906139af565b611213565b60405161057491906142c3565b60405180910390f35b34801561058957600080fd5b50610592611284565b60405161059f9190613f66565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca9190613966565b611297565b005b3480156105dd57600080fd5b506105e661132d565b6040516105f39190613f66565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e91906139af565b611340565b6040516106309190613eff565b60405180910390f35b34801561064557600080fd5b5061064e6113f2565b60405161065b9190613f81565b60405180910390f35b34801561067057600080fd5b5061068b600480360381019061068691906136cf565b611480565b60405161069891906142c3565b60405180910390f35b3480156106ad57600080fd5b506106b6611538565b005b3480156106c457600080fd5b506106df60048036038101906106da91906139af565b6115c0565b005b3480156106ed57600080fd5b506106f6611646565b6040516107039190613eff565b60405180910390f35b34801561071857600080fd5b50610721611670565b60405161072e9190613f81565b60405180910390f35b34801561074357600080fd5b5061074c611702565b6040516107599190613f66565b60405180910390f35b61077c600480360381019061077791906139af565b611715565b005b34801561078a57600080fd5b506107a560048036038101906107a09190613812565b611a66565b005b3480156107b357600080fd5b506107bc611a7c565b005b3480156107ca57600080fd5b506107e560048036038101906107e0919061378f565b611b15565b005b3480156107f357600080fd5b5061080e600480360381019061080991906139af565b611b77565b60405161081b9190613eff565b60405180910390f35b34801561083057600080fd5b50610839611bb6565b60405161084691906142c3565b60405180910390f35b34801561085b57600080fd5b50610864611bbc565b6040516108719190613f81565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c91906139af565b611c4a565b6040516108ae9190613f81565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d991906139af565b611da3565b005b3480156108ec57600080fd5b506108f5611e29565b60405161090291906142c3565b60405180910390f35b34801561091757600080fd5b50610932600480360381019061092d9190613966565b611e2f565b005b34801561094057600080fd5b5061095b600480360381019061095691906136fc565b611ec5565b6040516109689190613f66565b60405180910390f35b34801561097d57600080fd5b5061099860048036038101906109939190613892565b611f59565b005b3480156109a657600080fd5b506109c160048036038101906109bc9190613966565b611ff9565b005b3480156109cf57600080fd5b506109ea60048036038101906109e591906136cf565b61208f565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a5f5750610a5e82612187565b5b9050919050565b606060008054610a7590614593565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa190614593565b8015610aee5780601f10610ac357610100808354040283529160200191610aee565b820191906000526020600020905b815481529060010190602001808311610ad157829003601f168201915b5050505050905090565b6000610b0382612269565b610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b39906141a3565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600d8054610b8a90614593565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb690614593565b8015610c035780601f10610bd857610100808354040283529160200191610c03565b820191906000526020600020905b815481529060010190602001808311610be657829003601f168201915b505050505081565b6000610c1682611340565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7e90614243565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ca66122d5565b73ffffffffffffffffffffffffffffffffffffffff161480610cd55750610cd481610ccf6122d5565b611ec5565b5b610d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0b90614103565b60405180910390fd5b610d1e83836122dd565b505050565b600e5481565b6000600880549050905090565b60146020528060005260406000206000915090505481565b60105481565b610d65610d5f6122d5565b82612396565b610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90614263565b60405180910390fd5b610daf838383612474565b505050565b6000610dbf83611480565b8210610e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df790613fa3565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600080600090505b601380549050811015610efd578273ffffffffffffffffffffffffffffffffffffffff1660138281548110610e9957610e9861472c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eea576001915050610f03565b8080610ef5906145f6565b915050610e61565b50600090505b919050565b610f106122d5565b73ffffffffffffffffffffffffffffffffffffffff16610f2e611646565b73ffffffffffffffffffffffffffffffffffffffff1614610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7b906141c3565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b600047905060007333b6b458d3cc4634a334dd0c8922c609b84a0e6c73ffffffffffffffffffffffffffffffffffffffff166064601484610fe2919061444f565b610fec919061441e565b604051610ff890613eea565b60006040518083038185875af1925050503d8060008114611035576040519150601f19603f3d011682016040523d82523d6000602084013e61103a565b606091505b505090508061104857600080fd5b6000734a3f495ae0a2f5ff0d67176041b1b890a936415a73ffffffffffffffffffffffffffffffffffffffff166064601985611084919061444f565b61108e919061441e565b60405161109a90613eea565b60006040518083038185875af1925050503d80600081146110d7576040519150601f19603f3d011682016040523d82523d6000602084013e6110dc565b606091505b50509050806110ea57600080fd5b60006110f4611646565b73ffffffffffffffffffffffffffffffffffffffff164760405161111790613eea565b60006040518083038185875af1925050503d8060008114611154576040519150601f19603f3d011682016040523d82523d6000602084013e611159565b606091505b505090508061116757600080fd5b50505050565b61118883838360405180602001604052806000815250611b15565b505050565b6111956122d5565b73ffffffffffffffffffffffffffffffffffffffff166111b3611646565b73ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611200906141c3565b60405180910390fd5b80600e8190555050565b600061121d610d29565b821061125e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125590614283565b60405180910390fd5b600882815481106112725761127161472c565b5b90600052602060002001549050919050565b601260019054906101000a900460ff1681565b61129f6122d5565b73ffffffffffffffffffffffffffffffffffffffff166112bd611646565b73ffffffffffffffffffffffffffffffffffffffff1614611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a906141c3565b60405180910390fd5b80600b90805190602001906113299291906133cc565b5050565b601260009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e090614143565b60405180910390fd5b80915050919050565b600b80546113ff90614593565b80601f016020809104026020016040519081016040528092919081815260200182805461142b90614593565b80156114785780601f1061144d57610100808354040283529160200191611478565b820191906000526020600020905b81548152906001019060200180831161145b57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e890614123565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115406122d5565b73ffffffffffffffffffffffffffffffffffffffff1661155e611646565b73ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab906141c3565b60405180910390fd5b6115be60006126d0565b565b6115c86122d5565b73ffffffffffffffffffffffffffffffffffffffff166115e6611646565b73ffffffffffffffffffffffffffffffffffffffff161461163c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611633906141c3565b60405180910390fd5b8060108190555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461167f90614593565b80601f01602080910402602001604051908101604052809291908181526020018280546116ab90614593565b80156116f85780601f106116cd576101008083540402835291602001916116f8565b820191906000526020600020905b8154815290600101906020018083116116db57829003601f168201915b5050505050905090565b601260029054906101000a900460ff1681565b601260009054906101000a900460ff1615611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c90613fe3565b60405180910390fd5b600061176f610d29565b9050600082116117b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ab906142a3565b60405180910390fd5b6010548211156117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f0906140a3565b60405180910390fd5b600f54828261180891906143c8565b1115611849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184090614163565b60405180910390fd5b611851611646565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119ce5760011515601260029054906101000a900460ff16151514156118e8576118a833610e59565b6118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906140e3565b60405180910390fd5b5b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601154838261193b91906143c8565b111561197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390614223565b60405180910390fd5b82600e5461198a919061444f565b3410156119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c3906140c3565b60405180910390fd5b505b6000600190505b828111611a5957601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611a2c906145f6565b9190505550611a46338284611a4191906143c8565b612796565b8080611a51906145f6565b9150506119d5565b50611a62610fa1565b5050565b611a78611a716122d5565b83836127b4565b5050565b611a846122d5565b73ffffffffffffffffffffffffffffffffffffffff16611aa2611646565b73ffffffffffffffffffffffffffffffffffffffff1614611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906141c3565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550565b611b26611b206122d5565b83612396565b611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c90614263565b60405180910390fd5b611b7184848484612921565b50505050565b60138181548110611b8757600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c8054611bc990614593565b80601f0160208091040260200160405190810160405280929190818152602001828054611bf590614593565b8015611c425780601f10611c1757610100808354040283529160200191611c42565b820191906000526020600020905b815481529060010190602001808311611c2557829003601f168201915b505050505081565b6060611c5582612269565b611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90614203565b60405180910390fd5b60001515601260019054906101000a900460ff1615151415611d4257600d8054611cbd90614593565b80601f0160208091040260200160405190810160405280929190818152602001828054611ce990614593565b8015611d365780601f10611d0b57610100808354040283529160200191611d36565b820191906000526020600020905b815481529060010190602001808311611d1957829003601f168201915b50505050509050611d9e565b6000611d4c61297d565b90506000815111611d6c5760405180602001604052806000815250611d9a565b80611d7684612a0f565b600c604051602001611d8a93929190613eb9565b6040516020818303038152906040525b9150505b919050565b611dab6122d5565b73ffffffffffffffffffffffffffffffffffffffff16611dc9611646565b73ffffffffffffffffffffffffffffffffffffffff1614611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e16906141c3565b60405180910390fd5b8060118190555050565b600f5481565b611e376122d5565b73ffffffffffffffffffffffffffffffffffffffff16611e55611646565b73ffffffffffffffffffffffffffffffffffffffff1614611eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea2906141c3565b60405180910390fd5b80600c9080519060200190611ec19291906133cc565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611f616122d5565b73ffffffffffffffffffffffffffffffffffffffff16611f7f611646565b73ffffffffffffffffffffffffffffffffffffffff1614611fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcc906141c3565b60405180910390fd5b60136000611fe39190613452565b818160139190611ff4929190613473565b505050565b6120016122d5565b73ffffffffffffffffffffffffffffffffffffffff1661201f611646565b73ffffffffffffffffffffffffffffffffffffffff1614612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906141c3565b60405180910390fd5b80600d908051906020019061208b9291906133cc565b5050565b6120976122d5565b73ffffffffffffffffffffffffffffffffffffffff166120b5611646565b73ffffffffffffffffffffffffffffffffffffffff161461210b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612102906141c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561217b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217290614003565b60405180910390fd5b612184816126d0565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061225257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612262575061226182612b70565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661235083611340565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006123a182612269565b6123e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d790614083565b60405180910390fd5b60006123eb83611340565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061245a57508373ffffffffffffffffffffffffffffffffffffffff1661244284610af8565b73ffffffffffffffffffffffffffffffffffffffff16145b8061246b575061246a8185611ec5565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661249482611340565b73ffffffffffffffffffffffffffffffffffffffff16146124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e1906141e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561255a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255190614043565b60405180910390fd5b612565838383612bda565b6125706000826122dd565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125c091906144a9565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461261791906143c8565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6127b0828260405180602001604052806000815250612cee565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281a90614063565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516129149190613f66565b60405180910390a3505050565b61292c848484612474565b61293884848484612d49565b612977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296e90613fc3565b60405180910390fd5b50505050565b6060600b805461298c90614593565b80601f01602080910402602001604051908101604052809291908181526020018280546129b890614593565b8015612a055780601f106129da57610100808354040283529160200191612a05565b820191906000526020600020905b8154815290600101906020018083116129e857829003601f168201915b5050505050905090565b60606000821415612a57576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612b6b565b600082905060005b60008214612a89578080612a72906145f6565b915050600a82612a82919061441e565b9150612a5f565b60008167ffffffffffffffff811115612aa557612aa461475b565b5b6040519080825280601f01601f191660200182016040528015612ad75781602001600182028036833780820191505090505b5090505b60008514612b6457600182612af091906144a9565b9150600a85612aff919061463f565b6030612b0b91906143c8565b60f81b818381518110612b2157612b2061472c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612b5d919061441e565b9450612adb565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612be5838383612ee0565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c2857612c2381612ee5565b612c67565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612c6657612c658382612f2e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612caa57612ca58161309b565b612ce9565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612ce857612ce7828261316c565b5b5b505050565b612cf883836131eb565b612d056000848484612d49565b612d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3b90613fc3565b60405180910390fd5b505050565b6000612d6a8473ffffffffffffffffffffffffffffffffffffffff166133b9565b15612ed3578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d936122d5565b8786866040518563ffffffff1660e01b8152600401612db59493929190613f1a565b602060405180830381600087803b158015612dcf57600080fd5b505af1925050508015612e0057506040513d601f19601f82011682018060405250810190612dfd9190613939565b60015b612e83573d8060008114612e30576040519150601f19603f3d011682016040523d82523d6000602084013e612e35565b606091505b50600081511415612e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7290613fc3565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612ed8565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612f3b84611480565b612f4591906144a9565b905060006007600084815260200190815260200160002054905081811461302a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506130af91906144a9565b90506000600960008481526020019081526020016000205490506000600883815481106130df576130de61472c565b5b9060005260206000200154905080600883815481106131015761310061472c565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806131505761314f6146fd565b5b6001900381819060005260206000200160009055905550505050565b600061317783611480565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561325b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325290614183565b60405180910390fd5b61326481612269565b156132a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329b90614023565b60405180910390fd5b6132b060008383612bda565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461330091906143c8565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546133d890614593565b90600052602060002090601f0160209004810192826133fa5760008555613441565b82601f1061341357805160ff1916838001178555613441565b82800160010185558215613441579182015b82811115613440578251825591602001919060010190613425565b5b50905061344e9190613513565b5090565b50805460008255906000526020600020908101906134709190613513565b50565b828054828255906000526020600020908101928215613502579160200282015b8281111561350157823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613493565b5b50905061350f9190613513565b5090565b5b8082111561352c576000816000905550600101613514565b5090565b600061354361353e84614303565b6142de565b90508281526020810184848401111561355f5761355e614799565b5b61356a848285614551565b509392505050565b600061358561358084614334565b6142de565b9050828152602081018484840111156135a1576135a0614799565b5b6135ac848285614551565b509392505050565b6000813590506135c381614df7565b92915050565b60008083601f8401126135df576135de61478f565b5b8235905067ffffffffffffffff8111156135fc576135fb61478a565b5b60208301915083602082028301111561361857613617614794565b5b9250929050565b60008135905061362e81614e0e565b92915050565b60008135905061364381614e25565b92915050565b60008151905061365881614e25565b92915050565b600082601f8301126136735761367261478f565b5b8135613683848260208601613530565b91505092915050565b600082601f8301126136a1576136a061478f565b5b81356136b1848260208601613572565b91505092915050565b6000813590506136c981614e3c565b92915050565b6000602082840312156136e5576136e46147a3565b5b60006136f3848285016135b4565b91505092915050565b60008060408385031215613713576137126147a3565b5b6000613721858286016135b4565b9250506020613732858286016135b4565b9150509250929050565b600080600060608486031215613755576137546147a3565b5b6000613763868287016135b4565b9350506020613774868287016135b4565b9250506040613785868287016136ba565b9150509250925092565b600080600080608085870312156137a9576137a86147a3565b5b60006137b7878288016135b4565b94505060206137c8878288016135b4565b93505060406137d9878288016136ba565b925050606085013567ffffffffffffffff8111156137fa576137f961479e565b5b6138068782880161365e565b91505092959194509250565b60008060408385031215613829576138286147a3565b5b6000613837858286016135b4565b92505060206138488582860161361f565b9150509250929050565b60008060408385031215613869576138686147a3565b5b6000613877858286016135b4565b9250506020613888858286016136ba565b9150509250929050565b600080602083850312156138a9576138a86147a3565b5b600083013567ffffffffffffffff8111156138c7576138c661479e565b5b6138d3858286016135c9565b92509250509250929050565b6000602082840312156138f5576138f46147a3565b5b60006139038482850161361f565b91505092915050565b600060208284031215613922576139216147a3565b5b600061393084828501613634565b91505092915050565b60006020828403121561394f5761394e6147a3565b5b600061395d84828501613649565b91505092915050565b60006020828403121561397c5761397b6147a3565b5b600082013567ffffffffffffffff81111561399a5761399961479e565b5b6139a68482850161368c565b91505092915050565b6000602082840312156139c5576139c46147a3565b5b60006139d3848285016136ba565b91505092915050565b6139e5816144dd565b82525050565b6139f4816144ef565b82525050565b6000613a058261437a565b613a0f8185614390565b9350613a1f818560208601614560565b613a28816147a8565b840191505092915050565b6000613a3e82614385565b613a4881856143ac565b9350613a58818560208601614560565b613a61816147a8565b840191505092915050565b6000613a7782614385565b613a8181856143bd565b9350613a91818560208601614560565b80840191505092915050565b60008154613aaa81614593565b613ab481866143bd565b94506001821660008114613acf5760018114613ae057613b13565b60ff19831686528186019350613b13565b613ae985614365565b60005b83811015613b0b57815481890152600182019150602081019050613aec565b838801955050505b50505092915050565b6000613b29602b836143ac565b9150613b34826147b9565b604082019050919050565b6000613b4c6032836143ac565b9150613b5782614808565b604082019050919050565b6000613b6f6016836143ac565b9150613b7a82614857565b602082019050919050565b6000613b926026836143ac565b9150613b9d82614880565b604082019050919050565b6000613bb5601c836143ac565b9150613bc0826148cf565b602082019050919050565b6000613bd86024836143ac565b9150613be3826148f8565b604082019050919050565b6000613bfb6019836143ac565b9150613c0682614947565b602082019050919050565b6000613c1e602c836143ac565b9150613c2982614970565b604082019050919050565b6000613c416024836143ac565b9150613c4c826149bf565b604082019050919050565b6000613c646012836143ac565b9150613c6f82614a0e565b602082019050919050565b6000613c876017836143ac565b9150613c9282614a37565b602082019050919050565b6000613caa6038836143ac565b9150613cb582614a60565b604082019050919050565b6000613ccd602a836143ac565b9150613cd882614aaf565b604082019050919050565b6000613cf06029836143ac565b9150613cfb82614afe565b604082019050919050565b6000613d136016836143ac565b9150613d1e82614b4d565b602082019050919050565b6000613d366020836143ac565b9150613d4182614b76565b602082019050919050565b6000613d59602c836143ac565b9150613d6482614b9f565b604082019050919050565b6000613d7c6020836143ac565b9150613d8782614bee565b602082019050919050565b6000613d9f6029836143ac565b9150613daa82614c17565b604082019050919050565b6000613dc2602f836143ac565b9150613dcd82614c66565b604082019050919050565b6000613de5601c836143ac565b9150613df082614cb5565b602082019050919050565b6000613e086021836143ac565b9150613e1382614cde565b604082019050919050565b6000613e2b6000836143a1565b9150613e3682614d2d565b600082019050919050565b6000613e4e6031836143ac565b9150613e5982614d30565b604082019050919050565b6000613e71602c836143ac565b9150613e7c82614d7f565b604082019050919050565b6000613e94601b836143ac565b9150613e9f82614dce565b602082019050919050565b613eb381614547565b82525050565b6000613ec58286613a6c565b9150613ed18285613a6c565b9150613edd8284613a9d565b9150819050949350505050565b6000613ef582613e1e565b9150819050919050565b6000602082019050613f1460008301846139dc565b92915050565b6000608082019050613f2f60008301876139dc565b613f3c60208301866139dc565b613f496040830185613eaa565b8181036060830152613f5b81846139fa565b905095945050505050565b6000602082019050613f7b60008301846139eb565b92915050565b60006020820190508181036000830152613f9b8184613a33565b905092915050565b60006020820190508181036000830152613fbc81613b1c565b9050919050565b60006020820190508181036000830152613fdc81613b3f565b9050919050565b60006020820190508181036000830152613ffc81613b62565b9050919050565b6000602082019050818103600083015261401c81613b85565b9050919050565b6000602082019050818103600083015261403c81613ba8565b9050919050565b6000602082019050818103600083015261405c81613bcb565b9050919050565b6000602082019050818103600083015261407c81613bee565b9050919050565b6000602082019050818103600083015261409c81613c11565b9050919050565b600060208201905081810360008301526140bc81613c34565b9050919050565b600060208201905081810360008301526140dc81613c57565b9050919050565b600060208201905081810360008301526140fc81613c7a565b9050919050565b6000602082019050818103600083015261411c81613c9d565b9050919050565b6000602082019050818103600083015261413c81613cc0565b9050919050565b6000602082019050818103600083015261415c81613ce3565b9050919050565b6000602082019050818103600083015261417c81613d06565b9050919050565b6000602082019050818103600083015261419c81613d29565b9050919050565b600060208201905081810360008301526141bc81613d4c565b9050919050565b600060208201905081810360008301526141dc81613d6f565b9050919050565b600060208201905081810360008301526141fc81613d92565b9050919050565b6000602082019050818103600083015261421c81613db5565b9050919050565b6000602082019050818103600083015261423c81613dd8565b9050919050565b6000602082019050818103600083015261425c81613dfb565b9050919050565b6000602082019050818103600083015261427c81613e41565b9050919050565b6000602082019050818103600083015261429c81613e64565b9050919050565b600060208201905081810360008301526142bc81613e87565b9050919050565b60006020820190506142d86000830184613eaa565b92915050565b60006142e86142f9565b90506142f482826145c5565b919050565b6000604051905090565b600067ffffffffffffffff82111561431e5761431d61475b565b5b614327826147a8565b9050602081019050919050565b600067ffffffffffffffff82111561434f5761434e61475b565b5b614358826147a8565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006143d382614547565b91506143de83614547565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561441357614412614670565b5b828201905092915050565b600061442982614547565b915061443483614547565b9250826144445761444361469f565b5b828204905092915050565b600061445a82614547565b915061446583614547565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561449e5761449d614670565b5b828202905092915050565b60006144b482614547565b91506144bf83614547565b9250828210156144d2576144d1614670565b5b828203905092915050565b60006144e882614527565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561457e578082015181840152602081019050614563565b8381111561458d576000848401525b50505050565b600060028204905060018216806145ab57607f821691505b602082108114156145bf576145be6146ce565b5b50919050565b6145ce826147a8565b810181811067ffffffffffffffff821117156145ed576145ec61475b565b5b80604052505050565b600061460182614547565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561463457614633614670565b5b600182019050919050565b600061464a82614547565b915061465583614547565b9250826146655761466461469f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f54686520636f6e74726163742069732070617573656400000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4d6178206d696e7420616d6f756e74207065722073657373696f6e206578636560008201527f6564656400000000000000000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742066756e64730000000000000000000000000000600082015250565b7f55736572206973206e6f742077686974656c6973746564000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4d6178204e4654206c696d697420657863656564656400000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4d6178204e465420706572206164647265737320657863656564656400000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4e65656420746f206d696e74206174206c656173742031204e46540000000000600082015250565b614e00816144dd565b8114614e0b57600080fd5b50565b614e17816144ef565b8114614e2257600080fd5b50565b614e2e816144fb565b8114614e3957600080fd5b50565b614e4581614547565b8114614e5057600080fd5b5056fea26469706673582212200e7f45af4dc9bc830443cbef13e94ba65f885e4835b1d2faa28b54744f1d296764736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000014536f6369657479206f662054686520446f6765730000000000000000000000000000000000000000000000000000000000000000000000000000000000000004534f544400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005368747470733a2f2f736f63696574796f66746865646f6765732e636f6d2f516d5a3667464c425133647a345774484d6f6d5a46395a70544570656d32756b553937413144504e5941704c74362f6a736f6e732f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000006368747470733a2f2f736f63696574796f66746865646f6765732e636f6d2f516d5a3667464c425133647a345774484d6f6d5a46395a70544570656d32756b553937413144504e5941704c74362f6a736f6e732f706c616365686f6c6465722e6a736f6e0000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Society of The Doges
Arg [1] : _symbol (string): SOTD
Arg [2] : _initBaseURI (string): https://societyofthedoges.com/QmZ6gFLBQ3dz4WtHMomZF9ZpTEpem2ukU97A1DPNYApLt6/jsons/
Arg [3] : _initNotRevealedUri (string): https://societyofthedoges.com/QmZ6gFLBQ3dz4WtHMomZF9ZpTEpem2ukU97A1DPNYApLt6/jsons/placeholder.json
-----Encoded View---------------
17 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [5] : 536f6369657479206f662054686520446f676573000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 534f544400000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000053
Arg [9] : 68747470733a2f2f736f63696574796f66746865646f6765732e636f6d2f516d
Arg [10] : 5a3667464c425133647a345774484d6f6d5a46395a70544570656d32756b5539
Arg [11] : 37413144504e5941704c74362f6a736f6e732f00000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000063
Arg [13] : 68747470733a2f2f736f63696574796f66746865646f6765732e636f6d2f516d
Arg [14] : 5a3667464c425133647a345774484d6f6d5a46395a70544570656d32756b5539
Arg [15] : 37413144504e5941704c74362f6a736f6e732f706c616365686f6c6465722e6a
Arg [16] : 736f6e0000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
44489:4490:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38266:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25760:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27319:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44637:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26842:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44670:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38906:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44967:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44743:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28069:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38574:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46389:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48046:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48337:639;;;:::i;:::-;;28479:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47352:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39096:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44853:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47605:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44822:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25454:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44569:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25184:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4730:103;;;;;;;;;;;;;:::i;:::-;;47464:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4079:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25929:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44886:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45418:942;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27612:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47122:63;;;;;;;;;;;;;:::i;:::-;;28735:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44925:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44780;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44595;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46652:451;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47225:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44707:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47734:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27838:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48171:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47891:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4988:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38266:224;38368:4;38407:35;38392:50;;;:11;:50;;;;:90;;;;38446:36;38470:11;38446:23;:36::i;:::-;38392:90;38385:97;;38266:224;;;:::o;25760:100::-;25814:13;25847:5;25840:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25760:100;:::o;27319:221::-;27395:7;27423:16;27431:7;27423;:16::i;:::-;27415:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27508:15;:24;27524:7;27508:24;;;;;;;;;;;;;;;;;;;;;27501:31;;27319:221;;;:::o;44637:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26842:411::-;26923:13;26939:23;26954:7;26939:14;:23::i;:::-;26923:39;;26987:5;26981:11;;:2;:11;;;;26973:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;27081:5;27065:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;27090:37;27107:5;27114:12;:10;:12::i;:::-;27090:16;:37::i;:::-;27065:62;27043:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;27224:21;27233:2;27237:7;27224:8;:21::i;:::-;26912:341;26842:411;;:::o;44670:32::-;;;;:::o;38906:113::-;38967:7;38994:10;:17;;;;38987:24;;38906:113;:::o;44967:55::-;;;;;;;;;;;;;;;;;:::o;44743:32::-;;;;:::o;28069:339::-;28264:41;28283:12;:10;:12::i;:::-;28297:7;28264:18;:41::i;:::-;28256:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;28372:28;28382:4;28388:2;28392:7;28372:9;:28::i;:::-;28069:339;;;:::o;38574:256::-;38671:7;38707:23;38724:5;38707:16;:23::i;:::-;38699:5;:31;38691:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;38796:12;:19;38809:5;38796:19;;;;;;;;;;;;;;;:26;38816:5;38796:26;;;;;;;;;;;;38789:33;;38574:256;;;;:::o;46389:241::-;46448:4;46466:6;46475:1;46466:10;;46461:143;46482:20;:27;;;;46478:1;:31;46461:143;;;46556:5;46529:32;;:20;46550:1;46529:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:32;;;46525:72;;;46583:4;46576:11;;;;;46525:72;46511:3;;;;;:::i;:::-;;;;46461:143;;;;46619:5;46612:12;;46389:241;;;;:::o;48046:95::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48129:6:::1;48111:15;;:24;;;;;;;;;;;;;;;;;;48046:95:::0;:::o;48337:639::-;48379:23;48405:21;48379:47;;48493:8;48515:42;48507:56;;48594:3;48589:2;48571:15;:20;;;;:::i;:::-;:26;;;;:::i;:::-;48507:95;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48492:110;;;48617:3;48609:12;;;;;;48687:8;48709:42;48701:56;;48788:3;48783:2;48765:15;:20;;;;:::i;:::-;:26;;;;:::i;:::-;48701:95;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48686:110;;;48811:3;48803:12;;;;;;48882:8;48904:7;:5;:7::i;:::-;48896:21;;48925;48896:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48881:70;;;48966:3;48958:12;;;;;;48372:604;;;;48337:639::o;28479:185::-;28617:39;28634:4;28640:2;28644:7;28617:39;;;;;;;;;;;;:16;:39::i;:::-;28479:185;;;:::o;47352:80::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47418:8:::1;47411:4;:15;;;;47352:80:::0;:::o;39096:233::-;39171:7;39207:30;:28;:30::i;:::-;39199:5;:38;39191:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;39304:10;39315:5;39304:17;;;;;;;;:::i;:::-;;;;;;;;;;39297:24;;39096:233;;;:::o;44853:28::-;;;;;;;;;;;;;:::o;47605:98::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47686:11:::1;47676:7;:21;;;;;;;;;;;;:::i;:::-;;47605:98:::0;:::o;44822:26::-;;;;;;;;;;;;;:::o;25454:239::-;25526:7;25546:13;25562:7;:16;25570:7;25562:16;;;;;;;;;;;;;;;;;;;;;25546:32;;25614:1;25597:19;;:5;:19;;;;25589:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25680:5;25673:12;;;25454:239;;;:::o;44569:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25184:208::-;25256:7;25301:1;25284:19;;:5;:19;;;;25276:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25368:9;:16;25378:5;25368:16;;;;;;;;;;;;;;;;25361:23;;25184: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;47464:116::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47557:17:::1;47541:13;:33;;;;47464:116:::0;:::o;4079:87::-;4125:7;4152:6;;;;;;;;;;;4145:13;;4079:87;:::o;25929:104::-;25985:13;26018:7;26011:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25929:104;:::o;44886:34::-;;;;;;;;;;;;;:::o;45418:942::-;45484:6;;;;;;;;;;;45483:7;45475:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;45524:14;45541:13;:11;:13::i;:::-;45524:30;;45583:1;45569:11;:15;45561:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;45646:13;;45631:11;:28;;45623:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;45739:9;;45724:11;45715:6;:20;;;;:::i;:::-;:33;;45707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45802:7;:5;:7::i;:::-;45788:21;;:10;:21;;;45784:404;;45842:4;45823:23;;:15;;;;;;;;;;;:23;;;45820:110;;;45867:25;45881:10;45867:13;:25::i;:::-;45859:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;45820:110;45940:24;45967:20;:32;45988:10;45967:32;;;;;;;;;;;;;;;;45940:59;;46050:18;;46035:11;46016:16;:30;;;;:::i;:::-;:52;;46008:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;46146:11;46139:4;;:18;;;;:::i;:::-;46126:9;:31;;46118:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;45811:377;45784:404;46205:9;46217:1;46205:13;;46200:136;46225:11;46220:1;:16;46200:136;;46252:20;:32;46273:10;46252:32;;;;;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;46295:33;46305:10;46326:1;46317:6;:10;;;;:::i;:::-;46295:9;:33::i;:::-;46238:3;;;;;:::i;:::-;;;;46200:136;;;;46344:10;:8;:10::i;:::-;45468:892;45418:942;:::o;27612:155::-;27707:52;27726:12;:10;:12::i;:::-;27740:8;27750;27707:18;:52::i;:::-;27612:155;;:::o;47122:63::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47175:4:::1;47164:8;;:15;;;;;;;;;;;;;;;;;;47122:63::o:0;28735:328::-;28910:41;28929:12;:10;:12::i;:::-;28943:7;28910:18;:41::i;:::-;28902:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;29016:39;29030:4;29036:2;29040:7;29049:5;29016:13;:39::i;:::-;28735:328;;;;:::o;44925:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;44780:::-;;;;:::o;44595:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;46652:451::-;46725:13;46763:16;46771:7;46763;:16::i;:::-;46747:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;46872:5;46860:17;;:8;;;;;;;;;;;:17;;;46857:62;;;46897:14;46890:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46857:62;46927:28;46958:10;:8;:10::i;:::-;46927:41;;47013:1;46988:14;46982:28;:32;:115;;;;;;;;;;;;;;;;;47041:14;47057:18;:7;:16;:18::i;:::-;47077:13;47024:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;46982:115;46975:122;;;46652:451;;;;:::o;47225:104::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47317:6:::1;47296:18;:27;;;;47225:104:::0;:::o;44707:31::-;;;;:::o;47734:122::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47833:17:::1;47817:13;:33;;;;;;;;;;;;:::i;:::-;;47734:122:::0;:::o;27838:164::-;27935:4;27959:18;:25;27978:5;27959:25;;;;;;;;;;;;;;;:35;27985:8;27959:35;;;;;;;;;;;;;;;;;;;;;;;;;27952:42;;27838:164;;;;:::o;48171:144::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48253:20:::1;;48246:27;;;;:::i;:::-;48303:6;;48280:20;:29;;;;;;;:::i;:::-;;48171:144:::0;;:::o;47891:120::-;4310:12;:10;:12::i;:::-;4299:23;;:7;:5;:7::i;:::-;:23;;;4291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47990:15:::1;47973:14;:32;;;;;;;;;;;;:::i;:::-;;47891:120:::0;:::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;;;;5069:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5153:28;5172:8;5153:18;:28::i;:::-;4988:201:::0;:::o;24815:305::-;24917:4;24969:25;24954:40;;;:11;:40;;;;:105;;;;25026:33;25011:48;;;:11;:48;;;;24954:105;:158;;;;25076:36;25100:11;25076:23;:36::i;:::-;24954:158;24934:178;;24815:305;;;:::o;30573:127::-;30638:4;30690:1;30662:30;;:7;:16;30670:7;30662:16;;;;;;;;;;;;;;;;;;;;;:30;;;;30655:37;;30573:127;;;:::o;2803:98::-;2856:7;2883:10;2876:17;;2803:98;:::o;34555:174::-;34657:2;34630:15;:24;34646:7;34630:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;34713:7;34709:2;34675:46;;34684:23;34699:7;34684:14;:23::i;:::-;34675:46;;;;;;;;;;;;34555:174;;:::o;30867:348::-;30960:4;30985:16;30993:7;30985;:16::i;:::-;30977:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31061:13;31077:23;31092:7;31077:14;:23::i;:::-;31061:39;;31130:5;31119:16;;:7;:16;;;:51;;;;31163:7;31139:31;;:20;31151:7;31139:11;:20::i;:::-;:31;;;31119:51;:87;;;;31174:32;31191:5;31198:7;31174:16;:32::i;:::-;31119:87;31111:96;;;30867:348;;;;:::o;33859:578::-;34018:4;33991:31;;:23;34006:7;33991:14;:23::i;:::-;:31;;;33983:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;34101:1;34087:16;;:2;:16;;;;34079:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;34157:39;34178:4;34184:2;34188:7;34157:20;:39::i;:::-;34261:29;34278:1;34282:7;34261:8;:29::i;:::-;34322:1;34303:9;:15;34313:4;34303:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;34351:1;34334:9;:13;34344:2;34334:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;34382:2;34363:7;:16;34371:7;34363:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;34421:7;34417:2;34402:27;;34411:4;34402:27;;;;;;;;;;;;33859:578;;;:::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;31557:110::-;31633:26;31643:2;31647:7;31633:26;;;;;;;;;;;;:9;:26::i;:::-;31557:110;;:::o;34871:315::-;35026:8;35017:17;;:5;:17;;;;35009:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;35113:8;35075:18;:25;35094:5;35075:25;;;;;;;;;;;;;;;:35;35101:8;35075:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35159:8;35137:41;;35152:5;35137:41;;;35169:8;35137:41;;;;;;:::i;:::-;;;;;;;;34871:315;;;:::o;29945:::-;30102:28;30112:4;30118:2;30122:7;30102:9;:28::i;:::-;30149:48;30172:4;30178:2;30182:7;30191:5;30149:22;:48::i;:::-;30141:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;29945:315;;;;:::o;45299:102::-;45359:13;45388:7;45381:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45299:102;:::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;16511:157::-;16596:4;16635:25;16620:40;;;:11;:40;;;;16613:47;;16511:157;;;:::o;39942:589::-;40086:45;40113:4;40119:2;40123:7;40086:26;:45::i;:::-;40164:1;40148:18;;:4;:18;;;40144:187;;;40183:40;40215:7;40183:31;:40::i;:::-;40144:187;;;40253:2;40245:10;;:4;:10;;;40241:90;;40272:47;40305:4;40311:7;40272:32;:47::i;:::-;40241:90;40144:187;40359:1;40345:16;;:2;:16;;;40341:183;;;40378:45;40415:7;40378:36;:45::i;:::-;40341:183;;;40451:4;40445:10;;:2;:10;;;40441:83;;40472:40;40500:2;40504:7;40472:27;:40::i;:::-;40441:83;40341:183;39942:589;;;:::o;31894:321::-;32024:18;32030:2;32034:7;32024:5;:18::i;:::-;32075:54;32106:1;32110:2;32114:7;32123:5;32075:22;:54::i;:::-;32053:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;31894:321;;;:::o;35751:799::-;35906:4;35927:15;:2;:13;;;:15::i;:::-;35923:620;;;35979:2;35963:36;;;36000:12;:10;:12::i;:::-;36014:4;36020:7;36029:5;35963:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35959:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36222:1;36205:6;:13;:18;36201:272;;;36248:60;;;;;;;;;;:::i;:::-;;;;;;;;36201:272;36423:6;36417:13;36408:6;36404:2;36400:15;36393:38;35959:529;36096:41;;;36086:51;;;:6;:51;;;;36079:58;;;;;35923:620;36527:4;36520:11;;35751:799;;;;;;;:::o;37122:126::-;;;;:::o;41254:164::-;41358:10;:17;;;;41331:15;:24;41347:7;41331:24;;;;;;;;;;;:44;;;;41386:10;41402:7;41386:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41254:164;:::o;42045:988::-;42311:22;42361:1;42336:22;42353:4;42336:16;:22::i;:::-;:26;;;;:::i;:::-;42311:51;;42373:18;42394:17;:26;42412:7;42394:26;;;;;;;;;;;;42373:47;;42541:14;42527:10;:28;42523:328;;42572:19;42594:12;:18;42607:4;42594:18;;;;;;;;;;;;;;;:34;42613:14;42594:34;;;;;;;;;;;;42572:56;;42678:11;42645:12;:18;42658:4;42645:18;;;;;;;;;;;;;;;:30;42664:10;42645:30;;;;;;;;;;;:44;;;;42795:10;42762:17;:30;42780:11;42762:30;;;;;;;;;;;:43;;;;42557:294;42523:328;42947:17;:26;42965:7;42947:26;;;;;;;;;;;42940:33;;;42991:12;:18;43004:4;42991:18;;;;;;;;;;;;;;;:34;43010:14;42991:34;;;;;;;;;;;42984:41;;;42126:907;;42045:988;;:::o;43328:1079::-;43581:22;43626:1;43606:10;:17;;;;:21;;;;:::i;:::-;43581:46;;43638:18;43659:15;:24;43675:7;43659:24;;;;;;;;;;;;43638:45;;44010:19;44032:10;44043:14;44032:26;;;;;;;;:::i;:::-;;;;;;;;;;44010:48;;44096:11;44071:10;44082;44071:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;44207:10;44176:15;:28;44192:11;44176:28;;;;;;;;;;;:41;;;;44348:15;:24;44364:7;44348:24;;;;;;;;;;;44341:31;;;44383:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;43399:1008;;;43328:1079;:::o;40832:221::-;40917:14;40934:20;40951:2;40934:16;:20::i;:::-;40917:37;;40992:7;40965:12;:16;40978:2;40965:16;;;;;;;;;;;;;;;:24;40982:6;40965:24;;;;;;;;;;;:34;;;;41039:6;41010:17;:26;41028:7;41010:26;;;;;;;;;;;:35;;;;40906:147;40832:221;;:::o;32551:382::-;32645:1;32631:16;;:2;:16;;;;32623:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;32704:16;32712:7;32704;:16::i;:::-;32703:17;32695:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;32766:45;32795:1;32799:2;32803:7;32766:20;:45::i;:::-;32841:1;32824:9;:13;32834:2;32824:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;32872:2;32853:7;:16;32861:7;32853:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;32917:7;32913:2;32892:33;;32909:1;32892:33;;;;;;;;;;;;32551:382;;:::o;6367:387::-;6427:4;6635:12;6702:7;6690:20;6682:28;;6745:1;6738:4;:8;6731:15;;;6367:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;1003:568::-;1076:8;1086:6;1136:3;1129:4;1121:6;1117:17;1113:27;1103:122;;1144:79;;:::i;:::-;1103:122;1257:6;1244:20;1234:30;;1287:18;1279:6;1276:30;1273:117;;;1309:79;;:::i;:::-;1273:117;1423:4;1415:6;1411:17;1399:29;;1477:3;1469:4;1461:6;1457:17;1447:8;1443:32;1440:41;1437:128;;;1484:79;;:::i;:::-;1437:128;1003:568;;;;;:::o;1577:133::-;1620:5;1658:6;1645:20;1636:29;;1674:30;1698:5;1674:30;:::i;:::-;1577:133;;;;:::o;1716:137::-;1761:5;1799:6;1786:20;1777:29;;1815:32;1841:5;1815:32;:::i;:::-;1716:137;;;;:::o;1859:141::-;1915:5;1946:6;1940:13;1931:22;;1962:32;1988:5;1962:32;:::i;:::-;1859:141;;;;:::o;2019:338::-;2074:5;2123:3;2116:4;2108:6;2104:17;2100:27;2090:122;;2131:79;;:::i;:::-;2090:122;2248:6;2235:20;2273:78;2347:3;2339:6;2332:4;2324:6;2320:17;2273:78;:::i;:::-;2264:87;;2080:277;2019:338;;;;:::o;2377:340::-;2433:5;2482:3;2475:4;2467:6;2463:17;2459:27;2449:122;;2490:79;;:::i;:::-;2449:122;2607:6;2594:20;2632:79;2707:3;2699:6;2692:4;2684:6;2680:17;2632:79;:::i;:::-;2623:88;;2439:278;2377:340;;;;:::o;2723:139::-;2769:5;2807:6;2794:20;2785:29;;2823:33;2850:5;2823:33;:::i;:::-;2723:139;;;;:::o;2868:329::-;2927:6;2976:2;2964:9;2955:7;2951:23;2947:32;2944:119;;;2982:79;;:::i;:::-;2944:119;3102:1;3127:53;3172:7;3163:6;3152:9;3148:22;3127:53;:::i;:::-;3117:63;;3073:117;2868:329;;;;:::o;3203:474::-;3271:6;3279;3328:2;3316:9;3307:7;3303:23;3299:32;3296:119;;;3334:79;;:::i;:::-;3296:119;3454:1;3479:53;3524:7;3515:6;3504:9;3500:22;3479:53;:::i;:::-;3469:63;;3425:117;3581:2;3607:53;3652:7;3643:6;3632:9;3628:22;3607:53;:::i;:::-;3597:63;;3552:118;3203:474;;;;;:::o;3683:619::-;3760:6;3768;3776;3825:2;3813:9;3804:7;3800:23;3796:32;3793:119;;;3831:79;;:::i;:::-;3793:119;3951:1;3976:53;4021:7;4012:6;4001:9;3997:22;3976:53;:::i;:::-;3966:63;;3922:117;4078:2;4104:53;4149:7;4140:6;4129:9;4125:22;4104:53;:::i;:::-;4094:63;;4049:118;4206:2;4232:53;4277:7;4268:6;4257:9;4253:22;4232:53;:::i;:::-;4222:63;;4177:118;3683:619;;;;;:::o;4308:943::-;4403:6;4411;4419;4427;4476:3;4464:9;4455:7;4451:23;4447:33;4444:120;;;4483:79;;:::i;:::-;4444:120;4603:1;4628:53;4673:7;4664:6;4653:9;4649:22;4628:53;:::i;:::-;4618:63;;4574:117;4730:2;4756:53;4801:7;4792:6;4781:9;4777:22;4756:53;:::i;:::-;4746:63;;4701:118;4858:2;4884:53;4929:7;4920:6;4909:9;4905:22;4884:53;:::i;:::-;4874:63;;4829:118;5014:2;5003:9;4999:18;4986:32;5045:18;5037:6;5034:30;5031:117;;;5067:79;;:::i;:::-;5031:117;5172:62;5226:7;5217:6;5206:9;5202:22;5172:62;:::i;:::-;5162:72;;4957:287;4308:943;;;;;;;:::o;5257:468::-;5322:6;5330;5379:2;5367:9;5358:7;5354:23;5350:32;5347:119;;;5385:79;;:::i;:::-;5347:119;5505:1;5530:53;5575:7;5566:6;5555:9;5551:22;5530:53;:::i;:::-;5520:63;;5476:117;5632:2;5658:50;5700:7;5691:6;5680:9;5676:22;5658:50;:::i;:::-;5648:60;;5603:115;5257:468;;;;;:::o;5731:474::-;5799:6;5807;5856:2;5844:9;5835:7;5831:23;5827:32;5824:119;;;5862:79;;:::i;:::-;5824:119;5982:1;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5953:117;6109:2;6135:53;6180:7;6171:6;6160:9;6156:22;6135:53;:::i;:::-;6125:63;;6080:118;5731:474;;;;;:::o;6211:559::-;6297:6;6305;6354:2;6342:9;6333:7;6329:23;6325:32;6322:119;;;6360:79;;:::i;:::-;6322:119;6508:1;6497:9;6493:17;6480:31;6538:18;6530:6;6527:30;6524:117;;;6560:79;;:::i;:::-;6524:117;6673:80;6745:7;6736:6;6725:9;6721:22;6673:80;:::i;:::-;6655:98;;;;6451:312;6211:559;;;;;:::o;6776:323::-;6832:6;6881:2;6869:9;6860:7;6856:23;6852:32;6849:119;;;6887:79;;:::i;:::-;6849:119;7007:1;7032:50;7074:7;7065:6;7054:9;7050:22;7032:50;:::i;:::-;7022:60;;6978:114;6776:323;;;;:::o;7105:327::-;7163:6;7212:2;7200:9;7191:7;7187:23;7183:32;7180:119;;;7218:79;;:::i;:::-;7180:119;7338:1;7363:52;7407:7;7398:6;7387:9;7383:22;7363:52;:::i;:::-;7353:62;;7309:116;7105:327;;;;:::o;7438:349::-;7507:6;7556:2;7544:9;7535:7;7531:23;7527:32;7524:119;;;7562:79;;:::i;:::-;7524:119;7682:1;7707:63;7762:7;7753:6;7742:9;7738:22;7707:63;:::i;:::-;7697:73;;7653:127;7438:349;;;;:::o;7793:509::-;7862:6;7911:2;7899:9;7890:7;7886:23;7882:32;7879:119;;;7917:79;;:::i;:::-;7879:119;8065:1;8054:9;8050:17;8037:31;8095:18;8087:6;8084:30;8081:117;;;8117:79;;:::i;:::-;8081:117;8222:63;8277:7;8268:6;8257:9;8253:22;8222:63;:::i;:::-;8212:73;;8008:287;7793:509;;;;:::o;8308:329::-;8367:6;8416:2;8404:9;8395:7;8391:23;8387:32;8384:119;;;8422:79;;:::i;:::-;8384:119;8542:1;8567:53;8612:7;8603:6;8592:9;8588:22;8567:53;:::i;:::-;8557:63;;8513:117;8308:329;;;;:::o;8643:118::-;8730:24;8748:5;8730:24;:::i;:::-;8725:3;8718:37;8643:118;;:::o;8767:109::-;8848:21;8863:5;8848:21;:::i;:::-;8843:3;8836:34;8767:109;;:::o;8882:360::-;8968:3;8996:38;9028:5;8996:38;:::i;:::-;9050:70;9113:6;9108:3;9050:70;:::i;:::-;9043:77;;9129:52;9174:6;9169:3;9162:4;9155:5;9151:16;9129:52;:::i;:::-;9206:29;9228:6;9206:29;:::i;:::-;9201:3;9197:39;9190:46;;8972:270;8882:360;;;;:::o;9248:364::-;9336:3;9364:39;9397:5;9364:39;:::i;:::-;9419:71;9483:6;9478:3;9419:71;:::i;:::-;9412:78;;9499:52;9544:6;9539:3;9532:4;9525:5;9521:16;9499:52;:::i;:::-;9576:29;9598:6;9576:29;:::i;:::-;9571:3;9567:39;9560:46;;9340:272;9248:364;;;;:::o;9618:377::-;9724:3;9752:39;9785:5;9752:39;:::i;:::-;9807:89;9889:6;9884:3;9807:89;:::i;:::-;9800:96;;9905:52;9950:6;9945:3;9938:4;9931:5;9927:16;9905:52;:::i;:::-;9982:6;9977:3;9973:16;9966:23;;9728:267;9618:377;;;;:::o;10025:845::-;10128:3;10165:5;10159:12;10194:36;10220:9;10194:36;:::i;:::-;10246:89;10328:6;10323:3;10246:89;:::i;:::-;10239:96;;10366:1;10355:9;10351:17;10382:1;10377:137;;;;10528:1;10523:341;;;;10344:520;;10377:137;10461:4;10457:9;10446;10442:25;10437:3;10430:38;10497:6;10492:3;10488:16;10481:23;;10377:137;;10523:341;10590:38;10622:5;10590:38;:::i;:::-;10650:1;10664:154;10678:6;10675:1;10672:13;10664:154;;;10752:7;10746:14;10742:1;10737:3;10733:11;10726:35;10802:1;10793:7;10789:15;10778:26;;10700:4;10697:1;10693:12;10688:17;;10664:154;;;10847:6;10842:3;10838:16;10831:23;;10530:334;;10344:520;;10132:738;;10025:845;;;;:::o;10876:366::-;11018:3;11039:67;11103:2;11098:3;11039:67;:::i;:::-;11032:74;;11115:93;11204:3;11115:93;:::i;:::-;11233:2;11228:3;11224:12;11217:19;;10876:366;;;:::o;11248:::-;11390:3;11411:67;11475:2;11470:3;11411:67;:::i;:::-;11404:74;;11487:93;11576:3;11487:93;:::i;:::-;11605:2;11600:3;11596:12;11589:19;;11248:366;;;:::o;11620:::-;11762:3;11783:67;11847:2;11842:3;11783:67;:::i;:::-;11776:74;;11859:93;11948:3;11859:93;:::i;:::-;11977:2;11972:3;11968:12;11961:19;;11620:366;;;:::o;11992:::-;12134:3;12155:67;12219:2;12214:3;12155:67;:::i;:::-;12148:74;;12231:93;12320:3;12231:93;:::i;:::-;12349:2;12344:3;12340:12;12333:19;;11992:366;;;:::o;12364:::-;12506:3;12527:67;12591:2;12586:3;12527:67;:::i;:::-;12520:74;;12603:93;12692:3;12603:93;:::i;:::-;12721:2;12716:3;12712:12;12705:19;;12364:366;;;:::o;12736:::-;12878:3;12899:67;12963:2;12958:3;12899:67;:::i;:::-;12892:74;;12975:93;13064:3;12975:93;:::i;:::-;13093:2;13088:3;13084:12;13077:19;;12736:366;;;:::o;13108:::-;13250:3;13271:67;13335:2;13330:3;13271:67;:::i;:::-;13264:74;;13347:93;13436:3;13347:93;:::i;:::-;13465:2;13460:3;13456:12;13449:19;;13108:366;;;:::o;13480:::-;13622:3;13643:67;13707:2;13702:3;13643:67;:::i;:::-;13636:74;;13719:93;13808:3;13719:93;:::i;:::-;13837:2;13832:3;13828:12;13821:19;;13480:366;;;:::o;13852:::-;13994:3;14015:67;14079:2;14074:3;14015:67;:::i;:::-;14008:74;;14091:93;14180:3;14091:93;:::i;:::-;14209:2;14204:3;14200:12;14193:19;;13852:366;;;:::o;14224:::-;14366:3;14387:67;14451:2;14446:3;14387:67;:::i;:::-;14380:74;;14463:93;14552:3;14463:93;:::i;:::-;14581:2;14576:3;14572:12;14565:19;;14224:366;;;:::o;14596:::-;14738:3;14759:67;14823:2;14818:3;14759:67;:::i;:::-;14752:74;;14835:93;14924:3;14835:93;:::i;:::-;14953:2;14948:3;14944:12;14937:19;;14596:366;;;:::o;14968:::-;15110:3;15131:67;15195:2;15190:3;15131:67;:::i;:::-;15124:74;;15207:93;15296:3;15207:93;:::i;:::-;15325:2;15320:3;15316:12;15309:19;;14968:366;;;:::o;15340:::-;15482:3;15503:67;15567:2;15562:3;15503:67;:::i;:::-;15496:74;;15579:93;15668:3;15579:93;:::i;:::-;15697:2;15692:3;15688:12;15681:19;;15340:366;;;:::o;15712:::-;15854:3;15875:67;15939:2;15934:3;15875:67;:::i;:::-;15868:74;;15951:93;16040:3;15951:93;:::i;:::-;16069:2;16064:3;16060:12;16053:19;;15712:366;;;:::o;16084:::-;16226:3;16247:67;16311:2;16306:3;16247:67;:::i;:::-;16240:74;;16323:93;16412:3;16323:93;:::i;:::-;16441:2;16436:3;16432:12;16425:19;;16084:366;;;:::o;16456:::-;16598:3;16619:67;16683:2;16678:3;16619:67;:::i;:::-;16612:74;;16695:93;16784:3;16695:93;:::i;:::-;16813:2;16808:3;16804:12;16797:19;;16456:366;;;:::o;16828:::-;16970:3;16991:67;17055:2;17050:3;16991:67;:::i;:::-;16984:74;;17067:93;17156:3;17067:93;:::i;:::-;17185:2;17180:3;17176:12;17169:19;;16828:366;;;:::o;17200:::-;17342:3;17363:67;17427:2;17422:3;17363:67;:::i;:::-;17356:74;;17439:93;17528:3;17439:93;:::i;:::-;17557:2;17552:3;17548:12;17541:19;;17200:366;;;:::o;17572:::-;17714:3;17735:67;17799:2;17794:3;17735:67;:::i;:::-;17728:74;;17811:93;17900:3;17811:93;:::i;:::-;17929:2;17924:3;17920:12;17913:19;;17572:366;;;:::o;17944:::-;18086:3;18107:67;18171:2;18166:3;18107:67;:::i;:::-;18100:74;;18183:93;18272:3;18183:93;:::i;:::-;18301:2;18296:3;18292:12;18285:19;;17944:366;;;:::o;18316:::-;18458:3;18479:67;18543:2;18538:3;18479:67;:::i;:::-;18472:74;;18555:93;18644:3;18555:93;:::i;:::-;18673:2;18668:3;18664:12;18657:19;;18316:366;;;:::o;18688:::-;18830:3;18851:67;18915:2;18910:3;18851:67;:::i;:::-;18844:74;;18927:93;19016:3;18927:93;:::i;:::-;19045:2;19040:3;19036:12;19029:19;;18688:366;;;:::o;19060:398::-;19219:3;19240:83;19321:1;19316:3;19240:83;:::i;:::-;19233:90;;19332:93;19421:3;19332:93;:::i;:::-;19450:1;19445:3;19441:11;19434:18;;19060:398;;;:::o;19464:366::-;19606:3;19627:67;19691:2;19686:3;19627:67;:::i;:::-;19620:74;;19703:93;19792:3;19703:93;:::i;:::-;19821:2;19816:3;19812:12;19805:19;;19464:366;;;:::o;19836:::-;19978:3;19999:67;20063:2;20058:3;19999:67;:::i;:::-;19992:74;;20075:93;20164:3;20075:93;:::i;:::-;20193:2;20188:3;20184:12;20177:19;;19836:366;;;:::o;20208:::-;20350:3;20371:67;20435:2;20430:3;20371:67;:::i;:::-;20364:74;;20447:93;20536:3;20447:93;:::i;:::-;20565:2;20560:3;20556:12;20549:19;;20208:366;;;:::o;20580:118::-;20667:24;20685:5;20667:24;:::i;:::-;20662:3;20655:37;20580:118;;:::o;20704:589::-;20929:3;20951:95;21042:3;21033:6;20951:95;:::i;:::-;20944:102;;21063:95;21154:3;21145:6;21063:95;:::i;:::-;21056:102;;21175:92;21263:3;21254:6;21175:92;:::i;:::-;21168:99;;21284:3;21277:10;;20704:589;;;;;;:::o;21299:379::-;21483:3;21505:147;21648:3;21505:147;:::i;:::-;21498:154;;21669:3;21662:10;;21299:379;;;:::o;21684:222::-;21777:4;21815:2;21804:9;21800:18;21792:26;;21828:71;21896:1;21885:9;21881:17;21872:6;21828:71;:::i;:::-;21684:222;;;;:::o;21912:640::-;22107:4;22145:3;22134:9;22130:19;22122:27;;22159:71;22227:1;22216:9;22212:17;22203:6;22159:71;:::i;:::-;22240:72;22308:2;22297:9;22293:18;22284:6;22240:72;:::i;:::-;22322;22390:2;22379:9;22375:18;22366:6;22322:72;:::i;:::-;22441:9;22435:4;22431:20;22426:2;22415:9;22411:18;22404:48;22469:76;22540:4;22531:6;22469:76;:::i;:::-;22461:84;;21912:640;;;;;;;:::o;22558:210::-;22645:4;22683:2;22672:9;22668:18;22660:26;;22696:65;22758:1;22747:9;22743:17;22734:6;22696:65;:::i;:::-;22558:210;;;;:::o;22774:313::-;22887:4;22925:2;22914:9;22910:18;22902:26;;22974:9;22968:4;22964:20;22960:1;22949:9;22945:17;22938:47;23002:78;23075:4;23066:6;23002:78;:::i;:::-;22994:86;;22774:313;;;;:::o;23093:419::-;23259:4;23297:2;23286:9;23282:18;23274:26;;23346:9;23340:4;23336:20;23332:1;23321:9;23317:17;23310:47;23374:131;23500:4;23374:131;:::i;:::-;23366:139;;23093:419;;;:::o;23518:::-;23684:4;23722:2;23711:9;23707:18;23699:26;;23771:9;23765:4;23761:20;23757:1;23746:9;23742:17;23735:47;23799:131;23925:4;23799:131;:::i;:::-;23791:139;;23518:419;;;:::o;23943:::-;24109:4;24147:2;24136:9;24132:18;24124:26;;24196:9;24190:4;24186:20;24182:1;24171:9;24167:17;24160:47;24224:131;24350:4;24224:131;:::i;:::-;24216:139;;23943:419;;;:::o;24368:::-;24534:4;24572:2;24561:9;24557:18;24549:26;;24621:9;24615:4;24611:20;24607:1;24596:9;24592:17;24585:47;24649:131;24775:4;24649:131;:::i;:::-;24641:139;;24368:419;;;:::o;24793:::-;24959:4;24997:2;24986:9;24982:18;24974:26;;25046:9;25040:4;25036:20;25032:1;25021:9;25017:17;25010:47;25074:131;25200:4;25074:131;:::i;:::-;25066:139;;24793:419;;;:::o;25218:::-;25384:4;25422:2;25411:9;25407:18;25399:26;;25471:9;25465:4;25461:20;25457:1;25446:9;25442:17;25435:47;25499:131;25625:4;25499:131;:::i;:::-;25491:139;;25218:419;;;:::o;25643:::-;25809:4;25847:2;25836:9;25832:18;25824:26;;25896:9;25890:4;25886:20;25882:1;25871:9;25867:17;25860:47;25924:131;26050:4;25924:131;:::i;:::-;25916:139;;25643:419;;;:::o;26068:::-;26234:4;26272:2;26261:9;26257:18;26249:26;;26321:9;26315:4;26311:20;26307:1;26296:9;26292:17;26285:47;26349:131;26475:4;26349:131;:::i;:::-;26341:139;;26068:419;;;:::o;26493:::-;26659:4;26697:2;26686:9;26682:18;26674:26;;26746:9;26740:4;26736:20;26732:1;26721:9;26717:17;26710:47;26774:131;26900:4;26774:131;:::i;:::-;26766:139;;26493:419;;;:::o;26918:::-;27084:4;27122:2;27111:9;27107:18;27099:26;;27171:9;27165:4;27161:20;27157:1;27146:9;27142:17;27135:47;27199:131;27325:4;27199:131;:::i;:::-;27191:139;;26918:419;;;:::o;27343:::-;27509:4;27547:2;27536:9;27532:18;27524:26;;27596:9;27590:4;27586:20;27582:1;27571:9;27567:17;27560:47;27624:131;27750:4;27624:131;:::i;:::-;27616:139;;27343:419;;;:::o;27768:::-;27934:4;27972:2;27961:9;27957:18;27949:26;;28021:9;28015:4;28011:20;28007:1;27996:9;27992:17;27985:47;28049:131;28175:4;28049:131;:::i;:::-;28041:139;;27768:419;;;:::o;28193:::-;28359:4;28397:2;28386:9;28382:18;28374:26;;28446:9;28440:4;28436:20;28432:1;28421:9;28417:17;28410:47;28474:131;28600:4;28474:131;:::i;:::-;28466:139;;28193:419;;;:::o;28618:::-;28784:4;28822:2;28811:9;28807:18;28799:26;;28871:9;28865:4;28861:20;28857:1;28846:9;28842:17;28835:47;28899:131;29025:4;28899:131;:::i;:::-;28891:139;;28618:419;;;:::o;29043:::-;29209:4;29247:2;29236:9;29232:18;29224:26;;29296:9;29290:4;29286:20;29282:1;29271:9;29267:17;29260:47;29324:131;29450:4;29324:131;:::i;:::-;29316:139;;29043:419;;;:::o;29468:::-;29634:4;29672:2;29661:9;29657:18;29649:26;;29721:9;29715:4;29711:20;29707:1;29696:9;29692:17;29685:47;29749:131;29875:4;29749:131;:::i;:::-;29741:139;;29468:419;;;:::o;29893:::-;30059:4;30097:2;30086:9;30082:18;30074:26;;30146:9;30140:4;30136:20;30132:1;30121:9;30117:17;30110:47;30174:131;30300:4;30174:131;:::i;:::-;30166:139;;29893:419;;;:::o;30318:::-;30484:4;30522:2;30511:9;30507:18;30499:26;;30571:9;30565:4;30561:20;30557:1;30546:9;30542:17;30535:47;30599:131;30725:4;30599:131;:::i;:::-;30591:139;;30318:419;;;:::o;30743:::-;30909:4;30947:2;30936:9;30932:18;30924:26;;30996:9;30990:4;30986:20;30982:1;30971:9;30967:17;30960:47;31024:131;31150:4;31024:131;:::i;:::-;31016:139;;30743:419;;;:::o;31168:::-;31334:4;31372:2;31361:9;31357:18;31349:26;;31421:9;31415:4;31411:20;31407:1;31396:9;31392:17;31385:47;31449:131;31575:4;31449:131;:::i;:::-;31441:139;;31168:419;;;:::o;31593:::-;31759:4;31797:2;31786:9;31782:18;31774:26;;31846:9;31840:4;31836:20;31832:1;31821:9;31817:17;31810:47;31874:131;32000:4;31874:131;:::i;:::-;31866:139;;31593:419;;;:::o;32018:::-;32184:4;32222:2;32211:9;32207:18;32199:26;;32271:9;32265:4;32261:20;32257:1;32246:9;32242:17;32235:47;32299:131;32425:4;32299:131;:::i;:::-;32291:139;;32018:419;;;:::o;32443:::-;32609:4;32647:2;32636:9;32632:18;32624:26;;32696:9;32690:4;32686:20;32682:1;32671:9;32667:17;32660:47;32724:131;32850:4;32724:131;:::i;:::-;32716:139;;32443:419;;;:::o;32868:::-;33034:4;33072:2;33061:9;33057:18;33049:26;;33121:9;33115:4;33111:20;33107:1;33096:9;33092:17;33085:47;33149:131;33275:4;33149:131;:::i;:::-;33141:139;;32868:419;;;:::o;33293:::-;33459:4;33497:2;33486:9;33482:18;33474:26;;33546:9;33540:4;33536:20;33532:1;33521:9;33517:17;33510:47;33574:131;33700:4;33574:131;:::i;:::-;33566:139;;33293:419;;;:::o;33718:222::-;33811:4;33849:2;33838:9;33834:18;33826:26;;33862:71;33930:1;33919:9;33915:17;33906:6;33862:71;:::i;:::-;33718:222;;;;:::o;33946:129::-;33980:6;34007:20;;:::i;:::-;33997:30;;34036:33;34064:4;34056:6;34036:33;:::i;:::-;33946:129;;;:::o;34081:75::-;34114:6;34147:2;34141:9;34131:19;;34081:75;:::o;34162:307::-;34223:4;34313:18;34305:6;34302:30;34299:56;;;34335:18;;:::i;:::-;34299:56;34373:29;34395:6;34373:29;:::i;:::-;34365:37;;34457:4;34451;34447:15;34439:23;;34162:307;;;:::o;34475:308::-;34537:4;34627:18;34619:6;34616:30;34613:56;;;34649:18;;:::i;:::-;34613:56;34687:29;34709:6;34687:29;:::i;:::-;34679:37;;34771:4;34765;34761:15;34753:23;;34475:308;;;:::o;34789:141::-;34838:4;34861:3;34853:11;;34884:3;34881:1;34874:14;34918:4;34915:1;34905:18;34897:26;;34789:141;;;:::o;34936:98::-;34987:6;35021:5;35015:12;35005:22;;34936:98;;;:::o;35040:99::-;35092:6;35126:5;35120:12;35110:22;;35040:99;;;:::o;35145:168::-;35228:11;35262:6;35257:3;35250:19;35302:4;35297:3;35293:14;35278:29;;35145:168;;;;:::o;35319:147::-;35420:11;35457:3;35442:18;;35319:147;;;;:::o;35472:169::-;35556:11;35590:6;35585:3;35578:19;35630:4;35625:3;35621:14;35606:29;;35472:169;;;;:::o;35647:148::-;35749:11;35786:3;35771:18;;35647:148;;;;:::o;35801:305::-;35841:3;35860:20;35878:1;35860:20;:::i;:::-;35855:25;;35894:20;35912:1;35894:20;:::i;:::-;35889:25;;36048:1;35980:66;35976:74;35973:1;35970:81;35967:107;;;36054:18;;:::i;:::-;35967:107;36098:1;36095;36091:9;36084:16;;35801:305;;;;:::o;36112:185::-;36152:1;36169:20;36187:1;36169:20;:::i;:::-;36164:25;;36203:20;36221:1;36203:20;:::i;:::-;36198:25;;36242:1;36232:35;;36247:18;;:::i;:::-;36232:35;36289:1;36286;36282:9;36277:14;;36112:185;;;;:::o;36303:348::-;36343:7;36366:20;36384:1;36366:20;:::i;:::-;36361:25;;36400:20;36418:1;36400:20;:::i;:::-;36395:25;;36588:1;36520:66;36516:74;36513:1;36510:81;36505:1;36498:9;36491:17;36487:105;36484:131;;;36595:18;;:::i;:::-;36484:131;36643:1;36640;36636:9;36625:20;;36303:348;;;;:::o;36657:191::-;36697:4;36717:20;36735:1;36717:20;:::i;:::-;36712:25;;36751:20;36769:1;36751:20;:::i;:::-;36746:25;;36790:1;36787;36784:8;36781:34;;;36795:18;;:::i;:::-;36781:34;36840:1;36837;36833:9;36825:17;;36657:191;;;;:::o;36854:96::-;36891:7;36920:24;36938:5;36920:24;:::i;:::-;36909:35;;36854:96;;;:::o;36956:90::-;36990:7;37033:5;37026:13;37019:21;37008:32;;36956:90;;;:::o;37052:149::-;37088:7;37128:66;37121:5;37117:78;37106:89;;37052:149;;;:::o;37207:126::-;37244:7;37284:42;37277:5;37273:54;37262:65;;37207:126;;;:::o;37339:77::-;37376:7;37405:5;37394:16;;37339:77;;;:::o;37422:154::-;37506:6;37501:3;37496;37483:30;37568:1;37559:6;37554:3;37550:16;37543:27;37422:154;;;:::o;37582:307::-;37650:1;37660:113;37674:6;37671:1;37668:13;37660:113;;;37759:1;37754:3;37750:11;37744:18;37740:1;37735:3;37731:11;37724:39;37696:2;37693:1;37689:10;37684:15;;37660:113;;;37791:6;37788:1;37785:13;37782:101;;;37871:1;37862:6;37857:3;37853:16;37846:27;37782:101;37631:258;37582:307;;;:::o;37895:320::-;37939:6;37976:1;37970:4;37966:12;37956:22;;38023:1;38017:4;38013:12;38044:18;38034:81;;38100:4;38092:6;38088:17;38078:27;;38034:81;38162:2;38154:6;38151:14;38131:18;38128:38;38125:84;;;38181:18;;:::i;:::-;38125:84;37946:269;37895:320;;;:::o;38221:281::-;38304:27;38326:4;38304:27;:::i;:::-;38296:6;38292:40;38434:6;38422:10;38419:22;38398:18;38386:10;38383:34;38380:62;38377:88;;;38445:18;;:::i;:::-;38377:88;38485:10;38481:2;38474:22;38264:238;38221:281;;:::o;38508:233::-;38547:3;38570:24;38588:5;38570:24;:::i;:::-;38561:33;;38616:66;38609:5;38606:77;38603:103;;;38686:18;;:::i;:::-;38603:103;38733:1;38726:5;38722:13;38715:20;;38508:233;;;:::o;38747:176::-;38779:1;38796:20;38814:1;38796:20;:::i;:::-;38791:25;;38830:20;38848:1;38830:20;:::i;:::-;38825:25;;38869:1;38859:35;;38874:18;;:::i;:::-;38859:35;38915:1;38912;38908:9;38903:14;;38747:176;;;;:::o;38929:180::-;38977:77;38974:1;38967:88;39074:4;39071:1;39064:15;39098:4;39095:1;39088:15;39115:180;39163:77;39160:1;39153:88;39260:4;39257:1;39250:15;39284:4;39281:1;39274:15;39301:180;39349:77;39346:1;39339:88;39446:4;39443:1;39436:15;39470:4;39467:1;39460:15;39487:180;39535:77;39532:1;39525:88;39632:4;39629:1;39622:15;39656:4;39653:1;39646:15;39673:180;39721:77;39718:1;39711:88;39818:4;39815:1;39808:15;39842:4;39839:1;39832:15;39859:180;39907:77;39904:1;39897:88;40004:4;40001:1;39994:15;40028:4;40025:1;40018:15;40045:117;40154:1;40151;40144:12;40168:117;40277:1;40274;40267:12;40291:117;40400:1;40397;40390:12;40414:117;40523:1;40520;40513:12;40537:117;40646:1;40643;40636:12;40660:117;40769:1;40766;40759:12;40783:102;40824:6;40875:2;40871:7;40866:2;40859:5;40855:14;40851:28;40841:38;;40783:102;;;:::o;40891:230::-;41031:34;41027:1;41019:6;41015:14;41008:58;41100:13;41095:2;41087:6;41083:15;41076:38;40891:230;:::o;41127:237::-;41267:34;41263:1;41255:6;41251:14;41244:58;41336:20;41331:2;41323:6;41319:15;41312:45;41127:237;:::o;41370:172::-;41510:24;41506:1;41498:6;41494:14;41487:48;41370:172;:::o;41548:225::-;41688:34;41684:1;41676:6;41672:14;41665:58;41757:8;41752:2;41744:6;41740:15;41733:33;41548:225;:::o;41779:178::-;41919:30;41915:1;41907:6;41903:14;41896:54;41779:178;:::o;41963:223::-;42103:34;42099:1;42091:6;42087:14;42080:58;42172:6;42167:2;42159:6;42155:15;42148:31;41963:223;:::o;42192:175::-;42332:27;42328:1;42320:6;42316:14;42309:51;42192:175;:::o;42373:231::-;42513:34;42509:1;42501:6;42497:14;42490:58;42582:14;42577:2;42569:6;42565:15;42558:39;42373:231;:::o;42610:223::-;42750:34;42746:1;42738:6;42734:14;42727:58;42819:6;42814:2;42806:6;42802:15;42795:31;42610:223;:::o;42839:168::-;42979:20;42975:1;42967:6;42963:14;42956:44;42839:168;:::o;43013:173::-;43153:25;43149:1;43141:6;43137:14;43130:49;43013:173;:::o;43192:243::-;43332:34;43328:1;43320:6;43316:14;43309:58;43401:26;43396:2;43388:6;43384:15;43377:51;43192:243;:::o;43441:229::-;43581:34;43577:1;43569:6;43565:14;43558:58;43650:12;43645:2;43637:6;43633:15;43626:37;43441:229;:::o;43676:228::-;43816:34;43812:1;43804:6;43800:14;43793:58;43885:11;43880:2;43872:6;43868:15;43861:36;43676:228;:::o;43910:172::-;44050:24;44046:1;44038:6;44034:14;44027:48;43910:172;:::o;44088:182::-;44228:34;44224:1;44216:6;44212:14;44205:58;44088:182;:::o;44276:231::-;44416:34;44412:1;44404:6;44400:14;44393:58;44485:14;44480:2;44472:6;44468:15;44461:39;44276:231;:::o;44513:182::-;44653:34;44649:1;44641:6;44637:14;44630:58;44513:182;:::o;44701:228::-;44841:34;44837:1;44829:6;44825:14;44818:58;44910:11;44905:2;44897:6;44893:15;44886:36;44701:228;:::o;44935:234::-;45075:34;45071:1;45063:6;45059:14;45052:58;45144:17;45139:2;45131:6;45127:15;45120:42;44935:234;:::o;45175:178::-;45315:30;45311:1;45303:6;45299:14;45292:54;45175:178;:::o;45359:220::-;45499:34;45495:1;45487:6;45483:14;45476:58;45568:3;45563:2;45555:6;45551:15;45544:28;45359:220;:::o;45585:114::-;;:::o;45705:236::-;45845:34;45841:1;45833:6;45829:14;45822:58;45914:19;45909:2;45901:6;45897:15;45890:44;45705:236;:::o;45947:231::-;46087:34;46083:1;46075:6;46071:14;46064:58;46156:14;46151:2;46143:6;46139:15;46132:39;45947:231;:::o;46184:177::-;46324:29;46320:1;46312:6;46308:14;46301:53;46184:177;:::o;46367:122::-;46440:24;46458:5;46440:24;:::i;:::-;46433:5;46430:35;46420:63;;46479:1;46476;46469:12;46420:63;46367:122;:::o;46495:116::-;46565:21;46580:5;46565:21;:::i;:::-;46558:5;46555:32;46545:60;;46601:1;46598;46591:12;46545:60;46495:116;:::o;46617:120::-;46689:23;46706:5;46689:23;:::i;:::-;46682:5;46679:34;46669:62;;46727:1;46724;46717:12;46669:62;46617:120;:::o;46743:122::-;46816:24;46834:5;46816:24;:::i;:::-;46809:5;46806:35;46796:63;;46855:1;46852;46845:12;46796:63;46743:122;:::o
Swarm Source
ipfs://0e7f45af4dc9bc830443cbef13e94ba65f885e4835b1d2faa28b54744f1d2967
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.