Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 119 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Free Mint | 15693004 | 823 days ago | IN | 0 ETH | 0.00040788 | ||||
Free Mint | 15692936 | 823 days ago | IN | 0 ETH | 0.00032966 | ||||
Set Approval For... | 15681595 | 825 days ago | IN | 0 ETH | 0.00020073 | ||||
Set Approval For... | 15488378 | 853 days ago | IN | 0 ETH | 0.00059754 | ||||
Set Approval For... | 15461955 | 857 days ago | IN | 0 ETH | 0.00040702 | ||||
Free Mint | 15425767 | 863 days ago | IN | 0 ETH | 0.00067524 | ||||
Free Mint | 15425566 | 863 days ago | IN | 0 ETH | 0.00112487 | ||||
Free Mint | 15425566 | 863 days ago | IN | 0 ETH | 0.00112487 | ||||
Set Approval For... | 15406151 | 866 days ago | IN | 0 ETH | 0.00027984 | ||||
Safe Transfer Fr... | 15367042 | 873 days ago | IN | 0 ETH | 0.00049858 | ||||
Safe Transfer Fr... | 15367034 | 873 days ago | IN | 0 ETH | 0.00081627 | ||||
Set Approval For... | 15366987 | 873 days ago | IN | 0 ETH | 0.00045889 | ||||
Set Approval For... | 15366415 | 873 days ago | IN | 0 ETH | 0.00140293 | ||||
Free Mint | 15365534 | 873 days ago | IN | 0 ETH | 0.0009719 | ||||
Free Mint | 15365196 | 873 days ago | IN | 0 ETH | 0.0012435 | ||||
Free Mint | 15346900 | 876 days ago | IN | 0 ETH | 0.00159093 | ||||
Set Approval For... | 15346869 | 876 days ago | IN | 0 ETH | 0.00060772 | ||||
Free Mint | 15346762 | 876 days ago | IN | 0 ETH | 0.0052259 | ||||
Free Mint | 15346700 | 876 days ago | IN | 0 ETH | 0.00239743 | ||||
Free Mint | 15346678 | 876 days ago | IN | 0 ETH | 0.0017711 | ||||
Free Mint | 15346543 | 876 days ago | IN | 0 ETH | 0.00123711 | ||||
Free Mint | 15346463 | 876 days ago | IN | 0 ETH | 0.00179193 | ||||
Free Mint | 15346447 | 876 days ago | IN | 0 ETH | 0.00238158 | ||||
Free Mint | 15346446 | 876 days ago | IN | 0 ETH | 0.00218352 | ||||
Free Mint | 15346445 | 876 days ago | IN | 0 ETH | 0.00202122 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
OwlSketch
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-09 */ // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.3/contracts/utils/math/SafeMath.sol pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.3/contracts/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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.3/contracts/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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.3/contracts/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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.3/contracts/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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.3/contracts/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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.3/contracts/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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.3/contracts/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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.3/contracts/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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.3/contracts/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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.3/contracts/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 { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: contracts/ospx-contract.sol pragma solidity ^0.8.7; contract OwlSketch is Ownable, ERC721 { using SafeMath for uint256; uint public maxPerTransaction = 2; uint public freeSupply = 10000; bool public publicSaleActive = false; uint256 public totalSupply; string public baseURI; constructor(string memory name, string memory symbol, string memory baseURIinput) ERC721(name, symbol) { baseURI = baseURIinput; } function _baseURI() internal view override returns (string memory) { return baseURI; } function setBaseURI(string calldata newBaseUri) external onlyOwner { baseURI = newBaseUri; } function togglePublicSaleActive() external onlyOwner { publicSaleActive = !publicSaleActive; } function freeMint(uint256 numberOfTokens) public { require(totalSupply <= freeSupply, "Free supply is over!"); require(publicSaleActive == true, "Sale is Paused."); require(numberOfTokens <= maxPerTransaction, "Over max per transaction!"); require(this.balanceOf(msg.sender) + numberOfTokens <= 2, "Per wallet limit reached! Per wallet limit is 2 tokens."); uint256 newId = totalSupply; for (uint i = 0; i < numberOfTokens; i++) { newId+=1; _safeMint(msg.sender, newId); } totalSupply = newId; } function withdraw() public onlyOwner { uint256 balance = address(this).balance; payable(msg.sender).transfer(balance); } }
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":"baseURIinput","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":"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":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"freeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freeSupply","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":[],"name":"maxPerTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"publicSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseUri","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"togglePublicSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260026007556127106008556000600960006101000a81548160ff0219169083151502179055503480156200003757600080fd5b50604051620039da380380620039da83398181016040528101906200005d9190620002cf565b82826200007f62000073620000d560201b60201c565b620000dd60201b60201c565b816001908051906020019062000097929190620001a1565b508060029080519060200190620000b0929190620001a1565b50505080600b9080519060200190620000cb929190620001a1565b505050506200050c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001af906200041d565b90600052602060002090601f016020900481019282620001d357600085556200021f565b82601f10620001ee57805160ff19168380011785556200021f565b828001600101855582156200021f579182015b828111156200021e57825182559160200191906001019062000201565b5b5090506200022e919062000232565b5090565b5b808211156200024d57600081600090555060010162000233565b5090565b6000620002686200026284620003b1565b62000388565b905082815260208101848484011115620002875762000286620004ec565b5b62000294848285620003e7565b509392505050565b600082601f830112620002b457620002b3620004e7565b5b8151620002c684826020860162000251565b91505092915050565b600080600060608486031215620002eb57620002ea620004f6565b5b600084015167ffffffffffffffff8111156200030c576200030b620004f1565b5b6200031a868287016200029c565b935050602084015167ffffffffffffffff8111156200033e576200033d620004f1565b5b6200034c868287016200029c565b925050604084015167ffffffffffffffff81111562000370576200036f620004f1565b5b6200037e868287016200029c565b9150509250925092565b600062000394620003a7565b9050620003a2828262000453565b919050565b6000604051905090565b600067ffffffffffffffff821115620003cf57620003ce620004b8565b5b620003da82620004fb565b9050602081019050919050565b60005b8381101562000407578082015181840152602081019050620003ea565b8381111562000417576000848401525b50505050565b600060028204905060018216806200043657607f821691505b602082108114156200044d576200044c62000489565b5b50919050565b6200045e82620004fb565b810181811067ffffffffffffffff8211171562000480576200047f620004b8565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6134be806200051c6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636352211e116100de57806395d89b4111610097578063bc8893b411610071578063bc8893b4146103ec578063c87b56dd1461040a578063e985e9c51461043a578063f2fde38b1461046a57610173565b806395d89b4114610396578063a22cb465146103b4578063b88d4fde146103d057610173565b80636352211e146102d45780636c0360eb1461030457806370a0823114610322578063715018a6146103525780637c928fe91461035c5780638da5cb5b1461037857610173565b806323b872dd1161013057806323b872dd1461023a57806324a6ab0c146102565780633ccfd60b1461027457806342842e0e1461027e5780634b980d671461029a57806355f804b3146102b857610173565b806301ffc9a71461017857806306fdde03146101a8578063081812fc146101c6578063095ea7b3146101f65780630c894cfe1461021257806318160ddd1461021c575b600080fd5b610192600480360381019061018d9190612319565b610486565b60405161019f9190612831565b60405180910390f35b6101b0610568565b6040516101bd919061284c565b60405180910390f35b6101e060048036038101906101db91906123c0565b6105fa565b6040516101ed91906127ca565b60405180910390f35b610210600480360381019061020b91906122d9565b61067f565b005b61021a610797565b005b61022461083f565b6040516102319190612aee565b60405180910390f35b610254600480360381019061024f91906121c3565b610845565b005b61025e6108a5565b60405161026b9190612aee565b60405180910390f35b61027c6108ab565b005b610298600480360381019061029391906121c3565b610976565b005b6102a2610996565b6040516102af9190612aee565b60405180910390f35b6102d260048036038101906102cd9190612373565b61099c565b005b6102ee60048036038101906102e991906123c0565b610a2e565b6040516102fb91906127ca565b60405180910390f35b61030c610ae0565b604051610319919061284c565b60405180910390f35b61033c60048036038101906103379190612156565b610b6e565b6040516103499190612aee565b60405180910390f35b61035a610c26565b005b610376600480360381019061037191906123c0565b610cae565b005b610380610eb1565b60405161038d91906127ca565b60405180910390f35b61039e610eda565b6040516103ab919061284c565b60405180910390f35b6103ce60048036038101906103c99190612299565b610f6c565b005b6103ea60048036038101906103e59190612216565b6110ed565b005b6103f461114f565b6040516104019190612831565b60405180910390f35b610424600480360381019061041f91906123c0565b611162565b604051610431919061284c565b60405180910390f35b610454600480360381019061044f9190612183565b611209565b6040516104619190612831565b60405180910390f35b610484600480360381019061047f9190612156565b61129d565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061055157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610561575061056082611395565b5b9050919050565b60606001805461057790612d13565b80601f01602080910402602001604051908101604052809291908181526020018280546105a390612d13565b80156105f05780601f106105c5576101008083540402835291602001916105f0565b820191906000526020600020905b8154815290600101906020018083116105d357829003601f168201915b5050505050905090565b6000610605826113ff565b610644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063b906129ee565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061068a82610a2e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f290612a6e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661071a61146b565b73ffffffffffffffffffffffffffffffffffffffff16148061074957506107488161074361146b565b611209565b5b610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f9061292e565b60405180910390fd5b6107928383611473565b505050565b61079f61146b565b73ffffffffffffffffffffffffffffffffffffffff166107bd610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080a90612a0e565b60405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b600a5481565b61085661085061146b565b8261152c565b610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088c90612a8e565b60405180910390fd5b6108a083838361160a565b505050565b60085481565b6108b361146b565b73ffffffffffffffffffffffffffffffffffffffff166108d1610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e90612a0e565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610972573d6000803e3d6000fd5b5050565b610991838383604051806020016040528060008152506110ed565b505050565b60075481565b6109a461146b565b73ffffffffffffffffffffffffffffffffffffffff166109c2610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f90612a0e565b60405180910390fd5b8181600b9190610a29929190611f6f565b505050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ace9061296e565b60405180910390fd5b80915050919050565b600b8054610aed90612d13565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1990612d13565b8015610b665780601f10610b3b57610100808354040283529160200191610b66565b820191906000526020600020905b815481529060010190602001808311610b4957829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd69061294e565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c2e61146b565b73ffffffffffffffffffffffffffffffffffffffff16610c4c610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990612a0e565b60405180910390fd5b610cac6000611866565b565b600854600a541115610cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cec90612aae565b60405180910390fd5b60011515600960009054906101000a900460ff16151514610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290612ace565b60405180910390fd5b600754811115610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d87906129ae565b60405180910390fd5b6002813073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610dcc91906127ca565b60206040518083038186803b158015610de457600080fd5b505afa158015610df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1c91906123ed565b610e269190612ba2565b1115610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e9061298e565b60405180910390fd5b6000600a54905060005b82811015610ea557600182610e869190612ba2565b9150610e92338361192a565b8080610e9d90612d76565b915050610e71565b5080600a819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610ee990612d13565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1590612d13565b8015610f625780601f10610f3757610100808354040283529160200191610f62565b820191906000526020600020905b815481529060010190602001808311610f4557829003601f168201915b5050505050905090565b610f7461146b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd9906128ee565b60405180910390fd5b8060066000610fef61146b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661109c61146b565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110e19190612831565b60405180910390a35050565b6110fe6110f861146b565b8361152c565b61113d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113490612a8e565b60405180910390fd5b61114984848484611948565b50505050565b600960009054906101000a900460ff1681565b606061116d826113ff565b6111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a390612a4e565b60405180910390fd5b60006111b66119a4565b905060008151116111d65760405180602001604052806000815250611201565b806111e084611a36565b6040516020016111f19291906127a6565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6112a561146b565b73ffffffffffffffffffffffffffffffffffffffff166112c3610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131090612a0e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113809061288e565b60405180910390fd5b61139281611866565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166114e683610a2e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611537826113ff565b611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d9061290e565b60405180910390fd5b600061158183610a2e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806115f057508373ffffffffffffffffffffffffffffffffffffffff166115d8846105fa565b73ffffffffffffffffffffffffffffffffffffffff16145b8061160157506116008185611209565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661162a82610a2e565b73ffffffffffffffffffffffffffffffffffffffff1614611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167790612a2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e7906128ce565b60405180910390fd5b6116fb838383611b97565b611706600082611473565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117569190612c29565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ad9190612ba2565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611944828260405180602001604052806000815250611b9c565b5050565b61195384848461160a565b61195f84848484611bf7565b61199e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119959061286e565b60405180910390fd5b50505050565b6060600b80546119b390612d13565b80601f01602080910402602001604051908101604052809291908181526020018280546119df90612d13565b8015611a2c5780601f10611a0157610100808354040283529160200191611a2c565b820191906000526020600020905b815481529060010190602001808311611a0f57829003601f168201915b5050505050905090565b60606000821415611a7e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611b92565b600082905060005b60008214611ab0578080611a9990612d76565b915050600a82611aa99190612bf8565b9150611a86565b60008167ffffffffffffffff811115611acc57611acb612eac565b5b6040519080825280601f01601f191660200182016040528015611afe5781602001600182028036833780820191505090505b5090505b60008514611b8b57600182611b179190612c29565b9150600a85611b269190612dbf565b6030611b329190612ba2565b60f81b818381518110611b4857611b47612e7d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611b849190612bf8565b9450611b02565b8093505050505b919050565b505050565b611ba68383611d8e565b611bb36000848484611bf7565b611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be99061286e565b60405180910390fd5b505050565b6000611c188473ffffffffffffffffffffffffffffffffffffffff16611f5c565b15611d81578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611c4161146b565b8786866040518563ffffffff1660e01b8152600401611c6394939291906127e5565b602060405180830381600087803b158015611c7d57600080fd5b505af1925050508015611cae57506040513d601f19601f82011682018060405250810190611cab9190612346565b60015b611d31573d8060008114611cde576040519150601f19603f3d011682016040523d82523d6000602084013e611ce3565b606091505b50600081511415611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d209061286e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611d86565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df5906129ce565b60405180910390fd5b611e07816113ff565b15611e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3e906128ae565b60405180910390fd5b611e5360008383611b97565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ea39190612ba2565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054611f7b90612d13565b90600052602060002090601f016020900481019282611f9d5760008555611fe4565b82601f10611fb657803560ff1916838001178555611fe4565b82800160010185558215611fe4579182015b82811115611fe3578235825591602001919060010190611fc8565b5b509050611ff19190611ff5565b5090565b5b8082111561200e576000816000905550600101611ff6565b5090565b600061202561202084612b2e565b612b09565b90508281526020810184848401111561204157612040612eea565b5b61204c848285612cd1565b509392505050565b6000813590506120638161342c565b92915050565b60008135905061207881613443565b92915050565b60008135905061208d8161345a565b92915050565b6000815190506120a28161345a565b92915050565b600082601f8301126120bd576120bc612ee0565b5b81356120cd848260208601612012565b91505092915050565b60008083601f8401126120ec576120eb612ee0565b5b8235905067ffffffffffffffff81111561210957612108612edb565b5b60208301915083600182028301111561212557612124612ee5565b5b9250929050565b60008135905061213b81613471565b92915050565b60008151905061215081613471565b92915050565b60006020828403121561216c5761216b612ef4565b5b600061217a84828501612054565b91505092915050565b6000806040838503121561219a57612199612ef4565b5b60006121a885828601612054565b92505060206121b985828601612054565b9150509250929050565b6000806000606084860312156121dc576121db612ef4565b5b60006121ea86828701612054565b93505060206121fb86828701612054565b925050604061220c8682870161212c565b9150509250925092565b600080600080608085870312156122305761222f612ef4565b5b600061223e87828801612054565b945050602061224f87828801612054565b93505060406122608782880161212c565b925050606085013567ffffffffffffffff81111561228157612280612eef565b5b61228d878288016120a8565b91505092959194509250565b600080604083850312156122b0576122af612ef4565b5b60006122be85828601612054565b92505060206122cf85828601612069565b9150509250929050565b600080604083850312156122f0576122ef612ef4565b5b60006122fe85828601612054565b925050602061230f8582860161212c565b9150509250929050565b60006020828403121561232f5761232e612ef4565b5b600061233d8482850161207e565b91505092915050565b60006020828403121561235c5761235b612ef4565b5b600061236a84828501612093565b91505092915050565b6000806020838503121561238a57612389612ef4565b5b600083013567ffffffffffffffff8111156123a8576123a7612eef565b5b6123b4858286016120d6565b92509250509250929050565b6000602082840312156123d6576123d5612ef4565b5b60006123e48482850161212c565b91505092915050565b60006020828403121561240357612402612ef4565b5b600061241184828501612141565b91505092915050565b61242381612c5d565b82525050565b61243281612c6f565b82525050565b600061244382612b5f565b61244d8185612b75565b935061245d818560208601612ce0565b61246681612ef9565b840191505092915050565b600061247c82612b6a565b6124868185612b86565b9350612496818560208601612ce0565b61249f81612ef9565b840191505092915050565b60006124b582612b6a565b6124bf8185612b97565b93506124cf818560208601612ce0565b80840191505092915050565b60006124e8603283612b86565b91506124f382612f0a565b604082019050919050565b600061250b602683612b86565b915061251682612f59565b604082019050919050565b600061252e601c83612b86565b915061253982612fa8565b602082019050919050565b6000612551602483612b86565b915061255c82612fd1565b604082019050919050565b6000612574601983612b86565b915061257f82613020565b602082019050919050565b6000612597602c83612b86565b91506125a282613049565b604082019050919050565b60006125ba603883612b86565b91506125c582613098565b604082019050919050565b60006125dd602a83612b86565b91506125e8826130e7565b604082019050919050565b6000612600602983612b86565b915061260b82613136565b604082019050919050565b6000612623603783612b86565b915061262e82613185565b604082019050919050565b6000612646601983612b86565b9150612651826131d4565b602082019050919050565b6000612669602083612b86565b9150612674826131fd565b602082019050919050565b600061268c602c83612b86565b915061269782613226565b604082019050919050565b60006126af602083612b86565b91506126ba82613275565b602082019050919050565b60006126d2602983612b86565b91506126dd8261329e565b604082019050919050565b60006126f5602f83612b86565b9150612700826132ed565b604082019050919050565b6000612718602183612b86565b91506127238261333c565b604082019050919050565b600061273b603183612b86565b91506127468261338b565b604082019050919050565b600061275e601483612b86565b9150612769826133da565b602082019050919050565b6000612781600f83612b86565b915061278c82613403565b602082019050919050565b6127a081612cc7565b82525050565b60006127b282856124aa565b91506127be82846124aa565b91508190509392505050565b60006020820190506127df600083018461241a565b92915050565b60006080820190506127fa600083018761241a565b612807602083018661241a565b6128146040830185612797565b81810360608301526128268184612438565b905095945050505050565b60006020820190506128466000830184612429565b92915050565b600060208201905081810360008301526128668184612471565b905092915050565b60006020820190508181036000830152612887816124db565b9050919050565b600060208201905081810360008301526128a7816124fe565b9050919050565b600060208201905081810360008301526128c781612521565b9050919050565b600060208201905081810360008301526128e781612544565b9050919050565b6000602082019050818103600083015261290781612567565b9050919050565b600060208201905081810360008301526129278161258a565b9050919050565b60006020820190508181036000830152612947816125ad565b9050919050565b60006020820190508181036000830152612967816125d0565b9050919050565b60006020820190508181036000830152612987816125f3565b9050919050565b600060208201905081810360008301526129a781612616565b9050919050565b600060208201905081810360008301526129c781612639565b9050919050565b600060208201905081810360008301526129e78161265c565b9050919050565b60006020820190508181036000830152612a078161267f565b9050919050565b60006020820190508181036000830152612a27816126a2565b9050919050565b60006020820190508181036000830152612a47816126c5565b9050919050565b60006020820190508181036000830152612a67816126e8565b9050919050565b60006020820190508181036000830152612a878161270b565b9050919050565b60006020820190508181036000830152612aa78161272e565b9050919050565b60006020820190508181036000830152612ac781612751565b9050919050565b60006020820190508181036000830152612ae781612774565b9050919050565b6000602082019050612b036000830184612797565b92915050565b6000612b13612b24565b9050612b1f8282612d45565b919050565b6000604051905090565b600067ffffffffffffffff821115612b4957612b48612eac565b5b612b5282612ef9565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612bad82612cc7565b9150612bb883612cc7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612bed57612bec612df0565b5b828201905092915050565b6000612c0382612cc7565b9150612c0e83612cc7565b925082612c1e57612c1d612e1f565b5b828204905092915050565b6000612c3482612cc7565b9150612c3f83612cc7565b925082821015612c5257612c51612df0565b5b828203905092915050565b6000612c6882612ca7565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612cfe578082015181840152602081019050612ce3565b83811115612d0d576000848401525b50505050565b60006002820490506001821680612d2b57607f821691505b60208210811415612d3f57612d3e612e4e565b5b50919050565b612d4e82612ef9565b810181811067ffffffffffffffff82111715612d6d57612d6c612eac565b5b80604052505050565b6000612d8182612cc7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612db457612db3612df0565b5b600182019050919050565b6000612dca82612cc7565b9150612dd583612cc7565b925082612de557612de4612e1f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f5065722077616c6c6574206c696d69742072656163686564212050657220776160008201527f6c6c6574206c696d6974206973203220746f6b656e732e000000000000000000602082015250565b7f4f766572206d617820706572207472616e73616374696f6e2100000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4672656520737570706c79206973206f76657221000000000000000000000000600082015250565b7f53616c65206973205061757365642e0000000000000000000000000000000000600082015250565b61343581612c5d565b811461344057600080fd5b50565b61344c81612c6f565b811461345757600080fd5b50565b61346381612c7b565b811461346e57600080fd5b50565b61347a81612cc7565b811461348557600080fd5b5056fea26469706673582212205ccede9c1ead633014d9642aa825228029051776ede2b8c02366854af99ae52864736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000144f776c20536b657463682050726f6a656374205800000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f53505800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d6148435071474d794d32636e6b7a65396b4357657576773145795575514745477a4168774669456d4a3631772f000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c80636352211e116100de57806395d89b4111610097578063bc8893b411610071578063bc8893b4146103ec578063c87b56dd1461040a578063e985e9c51461043a578063f2fde38b1461046a57610173565b806395d89b4114610396578063a22cb465146103b4578063b88d4fde146103d057610173565b80636352211e146102d45780636c0360eb1461030457806370a0823114610322578063715018a6146103525780637c928fe91461035c5780638da5cb5b1461037857610173565b806323b872dd1161013057806323b872dd1461023a57806324a6ab0c146102565780633ccfd60b1461027457806342842e0e1461027e5780634b980d671461029a57806355f804b3146102b857610173565b806301ffc9a71461017857806306fdde03146101a8578063081812fc146101c6578063095ea7b3146101f65780630c894cfe1461021257806318160ddd1461021c575b600080fd5b610192600480360381019061018d9190612319565b610486565b60405161019f9190612831565b60405180910390f35b6101b0610568565b6040516101bd919061284c565b60405180910390f35b6101e060048036038101906101db91906123c0565b6105fa565b6040516101ed91906127ca565b60405180910390f35b610210600480360381019061020b91906122d9565b61067f565b005b61021a610797565b005b61022461083f565b6040516102319190612aee565b60405180910390f35b610254600480360381019061024f91906121c3565b610845565b005b61025e6108a5565b60405161026b9190612aee565b60405180910390f35b61027c6108ab565b005b610298600480360381019061029391906121c3565b610976565b005b6102a2610996565b6040516102af9190612aee565b60405180910390f35b6102d260048036038101906102cd9190612373565b61099c565b005b6102ee60048036038101906102e991906123c0565b610a2e565b6040516102fb91906127ca565b60405180910390f35b61030c610ae0565b604051610319919061284c565b60405180910390f35b61033c60048036038101906103379190612156565b610b6e565b6040516103499190612aee565b60405180910390f35b61035a610c26565b005b610376600480360381019061037191906123c0565b610cae565b005b610380610eb1565b60405161038d91906127ca565b60405180910390f35b61039e610eda565b6040516103ab919061284c565b60405180910390f35b6103ce60048036038101906103c99190612299565b610f6c565b005b6103ea60048036038101906103e59190612216565b6110ed565b005b6103f461114f565b6040516104019190612831565b60405180910390f35b610424600480360381019061041f91906123c0565b611162565b604051610431919061284c565b60405180910390f35b610454600480360381019061044f9190612183565b611209565b6040516104619190612831565b60405180910390f35b610484600480360381019061047f9190612156565b61129d565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061055157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610561575061056082611395565b5b9050919050565b60606001805461057790612d13565b80601f01602080910402602001604051908101604052809291908181526020018280546105a390612d13565b80156105f05780601f106105c5576101008083540402835291602001916105f0565b820191906000526020600020905b8154815290600101906020018083116105d357829003601f168201915b5050505050905090565b6000610605826113ff565b610644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063b906129ee565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061068a82610a2e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f290612a6e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661071a61146b565b73ffffffffffffffffffffffffffffffffffffffff16148061074957506107488161074361146b565b611209565b5b610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f9061292e565b60405180910390fd5b6107928383611473565b505050565b61079f61146b565b73ffffffffffffffffffffffffffffffffffffffff166107bd610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080a90612a0e565b60405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b600a5481565b61085661085061146b565b8261152c565b610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088c90612a8e565b60405180910390fd5b6108a083838361160a565b505050565b60085481565b6108b361146b565b73ffffffffffffffffffffffffffffffffffffffff166108d1610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e90612a0e565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610972573d6000803e3d6000fd5b5050565b610991838383604051806020016040528060008152506110ed565b505050565b60075481565b6109a461146b565b73ffffffffffffffffffffffffffffffffffffffff166109c2610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f90612a0e565b60405180910390fd5b8181600b9190610a29929190611f6f565b505050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ace9061296e565b60405180910390fd5b80915050919050565b600b8054610aed90612d13565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1990612d13565b8015610b665780601f10610b3b57610100808354040283529160200191610b66565b820191906000526020600020905b815481529060010190602001808311610b4957829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd69061294e565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c2e61146b565b73ffffffffffffffffffffffffffffffffffffffff16610c4c610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990612a0e565b60405180910390fd5b610cac6000611866565b565b600854600a541115610cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cec90612aae565b60405180910390fd5b60011515600960009054906101000a900460ff16151514610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290612ace565b60405180910390fd5b600754811115610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d87906129ae565b60405180910390fd5b6002813073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610dcc91906127ca565b60206040518083038186803b158015610de457600080fd5b505afa158015610df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1c91906123ed565b610e269190612ba2565b1115610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e9061298e565b60405180910390fd5b6000600a54905060005b82811015610ea557600182610e869190612ba2565b9150610e92338361192a565b8080610e9d90612d76565b915050610e71565b5080600a819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610ee990612d13565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1590612d13565b8015610f625780601f10610f3757610100808354040283529160200191610f62565b820191906000526020600020905b815481529060010190602001808311610f4557829003601f168201915b5050505050905090565b610f7461146b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd9906128ee565b60405180910390fd5b8060066000610fef61146b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661109c61146b565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110e19190612831565b60405180910390a35050565b6110fe6110f861146b565b8361152c565b61113d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113490612a8e565b60405180910390fd5b61114984848484611948565b50505050565b600960009054906101000a900460ff1681565b606061116d826113ff565b6111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a390612a4e565b60405180910390fd5b60006111b66119a4565b905060008151116111d65760405180602001604052806000815250611201565b806111e084611a36565b6040516020016111f19291906127a6565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6112a561146b565b73ffffffffffffffffffffffffffffffffffffffff166112c3610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131090612a0e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113809061288e565b60405180910390fd5b61139281611866565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166114e683610a2e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611537826113ff565b611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d9061290e565b60405180910390fd5b600061158183610a2e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806115f057508373ffffffffffffffffffffffffffffffffffffffff166115d8846105fa565b73ffffffffffffffffffffffffffffffffffffffff16145b8061160157506116008185611209565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661162a82610a2e565b73ffffffffffffffffffffffffffffffffffffffff1614611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167790612a2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e7906128ce565b60405180910390fd5b6116fb838383611b97565b611706600082611473565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117569190612c29565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ad9190612ba2565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611944828260405180602001604052806000815250611b9c565b5050565b61195384848461160a565b61195f84848484611bf7565b61199e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119959061286e565b60405180910390fd5b50505050565b6060600b80546119b390612d13565b80601f01602080910402602001604051908101604052809291908181526020018280546119df90612d13565b8015611a2c5780601f10611a0157610100808354040283529160200191611a2c565b820191906000526020600020905b815481529060010190602001808311611a0f57829003601f168201915b5050505050905090565b60606000821415611a7e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611b92565b600082905060005b60008214611ab0578080611a9990612d76565b915050600a82611aa99190612bf8565b9150611a86565b60008167ffffffffffffffff811115611acc57611acb612eac565b5b6040519080825280601f01601f191660200182016040528015611afe5781602001600182028036833780820191505090505b5090505b60008514611b8b57600182611b179190612c29565b9150600a85611b269190612dbf565b6030611b329190612ba2565b60f81b818381518110611b4857611b47612e7d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611b849190612bf8565b9450611b02565b8093505050505b919050565b505050565b611ba68383611d8e565b611bb36000848484611bf7565b611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be99061286e565b60405180910390fd5b505050565b6000611c188473ffffffffffffffffffffffffffffffffffffffff16611f5c565b15611d81578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611c4161146b565b8786866040518563ffffffff1660e01b8152600401611c6394939291906127e5565b602060405180830381600087803b158015611c7d57600080fd5b505af1925050508015611cae57506040513d601f19601f82011682018060405250810190611cab9190612346565b60015b611d31573d8060008114611cde576040519150601f19603f3d011682016040523d82523d6000602084013e611ce3565b606091505b50600081511415611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d209061286e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611d86565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df5906129ce565b60405180910390fd5b611e07816113ff565b15611e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3e906128ae565b60405180910390fd5b611e5360008383611b97565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ea39190612ba2565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054611f7b90612d13565b90600052602060002090601f016020900481019282611f9d5760008555611fe4565b82601f10611fb657803560ff1916838001178555611fe4565b82800160010185558215611fe4579182015b82811115611fe3578235825591602001919060010190611fc8565b5b509050611ff19190611ff5565b5090565b5b8082111561200e576000816000905550600101611ff6565b5090565b600061202561202084612b2e565b612b09565b90508281526020810184848401111561204157612040612eea565b5b61204c848285612cd1565b509392505050565b6000813590506120638161342c565b92915050565b60008135905061207881613443565b92915050565b60008135905061208d8161345a565b92915050565b6000815190506120a28161345a565b92915050565b600082601f8301126120bd576120bc612ee0565b5b81356120cd848260208601612012565b91505092915050565b60008083601f8401126120ec576120eb612ee0565b5b8235905067ffffffffffffffff81111561210957612108612edb565b5b60208301915083600182028301111561212557612124612ee5565b5b9250929050565b60008135905061213b81613471565b92915050565b60008151905061215081613471565b92915050565b60006020828403121561216c5761216b612ef4565b5b600061217a84828501612054565b91505092915050565b6000806040838503121561219a57612199612ef4565b5b60006121a885828601612054565b92505060206121b985828601612054565b9150509250929050565b6000806000606084860312156121dc576121db612ef4565b5b60006121ea86828701612054565b93505060206121fb86828701612054565b925050604061220c8682870161212c565b9150509250925092565b600080600080608085870312156122305761222f612ef4565b5b600061223e87828801612054565b945050602061224f87828801612054565b93505060406122608782880161212c565b925050606085013567ffffffffffffffff81111561228157612280612eef565b5b61228d878288016120a8565b91505092959194509250565b600080604083850312156122b0576122af612ef4565b5b60006122be85828601612054565b92505060206122cf85828601612069565b9150509250929050565b600080604083850312156122f0576122ef612ef4565b5b60006122fe85828601612054565b925050602061230f8582860161212c565b9150509250929050565b60006020828403121561232f5761232e612ef4565b5b600061233d8482850161207e565b91505092915050565b60006020828403121561235c5761235b612ef4565b5b600061236a84828501612093565b91505092915050565b6000806020838503121561238a57612389612ef4565b5b600083013567ffffffffffffffff8111156123a8576123a7612eef565b5b6123b4858286016120d6565b92509250509250929050565b6000602082840312156123d6576123d5612ef4565b5b60006123e48482850161212c565b91505092915050565b60006020828403121561240357612402612ef4565b5b600061241184828501612141565b91505092915050565b61242381612c5d565b82525050565b61243281612c6f565b82525050565b600061244382612b5f565b61244d8185612b75565b935061245d818560208601612ce0565b61246681612ef9565b840191505092915050565b600061247c82612b6a565b6124868185612b86565b9350612496818560208601612ce0565b61249f81612ef9565b840191505092915050565b60006124b582612b6a565b6124bf8185612b97565b93506124cf818560208601612ce0565b80840191505092915050565b60006124e8603283612b86565b91506124f382612f0a565b604082019050919050565b600061250b602683612b86565b915061251682612f59565b604082019050919050565b600061252e601c83612b86565b915061253982612fa8565b602082019050919050565b6000612551602483612b86565b915061255c82612fd1565b604082019050919050565b6000612574601983612b86565b915061257f82613020565b602082019050919050565b6000612597602c83612b86565b91506125a282613049565b604082019050919050565b60006125ba603883612b86565b91506125c582613098565b604082019050919050565b60006125dd602a83612b86565b91506125e8826130e7565b604082019050919050565b6000612600602983612b86565b915061260b82613136565b604082019050919050565b6000612623603783612b86565b915061262e82613185565b604082019050919050565b6000612646601983612b86565b9150612651826131d4565b602082019050919050565b6000612669602083612b86565b9150612674826131fd565b602082019050919050565b600061268c602c83612b86565b915061269782613226565b604082019050919050565b60006126af602083612b86565b91506126ba82613275565b602082019050919050565b60006126d2602983612b86565b91506126dd8261329e565b604082019050919050565b60006126f5602f83612b86565b9150612700826132ed565b604082019050919050565b6000612718602183612b86565b91506127238261333c565b604082019050919050565b600061273b603183612b86565b91506127468261338b565b604082019050919050565b600061275e601483612b86565b9150612769826133da565b602082019050919050565b6000612781600f83612b86565b915061278c82613403565b602082019050919050565b6127a081612cc7565b82525050565b60006127b282856124aa565b91506127be82846124aa565b91508190509392505050565b60006020820190506127df600083018461241a565b92915050565b60006080820190506127fa600083018761241a565b612807602083018661241a565b6128146040830185612797565b81810360608301526128268184612438565b905095945050505050565b60006020820190506128466000830184612429565b92915050565b600060208201905081810360008301526128668184612471565b905092915050565b60006020820190508181036000830152612887816124db565b9050919050565b600060208201905081810360008301526128a7816124fe565b9050919050565b600060208201905081810360008301526128c781612521565b9050919050565b600060208201905081810360008301526128e781612544565b9050919050565b6000602082019050818103600083015261290781612567565b9050919050565b600060208201905081810360008301526129278161258a565b9050919050565b60006020820190508181036000830152612947816125ad565b9050919050565b60006020820190508181036000830152612967816125d0565b9050919050565b60006020820190508181036000830152612987816125f3565b9050919050565b600060208201905081810360008301526129a781612616565b9050919050565b600060208201905081810360008301526129c781612639565b9050919050565b600060208201905081810360008301526129e78161265c565b9050919050565b60006020820190508181036000830152612a078161267f565b9050919050565b60006020820190508181036000830152612a27816126a2565b9050919050565b60006020820190508181036000830152612a47816126c5565b9050919050565b60006020820190508181036000830152612a67816126e8565b9050919050565b60006020820190508181036000830152612a878161270b565b9050919050565b60006020820190508181036000830152612aa78161272e565b9050919050565b60006020820190508181036000830152612ac781612751565b9050919050565b60006020820190508181036000830152612ae781612774565b9050919050565b6000602082019050612b036000830184612797565b92915050565b6000612b13612b24565b9050612b1f8282612d45565b919050565b6000604051905090565b600067ffffffffffffffff821115612b4957612b48612eac565b5b612b5282612ef9565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612bad82612cc7565b9150612bb883612cc7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612bed57612bec612df0565b5b828201905092915050565b6000612c0382612cc7565b9150612c0e83612cc7565b925082612c1e57612c1d612e1f565b5b828204905092915050565b6000612c3482612cc7565b9150612c3f83612cc7565b925082821015612c5257612c51612df0565b5b828203905092915050565b6000612c6882612ca7565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612cfe578082015181840152602081019050612ce3565b83811115612d0d576000848401525b50505050565b60006002820490506001821680612d2b57607f821691505b60208210811415612d3f57612d3e612e4e565b5b50919050565b612d4e82612ef9565b810181811067ffffffffffffffff82111715612d6d57612d6c612eac565b5b80604052505050565b6000612d8182612cc7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612db457612db3612df0565b5b600182019050919050565b6000612dca82612cc7565b9150612dd583612cc7565b925082612de557612de4612e1f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f5065722077616c6c6574206c696d69742072656163686564212050657220776160008201527f6c6c6574206c696d6974206973203220746f6b656e732e000000000000000000602082015250565b7f4f766572206d617820706572207472616e73616374696f6e2100000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4672656520737570706c79206973206f76657221000000000000000000000000600082015250565b7f53616c65206973205061757365642e0000000000000000000000000000000000600082015250565b61343581612c5d565b811461344057600080fd5b50565b61344c81612c6f565b811461345757600080fd5b50565b61346381612c7b565b811461346e57600080fd5b50565b61347a81612cc7565b811461348557600080fd5b5056fea26469706673582212205ccede9c1ead633014d9642aa825228029051776ede2b8c02366854af99ae52864736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000144f776c20536b657463682050726f6a656374205800000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f53505800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d6148435071474d794d32636e6b7a65396b4357657576773145795575514745477a4168774669456d4a3631772f000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): Owl Sketch Project X
Arg [1] : symbol (string): OSPX
Arg [2] : baseURIinput (string): https://gateway.pinata.cloud/ipfs/QmaHCPqGMyM2cnkze9kCWeuvw1EyUuQGEGzAhwFiEmJ61w/
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [4] : 4f776c20536b657463682050726f6a6563742058000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 4f53505800000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000051
Arg [8] : 68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066
Arg [9] : 732f516d6148435071474d794d32636e6b7a65396b4357657576773145795575
Arg [10] : 514745477a4168774669456d4a3631772f000000000000000000000000000000
Deployed Bytecode Sourcemap
42661:1439:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30463:305;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31408:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32967:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32490:411;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43272:102;;;:::i;:::-;;42853:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33857:339;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42777:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43954:143;;;:::i;:::-;;34267:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42739:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43166:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31102:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42884:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30832:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11727:94;;;:::i;:::-;;43382:566;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11076:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31577:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33260:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34523:328;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42812:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31752:334;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33626:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11976:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30463:305;30565:4;30617:25;30602:40;;;:11;:40;;;;:105;;;;30674:33;30659:48;;;:11;:48;;;;30602:105;:158;;;;30724:36;30748:11;30724:23;:36::i;:::-;30602:158;30582:178;;30463:305;;;:::o;31408:100::-;31462:13;31495:5;31488:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31408:100;:::o;32967:221::-;33043:7;33071:16;33079:7;33071;:16::i;:::-;33063:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;33156:15;:24;33172:7;33156:24;;;;;;;;;;;;;;;;;;;;;33149:31;;32967:221;;;:::o;32490:411::-;32571:13;32587:23;32602:7;32587:14;:23::i;:::-;32571:39;;32635:5;32629:11;;:2;:11;;;;32621:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;32729:5;32713:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;32738:37;32755:5;32762:12;:10;:12::i;:::-;32738:16;:37::i;:::-;32713:62;32691:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;32872:21;32881:2;32885:7;32872:8;:21::i;:::-;32560:341;32490:411;;:::o;43272:102::-;11307:12;:10;:12::i;:::-;11296:23;;:7;:5;:7::i;:::-;:23;;;11288:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43352:16:::1;;;;;;;;;;;43351:17;43332:16;;:36;;;;;;;;;;;;;;;;;;43272:102::o:0;42853:26::-;;;;:::o;33857:339::-;34052:41;34071:12;:10;:12::i;:::-;34085:7;34052:18;:41::i;:::-;34044:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;34160:28;34170:4;34176:2;34180:7;34160:9;:28::i;:::-;33857:339;;;:::o;42777:30::-;;;;:::o;43954:143::-;11307:12;:10;:12::i;:::-;11296:23;;:7;:5;:7::i;:::-;:23;;;11288:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44002:15:::1;44020:21;44002:39;;44060:10;44052:28;;:37;44081:7;44052:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;43991:106;43954:143::o:0;34267:185::-;34405:39;34422:4;34428:2;34432:7;34405:39;;;;;;;;;;;;:16;:39::i;:::-;34267:185;;;:::o;42739:33::-;;;;:::o;43166:100::-;11307:12;:10;:12::i;:::-;11296:23;;:7;:5;:7::i;:::-;:23;;;11288:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43250:10:::1;;43240:7;:20;;;;;;;:::i;:::-;;43166:100:::0;;:::o;31102:239::-;31174:7;31194:13;31210:7;:16;31218:7;31210:16;;;;;;;;;;;;;;;;;;;;;31194:32;;31262:1;31245:19;;:5;:19;;;;31237:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31328:5;31321:12;;;31102:239;;;:::o;42884:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;30832:208::-;30904:7;30949:1;30932:19;;:5;:19;;;;30924:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;31016:9;:16;31026:5;31016:16;;;;;;;;;;;;;;;;31009:23;;30832:208;;;:::o;11727:94::-;11307:12;:10;:12::i;:::-;11296:23;;:7;:5;:7::i;:::-;:23;;;11288:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11792:21:::1;11810:1;11792:9;:21::i;:::-;11727:94::o:0;43382:566::-;43461:10;;43446:11;;:25;;43438:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;43531:4;43511:24;;:16;;;;;;;;;;;:24;;;43503:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;43588:17;;43570:14;:35;;43562:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;43697:1;43679:14;43650:4;:14;;;43665:10;43650:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;;:::i;:::-;:48;;43642:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;43767:13;43783:11;;43767:27;;43810:6;43805:112;43826:14;43822:1;:18;43805:112;;;43865:1;43858:8;;;;;:::i;:::-;;;43877:28;43887:10;43899:5;43877:9;:28::i;:::-;43842:3;;;;;:::i;:::-;;;;43805:112;;;;43937:5;43923:11;:19;;;;43431:517;43382:566;:::o;11076:87::-;11122:7;11149:6;;;;;;;;;;;11142:13;;11076:87;:::o;31577:104::-;31633:13;31666:7;31659:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31577:104;:::o;33260:295::-;33375:12;:10;:12::i;:::-;33363:24;;:8;:24;;;;33355:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;33475:8;33430:18;:32;33449:12;:10;:12::i;:::-;33430:32;;;;;;;;;;;;;;;:42;33463:8;33430:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;33528:8;33499:48;;33514:12;:10;:12::i;:::-;33499:48;;;33538:8;33499:48;;;;;;:::i;:::-;;;;;;;;33260:295;;:::o;34523:328::-;34698:41;34717:12;:10;:12::i;:::-;34731:7;34698:18;:41::i;:::-;34690:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;34804:39;34818:4;34824:2;34828:7;34837:5;34804:13;:39::i;:::-;34523:328;;;;:::o;42812:36::-;;;;;;;;;;;;;:::o;31752:334::-;31825:13;31859:16;31867:7;31859;:16::i;:::-;31851:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;31940:21;31964:10;:8;:10::i;:::-;31940:34;;32016:1;31998:7;31992:21;:25;:86;;;;;;;;;;;;;;;;;32044:7;32053:18;:7;:16;:18::i;:::-;32027:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;31992:86;31985:93;;;31752:334;;;:::o;33626:164::-;33723:4;33747:18;:25;33766:5;33747:25;;;;;;;;;;;;;;;:35;33773:8;33747:35;;;;;;;;;;;;;;;;;;;;;;;;;33740:42;;33626:164;;;;:::o;11976:192::-;11307:12;:10;:12::i;:::-;11296:23;;:7;:5;:7::i;:::-;:23;;;11288:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12085:1:::1;12065:22;;:8;:22;;;;12057:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12141:19;12151:8;12141:9;:19::i;:::-;11976:192:::0;:::o;23274:157::-;23359:4;23398:25;23383:40;;;:11;:40;;;;23376:47;;23274:157;;;:::o;36361:127::-;36426:4;36478:1;36450:30;;:7;:16;36458:7;36450:16;;;;;;;;;;;;;;;;;;;;;:30;;;;36443:37;;36361:127;;;:::o;9811:98::-;9864:7;9891:10;9884:17;;9811:98;:::o;40343:174::-;40445:2;40418:15;:24;40434:7;40418:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;40501:7;40497:2;40463:46;;40472:23;40487:7;40472:14;:23::i;:::-;40463:46;;;;;;;;;;;;40343:174;;:::o;36655:348::-;36748:4;36773:16;36781:7;36773;:16::i;:::-;36765:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;36849:13;36865:23;36880:7;36865:14;:23::i;:::-;36849:39;;36918:5;36907:16;;:7;:16;;;:51;;;;36951:7;36927:31;;:20;36939:7;36927:11;:20::i;:::-;:31;;;36907:51;:87;;;;36962:32;36979:5;36986:7;36962:16;:32::i;:::-;36907:87;36899:96;;;36655:348;;;;:::o;39647:578::-;39806:4;39779:31;;:23;39794:7;39779:14;:23::i;:::-;:31;;;39771:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;39889:1;39875:16;;:2;:16;;;;39867:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;39945:39;39966:4;39972:2;39976:7;39945:20;:39::i;:::-;40049:29;40066:1;40070:7;40049:8;:29::i;:::-;40110:1;40091:9;:15;40101:4;40091:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;40139:1;40122:9;:13;40132:2;40122:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;40170:2;40151:7;:16;40159:7;40151:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;40209:7;40205:2;40190:27;;40199:4;40190:27;;;;;;;;;;;;39647:578;;;:::o;12176:173::-;12232:16;12251:6;;;;;;;;;;;12232:25;;12277:8;12268:6;;:17;;;;;;;;;;;;;;;;;;12332:8;12301:40;;12322:8;12301:40;;;;;;;;;;;;12221:128;12176:173;:::o;37345:110::-;37421:26;37431:2;37435:7;37421:26;;;;;;;;;;;;:9;:26::i;:::-;37345:110;;:::o;35733:315::-;35890:28;35900:4;35906:2;35910:7;35890:9;:28::i;:::-;35937:48;35960:4;35966:2;35970:7;35979:5;35937:22;:48::i;:::-;35929:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;35733:315;;;;:::o;43066:94::-;43118:13;43147:7;43140:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43066:94;:::o;7374:723::-;7430:13;7660:1;7651:5;:10;7647:53;;;7678:10;;;;;;;;;;;;;;;;;;;;;7647:53;7710:12;7725:5;7710:20;;7741:14;7766:78;7781:1;7773:4;:9;7766:78;;7799:8;;;;;:::i;:::-;;;;7830:2;7822:10;;;;;:::i;:::-;;;7766:78;;;7854:19;7886:6;7876:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7854:39;;7904:154;7920:1;7911:5;:10;7904:154;;7948:1;7938:11;;;;;:::i;:::-;;;8015:2;8007:5;:10;;;;:::i;:::-;7994:2;:24;;;;:::i;:::-;7981:39;;7964:6;7971;7964:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;8044:2;8035:11;;;;;:::i;:::-;;;7904:154;;;8082:6;8068:21;;;;;7374:723;;;;:::o;42453:126::-;;;;:::o;37682:321::-;37812:18;37818:2;37822:7;37812:5;:18::i;:::-;37863:54;37894:1;37898:2;37902:7;37911:5;37863:22;:54::i;:::-;37841:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;37682:321;;;:::o;41082:799::-;41237:4;41258:15;:2;:13;;;:15::i;:::-;41254:620;;;41310:2;41294:36;;;41331:12;:10;:12::i;:::-;41345:4;41351:7;41360:5;41294:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;41290:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41553:1;41536:6;:13;:18;41532:272;;;41579:60;;;;;;;;;;:::i;:::-;;;;;;;;41532:272;41754:6;41748:13;41739:6;41735:2;41731:15;41724:38;41290:529;41427:41;;;41417:51;;;:6;:51;;;;41410:58;;;;;41254:620;41858:4;41851:11;;41082:799;;;;;;;:::o;38339:382::-;38433:1;38419:16;;:2;:16;;;;38411:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;38492:16;38500:7;38492;:16::i;:::-;38491:17;38483:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;38554:45;38583:1;38587:2;38591:7;38554:20;:45::i;:::-;38629:1;38612:9;:13;38622:2;38612:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;38660:2;38641:7;:16;38649:7;38641:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;38705:7;38701:2;38680:33;;38697:1;38680:33;;;;;;;;;;;;38339:382;;:::o;13175:387::-;13235:4;13443:12;13510:7;13498:20;13490:28;;13553:1;13546:4;:8;13539:15;;;13175:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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:139::-;469:5;507:6;494:20;485:29;;523:33;550:5;523:33;:::i;:::-;423:139;;;;:::o;568:133::-;611:5;649:6;636:20;627:29;;665:30;689:5;665:30;:::i;:::-;568:133;;;;:::o;707:137::-;752:5;790:6;777:20;768:29;;806:32;832:5;806:32;:::i;:::-;707:137;;;;:::o;850:141::-;906:5;937:6;931:13;922:22;;953:32;979:5;953:32;:::i;:::-;850:141;;;;:::o;1010:338::-;1065:5;1114:3;1107:4;1099:6;1095:17;1091:27;1081:122;;1122:79;;:::i;:::-;1081:122;1239:6;1226:20;1264:78;1338:3;1330:6;1323:4;1315:6;1311:17;1264:78;:::i;:::-;1255:87;;1071:277;1010:338;;;;:::o;1368:553::-;1426:8;1436:6;1486:3;1479:4;1471:6;1467:17;1463:27;1453:122;;1494:79;;:::i;:::-;1453:122;1607:6;1594:20;1584:30;;1637:18;1629:6;1626:30;1623:117;;;1659:79;;:::i;:::-;1623:117;1773:4;1765:6;1761:17;1749:29;;1827:3;1819:4;1811:6;1807:17;1797:8;1793:32;1790:41;1787:128;;;1834:79;;:::i;:::-;1787:128;1368:553;;;;;:::o;1927:139::-;1973:5;2011:6;1998:20;1989:29;;2027:33;2054:5;2027:33;:::i;:::-;1927:139;;;;:::o;2072:143::-;2129:5;2160:6;2154:13;2145:22;;2176:33;2203:5;2176:33;:::i;:::-;2072:143;;;;:::o;2221:329::-;2280:6;2329:2;2317:9;2308:7;2304:23;2300:32;2297:119;;;2335:79;;:::i;:::-;2297:119;2455:1;2480:53;2525:7;2516:6;2505:9;2501:22;2480:53;:::i;:::-;2470:63;;2426:117;2221:329;;;;:::o;2556:474::-;2624:6;2632;2681:2;2669:9;2660:7;2656:23;2652:32;2649:119;;;2687:79;;:::i;:::-;2649:119;2807:1;2832:53;2877:7;2868:6;2857:9;2853:22;2832:53;:::i;:::-;2822:63;;2778:117;2934:2;2960:53;3005:7;2996:6;2985:9;2981:22;2960:53;:::i;:::-;2950:63;;2905:118;2556:474;;;;;:::o;3036:619::-;3113:6;3121;3129;3178:2;3166:9;3157:7;3153:23;3149:32;3146:119;;;3184:79;;:::i;:::-;3146:119;3304:1;3329:53;3374:7;3365:6;3354:9;3350:22;3329:53;:::i;:::-;3319:63;;3275:117;3431:2;3457:53;3502:7;3493:6;3482:9;3478:22;3457:53;:::i;:::-;3447:63;;3402:118;3559:2;3585:53;3630:7;3621:6;3610:9;3606:22;3585:53;:::i;:::-;3575:63;;3530:118;3036:619;;;;;:::o;3661:943::-;3756:6;3764;3772;3780;3829:3;3817:9;3808:7;3804:23;3800:33;3797:120;;;3836:79;;:::i;:::-;3797:120;3956:1;3981:53;4026:7;4017:6;4006:9;4002:22;3981:53;:::i;:::-;3971:63;;3927:117;4083:2;4109:53;4154:7;4145:6;4134:9;4130:22;4109:53;:::i;:::-;4099:63;;4054:118;4211:2;4237:53;4282:7;4273:6;4262:9;4258:22;4237:53;:::i;:::-;4227:63;;4182:118;4367:2;4356:9;4352:18;4339:32;4398:18;4390:6;4387:30;4384:117;;;4420:79;;:::i;:::-;4384:117;4525:62;4579:7;4570:6;4559:9;4555:22;4525:62;:::i;:::-;4515:72;;4310:287;3661:943;;;;;;;:::o;4610:468::-;4675:6;4683;4732:2;4720:9;4711:7;4707:23;4703:32;4700:119;;;4738:79;;:::i;:::-;4700:119;4858:1;4883:53;4928:7;4919:6;4908:9;4904:22;4883:53;:::i;:::-;4873:63;;4829:117;4985:2;5011:50;5053:7;5044:6;5033:9;5029:22;5011:50;:::i;:::-;5001:60;;4956:115;4610:468;;;;;:::o;5084:474::-;5152:6;5160;5209:2;5197:9;5188:7;5184:23;5180:32;5177:119;;;5215:79;;:::i;:::-;5177:119;5335:1;5360:53;5405:7;5396:6;5385:9;5381:22;5360:53;:::i;:::-;5350:63;;5306:117;5462:2;5488:53;5533:7;5524:6;5513:9;5509:22;5488:53;:::i;:::-;5478:63;;5433:118;5084:474;;;;;:::o;5564:327::-;5622:6;5671:2;5659:9;5650:7;5646:23;5642:32;5639:119;;;5677:79;;:::i;:::-;5639:119;5797:1;5822:52;5866:7;5857:6;5846:9;5842:22;5822:52;:::i;:::-;5812:62;;5768:116;5564:327;;;;:::o;5897:349::-;5966:6;6015:2;6003:9;5994:7;5990:23;5986:32;5983:119;;;6021:79;;:::i;:::-;5983:119;6141:1;6166:63;6221:7;6212:6;6201:9;6197:22;6166:63;:::i;:::-;6156:73;;6112:127;5897:349;;;;:::o;6252:529::-;6323:6;6331;6380:2;6368:9;6359:7;6355:23;6351:32;6348:119;;;6386:79;;:::i;:::-;6348:119;6534:1;6523:9;6519:17;6506:31;6564:18;6556:6;6553:30;6550:117;;;6586:79;;:::i;:::-;6550:117;6699:65;6756:7;6747:6;6736:9;6732:22;6699:65;:::i;:::-;6681:83;;;;6477:297;6252:529;;;;;:::o;6787:329::-;6846:6;6895:2;6883:9;6874:7;6870:23;6866:32;6863:119;;;6901:79;;:::i;:::-;6863:119;7021:1;7046:53;7091:7;7082:6;7071:9;7067:22;7046:53;:::i;:::-;7036:63;;6992:117;6787:329;;;;:::o;7122:351::-;7192:6;7241:2;7229:9;7220:7;7216:23;7212:32;7209:119;;;7247:79;;:::i;:::-;7209:119;7367:1;7392:64;7448:7;7439:6;7428:9;7424:22;7392:64;:::i;:::-;7382:74;;7338:128;7122:351;;;;:::o;7479:118::-;7566:24;7584:5;7566:24;:::i;:::-;7561:3;7554:37;7479:118;;:::o;7603:109::-;7684:21;7699:5;7684:21;:::i;:::-;7679:3;7672:34;7603:109;;:::o;7718:360::-;7804:3;7832:38;7864:5;7832:38;:::i;:::-;7886:70;7949:6;7944:3;7886:70;:::i;:::-;7879:77;;7965:52;8010:6;8005:3;7998:4;7991:5;7987:16;7965:52;:::i;:::-;8042:29;8064:6;8042:29;:::i;:::-;8037:3;8033:39;8026:46;;7808:270;7718:360;;;;:::o;8084:364::-;8172:3;8200:39;8233:5;8200:39;:::i;:::-;8255:71;8319:6;8314:3;8255:71;:::i;:::-;8248:78;;8335:52;8380:6;8375:3;8368:4;8361:5;8357:16;8335:52;:::i;:::-;8412:29;8434:6;8412:29;:::i;:::-;8407:3;8403:39;8396:46;;8176:272;8084:364;;;;:::o;8454:377::-;8560:3;8588:39;8621:5;8588:39;:::i;:::-;8643:89;8725:6;8720:3;8643:89;:::i;:::-;8636:96;;8741:52;8786:6;8781:3;8774:4;8767:5;8763:16;8741:52;:::i;:::-;8818:6;8813:3;8809:16;8802:23;;8564:267;8454:377;;;;:::o;8837:366::-;8979:3;9000:67;9064:2;9059:3;9000:67;:::i;:::-;8993:74;;9076:93;9165:3;9076:93;:::i;:::-;9194:2;9189:3;9185:12;9178:19;;8837:366;;;:::o;9209:::-;9351:3;9372:67;9436:2;9431:3;9372:67;:::i;:::-;9365:74;;9448:93;9537:3;9448:93;:::i;:::-;9566:2;9561:3;9557:12;9550:19;;9209:366;;;:::o;9581:::-;9723:3;9744:67;9808:2;9803:3;9744:67;:::i;:::-;9737:74;;9820:93;9909:3;9820:93;:::i;:::-;9938:2;9933:3;9929:12;9922:19;;9581:366;;;:::o;9953:::-;10095:3;10116:67;10180:2;10175:3;10116:67;:::i;:::-;10109:74;;10192:93;10281:3;10192:93;:::i;:::-;10310:2;10305:3;10301:12;10294:19;;9953:366;;;:::o;10325:::-;10467:3;10488:67;10552:2;10547:3;10488:67;:::i;:::-;10481:74;;10564:93;10653:3;10564:93;:::i;:::-;10682:2;10677:3;10673:12;10666:19;;10325:366;;;:::o;10697:::-;10839:3;10860:67;10924:2;10919:3;10860:67;:::i;:::-;10853:74;;10936:93;11025:3;10936:93;:::i;:::-;11054:2;11049:3;11045:12;11038:19;;10697:366;;;:::o;11069:::-;11211:3;11232:67;11296:2;11291:3;11232:67;:::i;:::-;11225:74;;11308:93;11397:3;11308:93;:::i;:::-;11426:2;11421:3;11417:12;11410:19;;11069:366;;;:::o;11441:::-;11583:3;11604:67;11668:2;11663:3;11604:67;:::i;:::-;11597:74;;11680:93;11769:3;11680:93;:::i;:::-;11798:2;11793:3;11789:12;11782:19;;11441:366;;;:::o;11813:::-;11955:3;11976:67;12040:2;12035:3;11976:67;:::i;:::-;11969:74;;12052:93;12141:3;12052:93;:::i;:::-;12170:2;12165:3;12161:12;12154:19;;11813:366;;;:::o;12185:::-;12327:3;12348:67;12412:2;12407:3;12348:67;:::i;:::-;12341:74;;12424:93;12513:3;12424:93;:::i;:::-;12542:2;12537:3;12533:12;12526:19;;12185:366;;;:::o;12557:::-;12699:3;12720:67;12784:2;12779:3;12720:67;:::i;:::-;12713:74;;12796:93;12885:3;12796:93;:::i;:::-;12914:2;12909:3;12905:12;12898:19;;12557:366;;;:::o;12929:::-;13071:3;13092:67;13156:2;13151:3;13092:67;:::i;:::-;13085:74;;13168:93;13257:3;13168:93;:::i;:::-;13286:2;13281:3;13277:12;13270:19;;12929:366;;;:::o;13301:::-;13443:3;13464:67;13528:2;13523:3;13464:67;:::i;:::-;13457:74;;13540:93;13629:3;13540:93;:::i;:::-;13658:2;13653:3;13649:12;13642:19;;13301:366;;;:::o;13673:::-;13815:3;13836:67;13900:2;13895:3;13836:67;:::i;:::-;13829:74;;13912:93;14001:3;13912:93;:::i;:::-;14030:2;14025:3;14021:12;14014:19;;13673:366;;;:::o;14045:::-;14187:3;14208:67;14272:2;14267:3;14208:67;:::i;:::-;14201:74;;14284:93;14373:3;14284:93;:::i;:::-;14402:2;14397:3;14393:12;14386:19;;14045:366;;;:::o;14417:::-;14559:3;14580:67;14644:2;14639:3;14580:67;:::i;:::-;14573:74;;14656:93;14745:3;14656:93;:::i;:::-;14774:2;14769:3;14765:12;14758:19;;14417:366;;;:::o;14789:::-;14931:3;14952:67;15016:2;15011:3;14952:67;:::i;:::-;14945:74;;15028:93;15117:3;15028:93;:::i;:::-;15146:2;15141:3;15137:12;15130:19;;14789:366;;;:::o;15161:::-;15303:3;15324:67;15388:2;15383:3;15324:67;:::i;:::-;15317:74;;15400:93;15489:3;15400:93;:::i;:::-;15518:2;15513:3;15509:12;15502:19;;15161:366;;;:::o;15533:::-;15675:3;15696:67;15760:2;15755:3;15696:67;:::i;:::-;15689:74;;15772:93;15861:3;15772:93;:::i;:::-;15890:2;15885:3;15881:12;15874:19;;15533:366;;;:::o;15905:::-;16047:3;16068:67;16132:2;16127:3;16068:67;:::i;:::-;16061:74;;16144:93;16233:3;16144:93;:::i;:::-;16262:2;16257:3;16253:12;16246:19;;15905:366;;;:::o;16277:118::-;16364:24;16382:5;16364:24;:::i;:::-;16359:3;16352:37;16277:118;;:::o;16401:435::-;16581:3;16603:95;16694:3;16685:6;16603:95;:::i;:::-;16596:102;;16715:95;16806:3;16797:6;16715:95;:::i;:::-;16708:102;;16827:3;16820:10;;16401:435;;;;;:::o;16842:222::-;16935:4;16973:2;16962:9;16958:18;16950:26;;16986:71;17054:1;17043:9;17039:17;17030:6;16986:71;:::i;:::-;16842:222;;;;:::o;17070:640::-;17265:4;17303:3;17292:9;17288:19;17280:27;;17317:71;17385:1;17374:9;17370:17;17361:6;17317:71;:::i;:::-;17398:72;17466:2;17455:9;17451:18;17442:6;17398:72;:::i;:::-;17480;17548:2;17537:9;17533:18;17524:6;17480:72;:::i;:::-;17599:9;17593:4;17589:20;17584:2;17573:9;17569:18;17562:48;17627:76;17698:4;17689:6;17627:76;:::i;:::-;17619:84;;17070:640;;;;;;;:::o;17716:210::-;17803:4;17841:2;17830:9;17826:18;17818:26;;17854:65;17916:1;17905:9;17901:17;17892:6;17854:65;:::i;:::-;17716:210;;;;:::o;17932:313::-;18045:4;18083:2;18072:9;18068:18;18060:26;;18132:9;18126:4;18122:20;18118:1;18107:9;18103:17;18096:47;18160:78;18233:4;18224:6;18160:78;:::i;:::-;18152:86;;17932:313;;;;:::o;18251:419::-;18417:4;18455:2;18444:9;18440:18;18432:26;;18504:9;18498:4;18494:20;18490:1;18479:9;18475:17;18468:47;18532:131;18658:4;18532:131;:::i;:::-;18524:139;;18251:419;;;:::o;18676:::-;18842:4;18880:2;18869:9;18865:18;18857:26;;18929:9;18923:4;18919:20;18915:1;18904:9;18900:17;18893:47;18957:131;19083:4;18957:131;:::i;:::-;18949:139;;18676:419;;;:::o;19101:::-;19267:4;19305:2;19294:9;19290:18;19282:26;;19354:9;19348:4;19344:20;19340:1;19329:9;19325:17;19318:47;19382:131;19508:4;19382:131;:::i;:::-;19374:139;;19101:419;;;:::o;19526:::-;19692:4;19730:2;19719:9;19715:18;19707:26;;19779:9;19773:4;19769:20;19765:1;19754:9;19750:17;19743:47;19807:131;19933:4;19807:131;:::i;:::-;19799:139;;19526:419;;;:::o;19951:::-;20117:4;20155:2;20144:9;20140:18;20132:26;;20204:9;20198:4;20194:20;20190:1;20179:9;20175:17;20168:47;20232:131;20358:4;20232:131;:::i;:::-;20224:139;;19951:419;;;:::o;20376:::-;20542:4;20580:2;20569:9;20565:18;20557:26;;20629:9;20623:4;20619:20;20615:1;20604:9;20600:17;20593:47;20657:131;20783:4;20657:131;:::i;:::-;20649:139;;20376:419;;;:::o;20801:::-;20967:4;21005:2;20994:9;20990:18;20982:26;;21054:9;21048:4;21044:20;21040:1;21029:9;21025:17;21018:47;21082:131;21208:4;21082:131;:::i;:::-;21074:139;;20801:419;;;:::o;21226:::-;21392:4;21430:2;21419:9;21415:18;21407:26;;21479:9;21473:4;21469:20;21465:1;21454:9;21450:17;21443:47;21507:131;21633:4;21507:131;:::i;:::-;21499:139;;21226:419;;;:::o;21651:::-;21817:4;21855:2;21844:9;21840:18;21832:26;;21904:9;21898:4;21894:20;21890:1;21879:9;21875:17;21868:47;21932:131;22058:4;21932:131;:::i;:::-;21924:139;;21651:419;;;:::o;22076:::-;22242:4;22280:2;22269:9;22265:18;22257:26;;22329:9;22323:4;22319:20;22315:1;22304:9;22300:17;22293:47;22357:131;22483:4;22357:131;:::i;:::-;22349:139;;22076:419;;;:::o;22501:::-;22667:4;22705:2;22694:9;22690:18;22682:26;;22754:9;22748:4;22744:20;22740:1;22729:9;22725:17;22718:47;22782:131;22908:4;22782:131;:::i;:::-;22774:139;;22501:419;;;:::o;22926:::-;23092:4;23130:2;23119:9;23115:18;23107:26;;23179:9;23173:4;23169:20;23165:1;23154:9;23150:17;23143:47;23207:131;23333:4;23207:131;:::i;:::-;23199:139;;22926:419;;;:::o;23351:::-;23517:4;23555:2;23544:9;23540:18;23532:26;;23604:9;23598:4;23594:20;23590:1;23579:9;23575:17;23568:47;23632:131;23758:4;23632:131;:::i;:::-;23624:139;;23351:419;;;:::o;23776:::-;23942:4;23980:2;23969:9;23965:18;23957:26;;24029:9;24023:4;24019:20;24015:1;24004:9;24000:17;23993:47;24057:131;24183:4;24057:131;:::i;:::-;24049:139;;23776:419;;;:::o;24201:::-;24367:4;24405:2;24394:9;24390:18;24382:26;;24454:9;24448:4;24444:20;24440:1;24429:9;24425:17;24418:47;24482:131;24608:4;24482:131;:::i;:::-;24474:139;;24201:419;;;:::o;24626:::-;24792:4;24830:2;24819:9;24815:18;24807:26;;24879:9;24873:4;24869:20;24865:1;24854:9;24850:17;24843:47;24907:131;25033:4;24907:131;:::i;:::-;24899:139;;24626:419;;;:::o;25051:::-;25217:4;25255:2;25244:9;25240:18;25232:26;;25304:9;25298:4;25294:20;25290:1;25279:9;25275:17;25268:47;25332:131;25458:4;25332:131;:::i;:::-;25324:139;;25051:419;;;:::o;25476:::-;25642:4;25680:2;25669:9;25665:18;25657:26;;25729:9;25723:4;25719:20;25715:1;25704:9;25700:17;25693:47;25757:131;25883:4;25757:131;:::i;:::-;25749:139;;25476:419;;;:::o;25901:::-;26067:4;26105:2;26094:9;26090:18;26082:26;;26154:9;26148:4;26144:20;26140:1;26129:9;26125:17;26118:47;26182:131;26308:4;26182:131;:::i;:::-;26174:139;;25901:419;;;:::o;26326:::-;26492:4;26530:2;26519:9;26515:18;26507:26;;26579:9;26573:4;26569:20;26565:1;26554:9;26550:17;26543:47;26607:131;26733:4;26607:131;:::i;:::-;26599:139;;26326:419;;;:::o;26751:222::-;26844:4;26882:2;26871:9;26867:18;26859:26;;26895:71;26963:1;26952:9;26948:17;26939:6;26895:71;:::i;:::-;26751:222;;;;:::o;26979:129::-;27013:6;27040:20;;:::i;:::-;27030:30;;27069:33;27097:4;27089:6;27069:33;:::i;:::-;26979:129;;;:::o;27114:75::-;27147:6;27180:2;27174:9;27164:19;;27114:75;:::o;27195:307::-;27256:4;27346:18;27338:6;27335:30;27332:56;;;27368:18;;:::i;:::-;27332:56;27406:29;27428:6;27406:29;:::i;:::-;27398:37;;27490:4;27484;27480:15;27472:23;;27195:307;;;:::o;27508:98::-;27559:6;27593:5;27587:12;27577:22;;27508:98;;;:::o;27612:99::-;27664:6;27698:5;27692:12;27682:22;;27612:99;;;:::o;27717:168::-;27800:11;27834:6;27829:3;27822:19;27874:4;27869:3;27865:14;27850:29;;27717:168;;;;:::o;27891:169::-;27975:11;28009:6;28004:3;27997:19;28049:4;28044:3;28040:14;28025:29;;27891:169;;;;:::o;28066:148::-;28168:11;28205:3;28190:18;;28066:148;;;;:::o;28220:305::-;28260:3;28279:20;28297:1;28279:20;:::i;:::-;28274:25;;28313:20;28331:1;28313:20;:::i;:::-;28308:25;;28467:1;28399:66;28395:74;28392:1;28389:81;28386:107;;;28473:18;;:::i;:::-;28386:107;28517:1;28514;28510:9;28503:16;;28220:305;;;;:::o;28531:185::-;28571:1;28588:20;28606:1;28588:20;:::i;:::-;28583:25;;28622:20;28640:1;28622:20;:::i;:::-;28617:25;;28661:1;28651:35;;28666:18;;:::i;:::-;28651:35;28708:1;28705;28701:9;28696:14;;28531:185;;;;:::o;28722:191::-;28762:4;28782:20;28800:1;28782:20;:::i;:::-;28777:25;;28816:20;28834:1;28816:20;:::i;:::-;28811:25;;28855:1;28852;28849:8;28846:34;;;28860:18;;:::i;:::-;28846:34;28905:1;28902;28898:9;28890:17;;28722:191;;;;:::o;28919:96::-;28956:7;28985:24;29003:5;28985:24;:::i;:::-;28974:35;;28919:96;;;:::o;29021:90::-;29055:7;29098:5;29091:13;29084:21;29073:32;;29021:90;;;:::o;29117:149::-;29153:7;29193:66;29186:5;29182:78;29171:89;;29117:149;;;:::o;29272:126::-;29309:7;29349:42;29342:5;29338:54;29327:65;;29272:126;;;:::o;29404:77::-;29441:7;29470:5;29459:16;;29404:77;;;:::o;29487:154::-;29571:6;29566:3;29561;29548:30;29633:1;29624:6;29619:3;29615:16;29608:27;29487:154;;;:::o;29647:307::-;29715:1;29725:113;29739:6;29736:1;29733:13;29725:113;;;29824:1;29819:3;29815:11;29809:18;29805:1;29800:3;29796:11;29789:39;29761:2;29758:1;29754:10;29749:15;;29725:113;;;29856:6;29853:1;29850:13;29847:101;;;29936:1;29927:6;29922:3;29918:16;29911:27;29847:101;29696:258;29647:307;;;:::o;29960:320::-;30004:6;30041:1;30035:4;30031:12;30021:22;;30088:1;30082:4;30078:12;30109:18;30099:81;;30165:4;30157:6;30153:17;30143:27;;30099:81;30227:2;30219:6;30216:14;30196:18;30193:38;30190:84;;;30246:18;;:::i;:::-;30190:84;30011:269;29960:320;;;:::o;30286:281::-;30369:27;30391:4;30369:27;:::i;:::-;30361:6;30357:40;30499:6;30487:10;30484:22;30463:18;30451:10;30448:34;30445:62;30442:88;;;30510:18;;:::i;:::-;30442:88;30550:10;30546:2;30539:22;30329:238;30286:281;;:::o;30573:233::-;30612:3;30635:24;30653:5;30635:24;:::i;:::-;30626:33;;30681:66;30674:5;30671:77;30668:103;;;30751:18;;:::i;:::-;30668:103;30798:1;30791:5;30787:13;30780:20;;30573:233;;;:::o;30812:176::-;30844:1;30861:20;30879:1;30861:20;:::i;:::-;30856:25;;30895:20;30913:1;30895:20;:::i;:::-;30890:25;;30934:1;30924:35;;30939:18;;:::i;:::-;30924:35;30980:1;30977;30973:9;30968:14;;30812:176;;;;:::o;30994:180::-;31042:77;31039:1;31032:88;31139:4;31136:1;31129:15;31163:4;31160:1;31153:15;31180:180;31228:77;31225:1;31218:88;31325:4;31322:1;31315:15;31349:4;31346:1;31339:15;31366:180;31414:77;31411:1;31404:88;31511:4;31508:1;31501:15;31535:4;31532:1;31525:15;31552:180;31600:77;31597:1;31590:88;31697:4;31694:1;31687:15;31721:4;31718:1;31711:15;31738:180;31786:77;31783:1;31776:88;31883:4;31880:1;31873:15;31907:4;31904:1;31897:15;31924:117;32033:1;32030;32023:12;32047:117;32156:1;32153;32146:12;32170:117;32279:1;32276;32269:12;32293:117;32402:1;32399;32392:12;32416:117;32525:1;32522;32515:12;32539:117;32648:1;32645;32638:12;32662:102;32703:6;32754:2;32750:7;32745:2;32738:5;32734:14;32730:28;32720:38;;32662:102;;;:::o;32770:237::-;32910:34;32906:1;32898:6;32894:14;32887:58;32979:20;32974:2;32966:6;32962:15;32955:45;32770:237;:::o;33013:225::-;33153:34;33149:1;33141:6;33137:14;33130:58;33222:8;33217:2;33209:6;33205:15;33198:33;33013:225;:::o;33244:178::-;33384:30;33380:1;33372:6;33368:14;33361:54;33244:178;:::o;33428:223::-;33568:34;33564:1;33556:6;33552:14;33545:58;33637:6;33632:2;33624:6;33620:15;33613:31;33428:223;:::o;33657:175::-;33797:27;33793:1;33785:6;33781:14;33774:51;33657:175;:::o;33838:231::-;33978:34;33974:1;33966:6;33962:14;33955:58;34047:14;34042:2;34034:6;34030:15;34023:39;33838:231;:::o;34075:243::-;34215:34;34211:1;34203:6;34199:14;34192:58;34284:26;34279:2;34271:6;34267:15;34260:51;34075:243;:::o;34324:229::-;34464:34;34460:1;34452:6;34448:14;34441:58;34533:12;34528:2;34520:6;34516:15;34509:37;34324:229;:::o;34559:228::-;34699:34;34695:1;34687:6;34683:14;34676:58;34768:11;34763:2;34755:6;34751:15;34744:36;34559:228;:::o;34793:242::-;34933:34;34929:1;34921:6;34917:14;34910:58;35002:25;34997:2;34989:6;34985:15;34978:50;34793:242;:::o;35041:175::-;35181:27;35177:1;35169:6;35165:14;35158:51;35041:175;:::o;35222:182::-;35362:34;35358:1;35350:6;35346:14;35339:58;35222:182;:::o;35410:231::-;35550:34;35546:1;35538:6;35534:14;35527:58;35619:14;35614:2;35606:6;35602:15;35595:39;35410:231;:::o;35647:182::-;35787:34;35783:1;35775:6;35771:14;35764:58;35647:182;:::o;35835:228::-;35975:34;35971:1;35963:6;35959:14;35952:58;36044:11;36039:2;36031:6;36027:15;36020:36;35835:228;:::o;36069:234::-;36209:34;36205:1;36197:6;36193:14;36186:58;36278:17;36273:2;36265:6;36261:15;36254:42;36069:234;:::o;36309:220::-;36449:34;36445:1;36437:6;36433:14;36426:58;36518:3;36513:2;36505:6;36501:15;36494:28;36309:220;:::o;36535:236::-;36675:34;36671:1;36663:6;36659:14;36652:58;36744:19;36739:2;36731:6;36727:15;36720:44;36535:236;:::o;36777:170::-;36917:22;36913:1;36905:6;36901:14;36894:46;36777:170;:::o;36953:165::-;37093:17;37089:1;37081:6;37077:14;37070:41;36953:165;:::o;37124:122::-;37197:24;37215:5;37197:24;:::i;:::-;37190:5;37187:35;37177:63;;37236:1;37233;37226:12;37177:63;37124:122;:::o;37252:116::-;37322:21;37337:5;37322:21;:::i;:::-;37315:5;37312:32;37302:60;;37358:1;37355;37348:12;37302:60;37252:116;:::o;37374:120::-;37446:23;37463:5;37446:23;:::i;:::-;37439:5;37436:34;37426:62;;37484:1;37481;37474:12;37426:62;37374:120;:::o;37500:122::-;37573:24;37591:5;37573:24;:::i;:::-;37566:5;37563:35;37553:63;;37612:1;37609;37602:12;37553:63;37500:122;:::o
Swarm Source
ipfs://5ccede9c1ead633014d9642aa825228029051776ede2b8c02366854af99ae528
Loading...
Loading
Loading...
Loading
OVERVIEW
he sketchiest owls on the blockchain,the Sketchy Owl Club NFT Collection symbolizesthe merging of the physical world and the digital.Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.