Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
358 LADYCLOWNCLUB
Holders
155
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 LADYCLOWNCLUBLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
LadyClownClub
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-16 */ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (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); } // OpenZeppelin Contracts v4.4.0 (token/ERC721/IERC721.sol) /** * @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; } // OpenZeppelin Contracts v4.4.0 (utils/Strings.sol) /** * @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); } } // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) /** * @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; } } // OpenZeppelin Contracts v4.4.0 (token/ERC721/extensions/ERC721Enumerable.sol) // OpenZeppelin Contracts v4.4.0 (token/ERC721/ERC721.sol) // OpenZeppelin Contracts v4.4.0 (token/ERC721/IERC721Receiver.sol) /** * @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); } // OpenZeppelin Contracts v4.4.0 (token/ERC721/extensions/IERC721Metadata.sol) /** * @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); } // OpenZeppelin Contracts v4.4.0 (utils/Address.sol) /** * @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); } } } } // OpenZeppelin Contracts v4.4.0 (utils/introspection/ERC165.sol) /** * @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; } } /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // OpenZeppelin Contracts v4.4.0 (token/ERC721/extensions/IERC721Enumerable.sol) /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } //........................................................................ //........................................................................ //...|| || || || || |||||| || || ||||||||||||| ||||||| //...|||| |||| |||| || || || ||| || || || |||| //...|| || || || || |||| ||||| || || || ||||| || ||||| //...|| || |||||||| || || || || |||| || || ||| //...|| || || || || || |||||| || || || || ||||||| //... //...|| || |||| |||||||| || || || |||||| //...||| || || || || || || || |||| || || //...|| || || || || || || ||| ||| || || |||||| //...|| |||| || || || ||| ||| |||||||| || || //...|| || |||| || || || || || || || //........................................................................ //..................................................made with <3 --refugee //........................................................................ contract LadyClownClub is ERC721Enumerable, Ownable { using Strings for uint256; string _baseTokenURI; bool public _pausedFree = true; address public clown1; address public clown2; constructor( string memory name, string memory symbol, string memory baseURI ) ERC721(name,symbol) { setBaseURI(baseURI); } function LadyClownFreeMint(uint256 num) external { uint256 supply = totalSupply(); require( !_pausedFree, "Minting paused." ); require( supply + num < 8001, "Exceeds maximum supply." ); require( num < 31, "You can only mint 30."); for(uint256 i; i < num; i++){ _safeMint( msg.sender, supply + i ); } } function giveAway(address _to, uint256 _amount) external onlyOwner() { uint256 supply = totalSupply(); require( supply + _amount < 8001, "Exceeds maximum supply" ); for(uint256 i; i < _amount; i++){ _safeMint( _to, supply + i ); } } function walletOfOwner(address _owner) public view returns(uint256[] memory) { uint256 tokenCount = balanceOf(_owner); uint256[] memory tokensId = new uint256[](tokenCount); for(uint256 i; i < tokenCount; i++){ tokensId[i] = tokenOfOwnerByIndex(_owner, i); } return tokensId; } function _baseURI() internal view virtual override returns (string memory) { return _baseTokenURI; } function setBaseURI(string memory baseURI) public onlyOwner { _baseTokenURI = baseURI; } function pauseFree(bool val) public onlyOwner { _pausedFree = val; } function setPayoutAddresses(address[] memory _clowns) public onlyOwner { clown1 = _clowns[0]; clown2 = _clowns[1]; } function withdrawAll(uint256 _amt) public payable onlyOwner { uint256 percentle = _amt / 100; require(payable(clown1).send(percentle * 50)); require(payable(clown2).send(percentle * 50)); } }
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":"baseURI","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":"uint256","name":"num","type":"uint256"}],"name":"LadyClownFreeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_pausedFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clown1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clown2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"giveAway","outputs":[],"stateMutability":"nonpayable","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":"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":[{"internalType":"bool","name":"val","type":"bool"}],"name":"pauseFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_clowns","type":"address[]"}],"name":"setPayoutAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"withdrawAll","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60806040526001600c60006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040516200486138038062004861833981810160405281019062000052919062000387565b828281600090805190602001906200006c92919062000265565b5080600190805190602001906200008592919062000265565b505050620000a86200009c620000c260201b60201c565b620000ca60201b60201c565b620000b9816200019060201b60201c565b505050620005ce565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001a0620000c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620001c66200023b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200021f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000216906200046a565b60405180910390fd5b80600b90805190602001906200023792919062000265565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000273906200053a565b90600052602060002090601f016020900481019282620002975760008555620002e3565b82601f10620002b257805160ff1916838001178555620002e3565b82800160010185558215620002e3579182015b82811115620002e2578251825591602001919060010190620002c5565b5b509050620002f29190620002f6565b5090565b5b8082111562000311576000816000905550600101620002f7565b5090565b60006200032c6200032684620004c0565b6200048c565b9050828152602081018484840111156200034557600080fd5b6200035284828562000504565b509392505050565b600082601f8301126200036c57600080fd5b81516200037e84826020860162000315565b91505092915050565b6000806000606084860312156200039d57600080fd5b600084015167ffffffffffffffff811115620003b857600080fd5b620003c6868287016200035a565b935050602084015167ffffffffffffffff811115620003e457600080fd5b620003f2868287016200035a565b925050604084015167ffffffffffffffff8111156200041057600080fd5b6200041e868287016200035a565b9150509250925092565b600062000437602083620004f3565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006020820190508181036000830152620004858162000428565b9050919050565b6000604051905081810181811067ffffffffffffffff82111715620004b657620004b56200059f565b5b8060405250919050565b600067ffffffffffffffff821115620004de57620004dd6200059f565b5b601f19601f8301169050602081019050919050565b600082825260208201905092915050565b60005b838110156200052457808201518184015260208101905062000507565b8381111562000534576000848401525b50505050565b600060028204905060018216806200055357607f821691505b602082108114156200056a576200056962000570565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61428380620005de6000396000f3fe6080604052600436106101c25760003560e01c806370be78f0116100f7578063a22cb46511610095578063ca80014411610064578063ca80014414610657578063e985e9c514610680578063f2fde38b146106bd578063f9fa49c4146106e6576101c2565b8063a22cb4651461059f578063a8869831146105c8578063b88d4fde146105f1578063c87b56dd1461061a576101c2565b80637809fafd116100d15780637809fafd146105025780638da5cb5b1461052d578063958e2d311461055857806395d89b4114610574576101c2565b806370be78f014610497578063715018a6146104c257806375fd0bb1146104d9576101c2565b806342842e0e1161016457806355f804b31161013e57806355f804b3146103c9578063571268bf146103f25780636352211e1461041d57806370a082311461045a576101c2565b806342842e0e14610326578063438b63001461034f5780634f6ccce71461038c576101c2565b8063095ea7b3116101a0578063095ea7b31461026c57806318160ddd1461029557806323b872dd146102c05780632f745c59146102e9576101c2565b806301ffc9a7146101c757806306fdde0314610204578063081812fc1461022f575b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e9919061300a565b61070f565b6040516101fb9190613a5c565b60405180910390f35b34801561021057600080fd5b50610219610789565b6040516102269190613a77565b60405180910390f35b34801561023b57600080fd5b506102566004803603810190610251919061309d565b61081b565b60405161026391906139d3565b60405180910390f35b34801561027857600080fd5b50610293600480360381019061028e9190612f64565b6108a0565b005b3480156102a157600080fd5b506102aa6109b8565b6040516102b79190613d59565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e29190612e5e565b6109c5565b005b3480156102f557600080fd5b50610310600480360381019061030b9190612f64565b610a25565b60405161031d9190613d59565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190612e5e565b610aca565b005b34801561035b57600080fd5b5061037660048036038101906103719190612df9565b610aea565b6040516103839190613a3a565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae919061309d565b610be4565b6040516103c09190613d59565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb919061305c565b610c7b565b005b3480156103fe57600080fd5b50610407610d11565b60405161041491906139d3565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f919061309d565b610d37565b60405161045191906139d3565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c9190612df9565b610de9565b60405161048e9190613d59565b60405180910390f35b3480156104a357600080fd5b506104ac610ea1565b6040516104b991906139d3565b60405180910390f35b3480156104ce57600080fd5b506104d7610ec7565b005b3480156104e557600080fd5b5061050060048036038101906104fb9190612fa0565b610f4f565b005b34801561050e57600080fd5b506105176110d2565b6040516105249190613a5c565b60405180910390f35b34801561053957600080fd5b506105426110e5565b60405161054f91906139d3565b60405180910390f35b610572600480360381019061056d919061309d565b61110f565b005b34801561058057600080fd5b50610589611278565b6040516105969190613a77565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190612f28565b61130a565b005b3480156105d457600080fd5b506105ef60048036038101906105ea919061309d565b611320565b005b3480156105fd57600080fd5b5061061860048036038101906106139190612ead565b611446565b005b34801561062657600080fd5b50610641600480360381019061063c919061309d565b6114a8565b60405161064e9190613a77565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190612f64565b61154f565b005b34801561068c57600080fd5b506106a760048036038101906106a29190612e22565b61165f565b6040516106b49190613a5c565b60405180910390f35b3480156106c957600080fd5b506106e460048036038101906106df9190612df9565b6116f3565b005b3480156106f257600080fd5b5061070d60048036038101906107089190612fe1565b6117eb565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610782575061078182611884565b5b9050919050565b60606000805461079890614078565b80601f01602080910402602001604051908101604052809291908181526020018280546107c490614078565b80156108115780601f106107e657610100808354040283529160200191610811565b820191906000526020600020905b8154815290600101906020018083116107f457829003601f168201915b5050505050905090565b600061082682611966565b610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c90613c19565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108ab82610d37565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390613cd9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661093b6119d2565b73ffffffffffffffffffffffffffffffffffffffff16148061096a5750610969816109646119d2565b61165f565b5b6109a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a090613b99565b60405180910390fd5b6109b383836119da565b505050565b6000600880549050905090565b6109d66109d06119d2565b82611a93565b610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90613d19565b60405180910390fd5b610a20838383611b71565b505050565b6000610a3083610de9565b8210610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6890613a99565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610ae583838360405180602001604052806000815250611446565b505050565b60606000610af783610de9565b905060008167ffffffffffffffff811115610b3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610b695781602001602082028036833780820191505090505b50905060005b82811015610bd957610b818582610a25565b828281518110610bba577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508080610bd1906140aa565b915050610b6f565b508092505050919050565b6000610bee6109b8565b8210610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2690613d39565b60405180910390fd5b60088281548110610c69577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610c836119d2565b73ffffffffffffffffffffffffffffffffffffffff16610ca16110e5565b73ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90613c59565b60405180910390fd5b80600b9080519060200190610d0d929190612b87565b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd790613bd9565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190613bb9565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ecf6119d2565b73ffffffffffffffffffffffffffffffffffffffff16610eed6110e5565b73ffffffffffffffffffffffffffffffffffffffff1614610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90613c59565b60405180910390fd5b610f4d6000611dcd565b565b610f576119d2565b73ffffffffffffffffffffffffffffffffffffffff16610f756110e5565b73ffffffffffffffffffffffffffffffffffffffff1614610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc290613c59565b60405180910390fd5b80600081518110611005577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600181518110611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60009054906101000a900460ff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111176119d2565b73ffffffffffffffffffffffffffffffffffffffff166111356110e5565b73ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290613c59565b60405180910390fd5b600060648261119a9190613f03565b9050600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6032836111e59190613f34565b9081150290604051600060405180830381858888f1935050505061120857600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6032836112519190613f34565b9081150290604051600060405180830381858888f1935050505061127457600080fd5b5050565b60606001805461128790614078565b80601f01602080910402602001604051908101604052809291908181526020018280546112b390614078565b80156113005780601f106112d557610100808354040283529160200191611300565b820191906000526020600020905b8154815290600101906020018083116112e357829003601f168201915b5050505050905090565b61131c6113156119d2565b8383611e93565b5050565b600061132a6109b8565b9050600c60009054906101000a900460ff161561137c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137390613c39565b60405180910390fd5b611f41828261138b9190613ead565b106113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c290613ad9565b60405180910390fd5b601f821061140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590613cb9565b60405180910390fd5b60005b828110156114415761142e3382846114299190613ead565b612000565b8080611439906140aa565b915050611411565b505050565b6114576114516119d2565b83611a93565b611496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148d90613d19565b60405180910390fd5b6114a28484848461201e565b50505050565b60606114b382611966565b6114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990613c99565b60405180910390fd5b60006114fc61207a565b9050600081511161151c5760405180602001604052806000815250611547565b806115268461210c565b6040516020016115379291906139af565b6040516020818303038152906040525b915050919050565b6115576119d2565b73ffffffffffffffffffffffffffffffffffffffff166115756110e5565b73ffffffffffffffffffffffffffffffffffffffff16146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290613c59565b60405180910390fd5b60006115d56109b8565b9050611f4182826115e69190613ead565b10611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d90613cf9565b60405180910390fd5b60005b82811015611659576116468482846116419190613ead565b612000565b8080611651906140aa565b915050611629565b50505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6116fb6119d2565b73ffffffffffffffffffffffffffffffffffffffff166117196110e5565b73ffffffffffffffffffffffffffffffffffffffff161461176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690613c59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690613af9565b60405180910390fd5b6117e881611dcd565b50565b6117f36119d2565b73ffffffffffffffffffffffffffffffffffffffff166118116110e5565b73ffffffffffffffffffffffffffffffffffffffff1614611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e90613c59565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061194f57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061195f575061195e826122b9565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a4d83610d37565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a9e82611966565b611add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad490613b79565b60405180910390fd5b6000611ae883610d37565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b5757508373ffffffffffffffffffffffffffffffffffffffff16611b3f8461081b565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b685750611b67818561165f565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b9182610d37565b73ffffffffffffffffffffffffffffffffffffffff1614611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde90613c79565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4e90613b39565b60405180910390fd5b611c62838383612323565b611c6d6000826119da565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cbd9190613f8e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d149190613ead565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef990613b59565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ff39190613a5c565b60405180910390a3505050565b61201a828260405180602001604052806000815250612437565b5050565b612029848484611b71565b61203584848484612492565b612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b90613ab9565b60405180910390fd5b50505050565b6060600b805461208990614078565b80601f01602080910402602001604051908101604052809291908181526020018280546120b590614078565b80156121025780601f106120d757610100808354040283529160200191612102565b820191906000526020600020905b8154815290600101906020018083116120e557829003601f168201915b5050505050905090565b60606000821415612154576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506122b4565b600082905060005b6000821461218657808061216f906140aa565b915050600a8261217f9190613f03565b915061215c565b60008167ffffffffffffffff8111156121c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156121fa5781602001600182028036833780820191505090505b5090505b600085146122ad576001826122139190613f8e565b9150600a8561222291906140f3565b603061222e9190613ead565b60f81b81838151811061226a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856122a69190613f03565b94506121fe565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61232e838383612629565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123715761236c8161262e565b6123b0565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146123af576123ae8382612677565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123f3576123ee816127e4565b612432565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612431576124308282612927565b5b5b505050565b61244183836129a6565b61244e6000848484612492565b61248d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248490613ab9565b60405180910390fd5b505050565b60006124b38473ffffffffffffffffffffffffffffffffffffffff16612b74565b1561261c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026124dc6119d2565b8786866040518563ffffffff1660e01b81526004016124fe94939291906139ee565b602060405180830381600087803b15801561251857600080fd5b505af192505050801561254957506040513d601f19601f820116820180604052508101906125469190613033565b60015b6125cc573d8060008114612579576040519150601f19603f3d011682016040523d82523d6000602084013e61257e565b606091505b506000815114156125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb90613ab9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612621565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161268484610de9565b61268e9190613f8e565b9050600060076000848152602001908152602001600020549050818114612773576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506127f89190613f8e565b905060006009600084815260200190815260200160002054905060006008838154811061284e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110612896577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061290b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061293283610de9565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0d90613bf9565b60405180910390fd5b612a1f81611966565b15612a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5690613b19565b60405180910390fd5b612a6b60008383612323565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612abb9190613ead565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612b9390614078565b90600052602060002090601f016020900481019282612bb55760008555612bfc565b82601f10612bce57805160ff1916838001178555612bfc565b82800160010185558215612bfc579182015b82811115612bfb578251825591602001919060010190612be0565b5b509050612c099190612c0d565b5090565b5b80821115612c26576000816000905550600101612c0e565b5090565b6000612c3d612c3884613da5565b613d74565b90508083825260208201905082856020860282011115612c5c57600080fd5b60005b85811015612c8c5781612c728882612d12565b845260208401935060208301925050600181019050612c5f565b5050509392505050565b6000612ca9612ca484613dd1565b613d74565b905082815260208101848484011115612cc157600080fd5b612ccc848285614036565b509392505050565b6000612ce7612ce284613e01565b613d74565b905082815260208101848484011115612cff57600080fd5b612d0a848285614036565b509392505050565b600081359050612d21816141f1565b92915050565b600082601f830112612d3857600080fd5b8135612d48848260208601612c2a565b91505092915050565b600081359050612d6081614208565b92915050565b600081359050612d758161421f565b92915050565b600081519050612d8a8161421f565b92915050565b600082601f830112612da157600080fd5b8135612db1848260208601612c96565b91505092915050565b600082601f830112612dcb57600080fd5b8135612ddb848260208601612cd4565b91505092915050565b600081359050612df381614236565b92915050565b600060208284031215612e0b57600080fd5b6000612e1984828501612d12565b91505092915050565b60008060408385031215612e3557600080fd5b6000612e4385828601612d12565b9250506020612e5485828601612d12565b9150509250929050565b600080600060608486031215612e7357600080fd5b6000612e8186828701612d12565b9350506020612e9286828701612d12565b9250506040612ea386828701612de4565b9150509250925092565b60008060008060808587031215612ec357600080fd5b6000612ed187828801612d12565b9450506020612ee287828801612d12565b9350506040612ef387828801612de4565b925050606085013567ffffffffffffffff811115612f1057600080fd5b612f1c87828801612d90565b91505092959194509250565b60008060408385031215612f3b57600080fd5b6000612f4985828601612d12565b9250506020612f5a85828601612d51565b9150509250929050565b60008060408385031215612f7757600080fd5b6000612f8585828601612d12565b9250506020612f9685828601612de4565b9150509250929050565b600060208284031215612fb257600080fd5b600082013567ffffffffffffffff811115612fcc57600080fd5b612fd884828501612d27565b91505092915050565b600060208284031215612ff357600080fd5b600061300184828501612d51565b91505092915050565b60006020828403121561301c57600080fd5b600061302a84828501612d66565b91505092915050565b60006020828403121561304557600080fd5b600061305384828501612d7b565b91505092915050565b60006020828403121561306e57600080fd5b600082013567ffffffffffffffff81111561308857600080fd5b61309484828501612dba565b91505092915050565b6000602082840312156130af57600080fd5b60006130bd84828501612de4565b91505092915050565b60006130d28383613991565b60208301905092915050565b6130e781613fc2565b82525050565b60006130f882613e41565b6131028185613e6f565b935061310d83613e31565b8060005b8381101561313e57815161312588826130c6565b975061313083613e62565b925050600181019050613111565b5085935050505092915050565b61315481613fd4565b82525050565b600061316582613e4c565b61316f8185613e80565b935061317f818560208601614045565b613188816141e0565b840191505092915050565b600061319e82613e57565b6131a88185613e91565b93506131b8818560208601614045565b6131c1816141e0565b840191505092915050565b60006131d782613e57565b6131e18185613ea2565b93506131f1818560208601614045565b80840191505092915050565b600061320a602b83613e91565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b6000613270603283613e91565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b60006132d6601783613e91565b91507f45786365656473206d6178696d756d20737570706c792e0000000000000000006000830152602082019050919050565b6000613316602683613e91565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061337c601c83613e91565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b60006133bc602483613e91565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613422601983613e91565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000613462602c83613e91565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006134c8603883613e91565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b600061352e602a83613e91565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000613594602983613e91565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006135fa602083613e91565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b600061363a602c83613e91565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006136a0600f83613e91565b91507f4d696e74696e67207061757365642e00000000000000000000000000000000006000830152602082019050919050565b60006136e0602083613e91565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613720602983613e91565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613786602f83613e91565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b60006137ec601583613e91565b91507f596f752063616e206f6e6c79206d696e742033302e00000000000000000000006000830152602082019050919050565b600061382c602183613e91565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613892601683613e91565b91507f45786365656473206d6178696d756d20737570706c79000000000000000000006000830152602082019050919050565b60006138d2603183613e91565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000613938602c83613e91565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b61399a8161402c565b82525050565b6139a98161402c565b82525050565b60006139bb82856131cc565b91506139c782846131cc565b91508190509392505050565b60006020820190506139e860008301846130de565b92915050565b6000608082019050613a0360008301876130de565b613a1060208301866130de565b613a1d60408301856139a0565b8181036060830152613a2f818461315a565b905095945050505050565b60006020820190508181036000830152613a5481846130ed565b905092915050565b6000602082019050613a71600083018461314b565b92915050565b60006020820190508181036000830152613a918184613193565b905092915050565b60006020820190508181036000830152613ab2816131fd565b9050919050565b60006020820190508181036000830152613ad281613263565b9050919050565b60006020820190508181036000830152613af2816132c9565b9050919050565b60006020820190508181036000830152613b1281613309565b9050919050565b60006020820190508181036000830152613b328161336f565b9050919050565b60006020820190508181036000830152613b52816133af565b9050919050565b60006020820190508181036000830152613b7281613415565b9050919050565b60006020820190508181036000830152613b9281613455565b9050919050565b60006020820190508181036000830152613bb2816134bb565b9050919050565b60006020820190508181036000830152613bd281613521565b9050919050565b60006020820190508181036000830152613bf281613587565b9050919050565b60006020820190508181036000830152613c12816135ed565b9050919050565b60006020820190508181036000830152613c328161362d565b9050919050565b60006020820190508181036000830152613c5281613693565b9050919050565b60006020820190508181036000830152613c72816136d3565b9050919050565b60006020820190508181036000830152613c9281613713565b9050919050565b60006020820190508181036000830152613cb281613779565b9050919050565b60006020820190508181036000830152613cd2816137df565b9050919050565b60006020820190508181036000830152613cf28161381f565b9050919050565b60006020820190508181036000830152613d1281613885565b9050919050565b60006020820190508181036000830152613d32816138c5565b9050919050565b60006020820190508181036000830152613d528161392b565b9050919050565b6000602082019050613d6e60008301846139a0565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613d9b57613d9a6141b1565b5b8060405250919050565b600067ffffffffffffffff821115613dc057613dbf6141b1565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613dec57613deb6141b1565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115613e1c57613e1b6141b1565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613eb88261402c565b9150613ec38361402c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ef857613ef7614124565b5b828201905092915050565b6000613f0e8261402c565b9150613f198361402c565b925082613f2957613f28614153565b5b828204905092915050565b6000613f3f8261402c565b9150613f4a8361402c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f8357613f82614124565b5b828202905092915050565b6000613f998261402c565b9150613fa48361402c565b925082821015613fb757613fb6614124565b5b828203905092915050565b6000613fcd8261400c565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614063578082015181840152602081019050614048565b83811115614072576000848401525b50505050565b6000600282049050600182168061409057607f821691505b602082108114156140a4576140a3614182565b5b50919050565b60006140b58261402c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140e8576140e7614124565b5b600182019050919050565b60006140fe8261402c565b91506141098361402c565b92508261411957614118614153565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6141fa81613fc2565b811461420557600080fd5b50565b61421181613fd4565b811461421c57600080fd5b50565b61422881613fe0565b811461423357600080fd5b50565b61423f8161402c565b811461424a57600080fd5b5056fea2646970667358221220fb12fc633af6981812e57ec7864838308f1af5cd0a2955dc0b5a899c8ee48f7564736f6c63430008000033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f4c61647920436c6f776e20436c75620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4c414459434c4f574e434c554200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001668747470733a2f2f646f332e696f2f6c63636e66742f00000000000000000000
Deployed Bytecode
0x6080604052600436106101c25760003560e01c806370be78f0116100f7578063a22cb46511610095578063ca80014411610064578063ca80014414610657578063e985e9c514610680578063f2fde38b146106bd578063f9fa49c4146106e6576101c2565b8063a22cb4651461059f578063a8869831146105c8578063b88d4fde146105f1578063c87b56dd1461061a576101c2565b80637809fafd116100d15780637809fafd146105025780638da5cb5b1461052d578063958e2d311461055857806395d89b4114610574576101c2565b806370be78f014610497578063715018a6146104c257806375fd0bb1146104d9576101c2565b806342842e0e1161016457806355f804b31161013e57806355f804b3146103c9578063571268bf146103f25780636352211e1461041d57806370a082311461045a576101c2565b806342842e0e14610326578063438b63001461034f5780634f6ccce71461038c576101c2565b8063095ea7b3116101a0578063095ea7b31461026c57806318160ddd1461029557806323b872dd146102c05780632f745c59146102e9576101c2565b806301ffc9a7146101c757806306fdde0314610204578063081812fc1461022f575b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e9919061300a565b61070f565b6040516101fb9190613a5c565b60405180910390f35b34801561021057600080fd5b50610219610789565b6040516102269190613a77565b60405180910390f35b34801561023b57600080fd5b506102566004803603810190610251919061309d565b61081b565b60405161026391906139d3565b60405180910390f35b34801561027857600080fd5b50610293600480360381019061028e9190612f64565b6108a0565b005b3480156102a157600080fd5b506102aa6109b8565b6040516102b79190613d59565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e29190612e5e565b6109c5565b005b3480156102f557600080fd5b50610310600480360381019061030b9190612f64565b610a25565b60405161031d9190613d59565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190612e5e565b610aca565b005b34801561035b57600080fd5b5061037660048036038101906103719190612df9565b610aea565b6040516103839190613a3a565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae919061309d565b610be4565b6040516103c09190613d59565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb919061305c565b610c7b565b005b3480156103fe57600080fd5b50610407610d11565b60405161041491906139d3565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f919061309d565b610d37565b60405161045191906139d3565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c9190612df9565b610de9565b60405161048e9190613d59565b60405180910390f35b3480156104a357600080fd5b506104ac610ea1565b6040516104b991906139d3565b60405180910390f35b3480156104ce57600080fd5b506104d7610ec7565b005b3480156104e557600080fd5b5061050060048036038101906104fb9190612fa0565b610f4f565b005b34801561050e57600080fd5b506105176110d2565b6040516105249190613a5c565b60405180910390f35b34801561053957600080fd5b506105426110e5565b60405161054f91906139d3565b60405180910390f35b610572600480360381019061056d919061309d565b61110f565b005b34801561058057600080fd5b50610589611278565b6040516105969190613a77565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190612f28565b61130a565b005b3480156105d457600080fd5b506105ef60048036038101906105ea919061309d565b611320565b005b3480156105fd57600080fd5b5061061860048036038101906106139190612ead565b611446565b005b34801561062657600080fd5b50610641600480360381019061063c919061309d565b6114a8565b60405161064e9190613a77565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190612f64565b61154f565b005b34801561068c57600080fd5b506106a760048036038101906106a29190612e22565b61165f565b6040516106b49190613a5c565b60405180910390f35b3480156106c957600080fd5b506106e460048036038101906106df9190612df9565b6116f3565b005b3480156106f257600080fd5b5061070d60048036038101906107089190612fe1565b6117eb565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610782575061078182611884565b5b9050919050565b60606000805461079890614078565b80601f01602080910402602001604051908101604052809291908181526020018280546107c490614078565b80156108115780601f106107e657610100808354040283529160200191610811565b820191906000526020600020905b8154815290600101906020018083116107f457829003601f168201915b5050505050905090565b600061082682611966565b610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c90613c19565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108ab82610d37565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390613cd9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661093b6119d2565b73ffffffffffffffffffffffffffffffffffffffff16148061096a5750610969816109646119d2565b61165f565b5b6109a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a090613b99565b60405180910390fd5b6109b383836119da565b505050565b6000600880549050905090565b6109d66109d06119d2565b82611a93565b610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90613d19565b60405180910390fd5b610a20838383611b71565b505050565b6000610a3083610de9565b8210610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6890613a99565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610ae583838360405180602001604052806000815250611446565b505050565b60606000610af783610de9565b905060008167ffffffffffffffff811115610b3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610b695781602001602082028036833780820191505090505b50905060005b82811015610bd957610b818582610a25565b828281518110610bba577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508080610bd1906140aa565b915050610b6f565b508092505050919050565b6000610bee6109b8565b8210610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2690613d39565b60405180910390fd5b60088281548110610c69577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610c836119d2565b73ffffffffffffffffffffffffffffffffffffffff16610ca16110e5565b73ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90613c59565b60405180910390fd5b80600b9080519060200190610d0d929190612b87565b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd790613bd9565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190613bb9565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ecf6119d2565b73ffffffffffffffffffffffffffffffffffffffff16610eed6110e5565b73ffffffffffffffffffffffffffffffffffffffff1614610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90613c59565b60405180910390fd5b610f4d6000611dcd565b565b610f576119d2565b73ffffffffffffffffffffffffffffffffffffffff16610f756110e5565b73ffffffffffffffffffffffffffffffffffffffff1614610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc290613c59565b60405180910390fd5b80600081518110611005577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600181518110611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60009054906101000a900460ff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111176119d2565b73ffffffffffffffffffffffffffffffffffffffff166111356110e5565b73ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290613c59565b60405180910390fd5b600060648261119a9190613f03565b9050600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6032836111e59190613f34565b9081150290604051600060405180830381858888f1935050505061120857600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6032836112519190613f34565b9081150290604051600060405180830381858888f1935050505061127457600080fd5b5050565b60606001805461128790614078565b80601f01602080910402602001604051908101604052809291908181526020018280546112b390614078565b80156113005780601f106112d557610100808354040283529160200191611300565b820191906000526020600020905b8154815290600101906020018083116112e357829003601f168201915b5050505050905090565b61131c6113156119d2565b8383611e93565b5050565b600061132a6109b8565b9050600c60009054906101000a900460ff161561137c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137390613c39565b60405180910390fd5b611f41828261138b9190613ead565b106113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c290613ad9565b60405180910390fd5b601f821061140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590613cb9565b60405180910390fd5b60005b828110156114415761142e3382846114299190613ead565b612000565b8080611439906140aa565b915050611411565b505050565b6114576114516119d2565b83611a93565b611496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148d90613d19565b60405180910390fd5b6114a28484848461201e565b50505050565b60606114b382611966565b6114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990613c99565b60405180910390fd5b60006114fc61207a565b9050600081511161151c5760405180602001604052806000815250611547565b806115268461210c565b6040516020016115379291906139af565b6040516020818303038152906040525b915050919050565b6115576119d2565b73ffffffffffffffffffffffffffffffffffffffff166115756110e5565b73ffffffffffffffffffffffffffffffffffffffff16146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290613c59565b60405180910390fd5b60006115d56109b8565b9050611f4182826115e69190613ead565b10611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d90613cf9565b60405180910390fd5b60005b82811015611659576116468482846116419190613ead565b612000565b8080611651906140aa565b915050611629565b50505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6116fb6119d2565b73ffffffffffffffffffffffffffffffffffffffff166117196110e5565b73ffffffffffffffffffffffffffffffffffffffff161461176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690613c59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690613af9565b60405180910390fd5b6117e881611dcd565b50565b6117f36119d2565b73ffffffffffffffffffffffffffffffffffffffff166118116110e5565b73ffffffffffffffffffffffffffffffffffffffff1614611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e90613c59565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061194f57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061195f575061195e826122b9565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a4d83610d37565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a9e82611966565b611add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad490613b79565b60405180910390fd5b6000611ae883610d37565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b5757508373ffffffffffffffffffffffffffffffffffffffff16611b3f8461081b565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b685750611b67818561165f565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b9182610d37565b73ffffffffffffffffffffffffffffffffffffffff1614611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde90613c79565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4e90613b39565b60405180910390fd5b611c62838383612323565b611c6d6000826119da565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cbd9190613f8e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d149190613ead565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef990613b59565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ff39190613a5c565b60405180910390a3505050565b61201a828260405180602001604052806000815250612437565b5050565b612029848484611b71565b61203584848484612492565b612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b90613ab9565b60405180910390fd5b50505050565b6060600b805461208990614078565b80601f01602080910402602001604051908101604052809291908181526020018280546120b590614078565b80156121025780601f106120d757610100808354040283529160200191612102565b820191906000526020600020905b8154815290600101906020018083116120e557829003601f168201915b5050505050905090565b60606000821415612154576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506122b4565b600082905060005b6000821461218657808061216f906140aa565b915050600a8261217f9190613f03565b915061215c565b60008167ffffffffffffffff8111156121c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156121fa5781602001600182028036833780820191505090505b5090505b600085146122ad576001826122139190613f8e565b9150600a8561222291906140f3565b603061222e9190613ead565b60f81b81838151811061226a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856122a69190613f03565b94506121fe565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61232e838383612629565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123715761236c8161262e565b6123b0565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146123af576123ae8382612677565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123f3576123ee816127e4565b612432565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612431576124308282612927565b5b5b505050565b61244183836129a6565b61244e6000848484612492565b61248d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248490613ab9565b60405180910390fd5b505050565b60006124b38473ffffffffffffffffffffffffffffffffffffffff16612b74565b1561261c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026124dc6119d2565b8786866040518563ffffffff1660e01b81526004016124fe94939291906139ee565b602060405180830381600087803b15801561251857600080fd5b505af192505050801561254957506040513d601f19601f820116820180604052508101906125469190613033565b60015b6125cc573d8060008114612579576040519150601f19603f3d011682016040523d82523d6000602084013e61257e565b606091505b506000815114156125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb90613ab9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612621565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161268484610de9565b61268e9190613f8e565b9050600060076000848152602001908152602001600020549050818114612773576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506127f89190613f8e565b905060006009600084815260200190815260200160002054905060006008838154811061284e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110612896577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061290b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061293283610de9565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0d90613bf9565b60405180910390fd5b612a1f81611966565b15612a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5690613b19565b60405180910390fd5b612a6b60008383612323565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612abb9190613ead565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612b9390614078565b90600052602060002090601f016020900481019282612bb55760008555612bfc565b82601f10612bce57805160ff1916838001178555612bfc565b82800160010185558215612bfc579182015b82811115612bfb578251825591602001919060010190612be0565b5b509050612c099190612c0d565b5090565b5b80821115612c26576000816000905550600101612c0e565b5090565b6000612c3d612c3884613da5565b613d74565b90508083825260208201905082856020860282011115612c5c57600080fd5b60005b85811015612c8c5781612c728882612d12565b845260208401935060208301925050600181019050612c5f565b5050509392505050565b6000612ca9612ca484613dd1565b613d74565b905082815260208101848484011115612cc157600080fd5b612ccc848285614036565b509392505050565b6000612ce7612ce284613e01565b613d74565b905082815260208101848484011115612cff57600080fd5b612d0a848285614036565b509392505050565b600081359050612d21816141f1565b92915050565b600082601f830112612d3857600080fd5b8135612d48848260208601612c2a565b91505092915050565b600081359050612d6081614208565b92915050565b600081359050612d758161421f565b92915050565b600081519050612d8a8161421f565b92915050565b600082601f830112612da157600080fd5b8135612db1848260208601612c96565b91505092915050565b600082601f830112612dcb57600080fd5b8135612ddb848260208601612cd4565b91505092915050565b600081359050612df381614236565b92915050565b600060208284031215612e0b57600080fd5b6000612e1984828501612d12565b91505092915050565b60008060408385031215612e3557600080fd5b6000612e4385828601612d12565b9250506020612e5485828601612d12565b9150509250929050565b600080600060608486031215612e7357600080fd5b6000612e8186828701612d12565b9350506020612e9286828701612d12565b9250506040612ea386828701612de4565b9150509250925092565b60008060008060808587031215612ec357600080fd5b6000612ed187828801612d12565b9450506020612ee287828801612d12565b9350506040612ef387828801612de4565b925050606085013567ffffffffffffffff811115612f1057600080fd5b612f1c87828801612d90565b91505092959194509250565b60008060408385031215612f3b57600080fd5b6000612f4985828601612d12565b9250506020612f5a85828601612d51565b9150509250929050565b60008060408385031215612f7757600080fd5b6000612f8585828601612d12565b9250506020612f9685828601612de4565b9150509250929050565b600060208284031215612fb257600080fd5b600082013567ffffffffffffffff811115612fcc57600080fd5b612fd884828501612d27565b91505092915050565b600060208284031215612ff357600080fd5b600061300184828501612d51565b91505092915050565b60006020828403121561301c57600080fd5b600061302a84828501612d66565b91505092915050565b60006020828403121561304557600080fd5b600061305384828501612d7b565b91505092915050565b60006020828403121561306e57600080fd5b600082013567ffffffffffffffff81111561308857600080fd5b61309484828501612dba565b91505092915050565b6000602082840312156130af57600080fd5b60006130bd84828501612de4565b91505092915050565b60006130d28383613991565b60208301905092915050565b6130e781613fc2565b82525050565b60006130f882613e41565b6131028185613e6f565b935061310d83613e31565b8060005b8381101561313e57815161312588826130c6565b975061313083613e62565b925050600181019050613111565b5085935050505092915050565b61315481613fd4565b82525050565b600061316582613e4c565b61316f8185613e80565b935061317f818560208601614045565b613188816141e0565b840191505092915050565b600061319e82613e57565b6131a88185613e91565b93506131b8818560208601614045565b6131c1816141e0565b840191505092915050565b60006131d782613e57565b6131e18185613ea2565b93506131f1818560208601614045565b80840191505092915050565b600061320a602b83613e91565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b6000613270603283613e91565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b60006132d6601783613e91565b91507f45786365656473206d6178696d756d20737570706c792e0000000000000000006000830152602082019050919050565b6000613316602683613e91565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061337c601c83613e91565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b60006133bc602483613e91565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613422601983613e91565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000613462602c83613e91565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006134c8603883613e91565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b600061352e602a83613e91565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000613594602983613e91565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006135fa602083613e91565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b600061363a602c83613e91565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006136a0600f83613e91565b91507f4d696e74696e67207061757365642e00000000000000000000000000000000006000830152602082019050919050565b60006136e0602083613e91565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613720602983613e91565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613786602f83613e91565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b60006137ec601583613e91565b91507f596f752063616e206f6e6c79206d696e742033302e00000000000000000000006000830152602082019050919050565b600061382c602183613e91565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613892601683613e91565b91507f45786365656473206d6178696d756d20737570706c79000000000000000000006000830152602082019050919050565b60006138d2603183613e91565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000613938602c83613e91565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b61399a8161402c565b82525050565b6139a98161402c565b82525050565b60006139bb82856131cc565b91506139c782846131cc565b91508190509392505050565b60006020820190506139e860008301846130de565b92915050565b6000608082019050613a0360008301876130de565b613a1060208301866130de565b613a1d60408301856139a0565b8181036060830152613a2f818461315a565b905095945050505050565b60006020820190508181036000830152613a5481846130ed565b905092915050565b6000602082019050613a71600083018461314b565b92915050565b60006020820190508181036000830152613a918184613193565b905092915050565b60006020820190508181036000830152613ab2816131fd565b9050919050565b60006020820190508181036000830152613ad281613263565b9050919050565b60006020820190508181036000830152613af2816132c9565b9050919050565b60006020820190508181036000830152613b1281613309565b9050919050565b60006020820190508181036000830152613b328161336f565b9050919050565b60006020820190508181036000830152613b52816133af565b9050919050565b60006020820190508181036000830152613b7281613415565b9050919050565b60006020820190508181036000830152613b9281613455565b9050919050565b60006020820190508181036000830152613bb2816134bb565b9050919050565b60006020820190508181036000830152613bd281613521565b9050919050565b60006020820190508181036000830152613bf281613587565b9050919050565b60006020820190508181036000830152613c12816135ed565b9050919050565b60006020820190508181036000830152613c328161362d565b9050919050565b60006020820190508181036000830152613c5281613693565b9050919050565b60006020820190508181036000830152613c72816136d3565b9050919050565b60006020820190508181036000830152613c9281613713565b9050919050565b60006020820190508181036000830152613cb281613779565b9050919050565b60006020820190508181036000830152613cd2816137df565b9050919050565b60006020820190508181036000830152613cf28161381f565b9050919050565b60006020820190508181036000830152613d1281613885565b9050919050565b60006020820190508181036000830152613d32816138c5565b9050919050565b60006020820190508181036000830152613d528161392b565b9050919050565b6000602082019050613d6e60008301846139a0565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613d9b57613d9a6141b1565b5b8060405250919050565b600067ffffffffffffffff821115613dc057613dbf6141b1565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613dec57613deb6141b1565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115613e1c57613e1b6141b1565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613eb88261402c565b9150613ec38361402c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ef857613ef7614124565b5b828201905092915050565b6000613f0e8261402c565b9150613f198361402c565b925082613f2957613f28614153565b5b828204905092915050565b6000613f3f8261402c565b9150613f4a8361402c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f8357613f82614124565b5b828202905092915050565b6000613f998261402c565b9150613fa48361402c565b925082821015613fb757613fb6614124565b5b828203905092915050565b6000613fcd8261400c565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614063578082015181840152602081019050614048565b83811115614072576000848401525b50505050565b6000600282049050600182168061409057607f821691505b602082108114156140a4576140a3614182565b5b50919050565b60006140b58261402c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140e8576140e7614124565b5b600182019050919050565b60006140fe8261402c565b91506141098361402c565b92508261411957614118614153565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6141fa81613fc2565b811461420557600080fd5b50565b61421181613fd4565b811461421c57600080fd5b50565b61422881613fe0565b811461423357600080fd5b50565b61423f8161402c565b811461424a57600080fd5b5056fea2646970667358221220fb12fc633af6981812e57ec7864838308f1af5cd0a2955dc0b5a899c8ee48f7564736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f4c61647920436c6f776e20436c75620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4c414459434c4f574e434c554200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001668747470733a2f2f646f332e696f2f6c63636e66742f00000000000000000000
-----Decoded View---------------
Arg [0] : name (string): Lady Clown Club
Arg [1] : symbol (string): LADYCLOWNCLUB
Arg [2] : baseURI (string): https://do3.io/lccnft/
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [4] : 4c61647920436c6f776e20436c75620000000000000000000000000000000000
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [6] : 4c414459434c4f574e434c554200000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000016
Arg [8] : 68747470733a2f2f646f332e696f2f6c63636e66742f00000000000000000000
Deployed Bytecode Sourcemap
44521:2221:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34805:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21524:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23083:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22606:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35445:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23833:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35113:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24243:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45683:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35635:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46164:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44712:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21218:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20948:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44684:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42590:103;;;;;;;;;;;;;:::i;:::-;;46367:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44644:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41939:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46514:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21693:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23376:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44928:439;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24499:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21868:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45376:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23602:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42848:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46276:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34805:224;34907:4;34946:35;34931:50;;;:11;:50;;;;:90;;;;34985:36;35009:11;34985:23;:36::i;:::-;34931:90;34924:97;;34805:224;;;:::o;21524:100::-;21578:13;21611:5;21604:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21524:100;:::o;23083:221::-;23159:7;23187:16;23195:7;23187;:16::i;:::-;23179:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23272:15;:24;23288:7;23272:24;;;;;;;;;;;;;;;;;;;;;23265:31;;23083:221;;;:::o;22606:411::-;22687:13;22703:23;22718:7;22703:14;:23::i;:::-;22687:39;;22751:5;22745:11;;:2;:11;;;;22737:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22845:5;22829:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;22854:37;22871:5;22878:12;:10;:12::i;:::-;22854:16;:37::i;:::-;22829:62;22807:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;22988:21;22997:2;23001:7;22988:8;:21::i;:::-;22606:411;;;:::o;35445:113::-;35506:7;35533:10;:17;;;;35526:24;;35445:113;:::o;23833:339::-;24028:41;24047:12;:10;:12::i;:::-;24061:7;24028:18;:41::i;:::-;24020:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24136:28;24146:4;24152:2;24156:7;24136:9;:28::i;:::-;23833:339;;;:::o;35113:256::-;35210:7;35246:23;35263:5;35246:16;:23::i;:::-;35238:5;:31;35230:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;35335:12;:19;35348:5;35335:19;;;;;;;;;;;;;;;:26;35355:5;35335:26;;;;;;;;;;;;35328:33;;35113:256;;;;:::o;24243:185::-;24381:39;24398:4;24404:2;24408:7;24381:39;;;;;;;;;;;;:16;:39::i;:::-;24243:185;;;:::o;45683:341::-;45742:16;45771:18;45792:17;45802:6;45792:9;:17::i;:::-;45771:38;;45821:25;45863:10;45849:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45821:53;;45889:9;45885:106;45904:10;45900:1;:14;45885:106;;;45949:30;45969:6;45977:1;45949:19;:30::i;:::-;45935:8;45944:1;45935:11;;;;;;;;;;;;;;;;;;;;;:44;;;;;45916:3;;;;;:::i;:::-;;;;45885:106;;;;46008:8;46001:15;;;;45683:341;;;:::o;35635:233::-;35710:7;35746:30;:28;:30::i;:::-;35738:5;:38;35730:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;35843:10;35854:5;35843:17;;;;;;;;;;;;;;;;;;;;;;;;35836:24;;35635:233;;;:::o;46164:102::-;42170:12;:10;:12::i;:::-;42159:23;;:7;:5;:7::i;:::-;:23;;;42151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46251:7:::1;46235:13;:23;;;;;;;;;;;;:::i;:::-;;46164:102:::0;:::o;44712:21::-;;;;;;;;;;;;;:::o;21218:239::-;21290:7;21310:13;21326:7;:16;21334:7;21326:16;;;;;;;;;;;;;;;;;;;;;21310:32;;21378:1;21361:19;;:5;:19;;;;21353:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21444:5;21437:12;;;21218:239;;;:::o;20948:208::-;21020:7;21065:1;21048:19;;:5;:19;;;;21040:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21132:9;:16;21142:5;21132:16;;;;;;;;;;;;;;;;21125:23;;20948:208;;;:::o;44684:21::-;;;;;;;;;;;;;:::o;42590:103::-;42170:12;:10;:12::i;:::-;42159:23;;:7;:5;:7::i;:::-;:23;;;42151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42655:30:::1;42682:1;42655:18;:30::i;:::-;42590:103::o:0;46367:139::-;42170:12;:10;:12::i;:::-;42159:23;;:7;:5;:7::i;:::-;:23;;;42151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46458:7:::1;46466:1;46458:10;;;;;;;;;;;;;;;;;;;;;;46449:6;;:19;;;;;;;;;;;;;;;;;;46488:7;46496:1;46488:10;;;;;;;;;;;;;;;;;;;;;;46479:6;;:19;;;;;;;;;;;;;;;;;;46367:139:::0;:::o;44644:30::-;;;;;;;;;;;;;:::o;41939:87::-;41985:7;42012:6;;;;;;;;;;;42005:13;;41939:87;:::o;46514:221::-;42170:12;:10;:12::i;:::-;42159:23;;:7;:5;:7::i;:::-;:23;;;42151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46585:17:::1;46612:3;46605:4;:10;;;;:::i;:::-;46585:30;;46642:6;;;;;;;;;;;46634:20;;:36;46667:2;46655:9;:14;;;;:::i;:::-;46634:36;;;;;;;;;;;;;;;;;;;;;;;46626:45;;;::::0;::::1;;46698:6;;;;;;;;;;;46690:20;;:36;46723:2;46711:9;:14;;;;:::i;:::-;46690:36;;;;;;;;;;;;;;;;;;;;;;;46682:45;;;::::0;::::1;;42230:1;46514:221:::0;:::o;21693:104::-;21749:13;21782:7;21775:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21693:104;:::o;23376:155::-;23471:52;23490:12;:10;:12::i;:::-;23504:8;23514;23471:18;:52::i;:::-;23376:155;;:::o;44928:439::-;44988:14;45005:13;:11;:13::i;:::-;44988:30;;45041:11;;;;;;;;;;;45040:12;45031:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;45130:4;45124:3;45115:6;:12;;;;:::i;:::-;:19;45106:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;45204:2;45198:3;:8;45189:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;45273:9;45269:90;45288:3;45284:1;:7;45269:90;;;45312:35;45323:10;45344:1;45335:6;:10;;;;:::i;:::-;45312:9;:35::i;:::-;45293:3;;;;;:::i;:::-;;;;45269:90;;;;44928:439;;:::o;24499:328::-;24674:41;24693:12;:10;:12::i;:::-;24707:7;24674:18;:41::i;:::-;24666:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24780:39;24794:4;24800:2;24804:7;24813:5;24780:13;:39::i;:::-;24499:328;;;;:::o;21868:334::-;21941:13;21975:16;21983:7;21975;:16::i;:::-;21967:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22056:21;22080:10;:8;:10::i;:::-;22056:34;;22132:1;22114:7;22108:21;:25;:86;;;;;;;;;;;;;;;;;22160:7;22169:18;:7;:16;:18::i;:::-;22143:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22108:86;22101:93;;;21868:334;;;:::o;45376:299::-;42170:12;:10;:12::i;:::-;42159:23;;:7;:5;:7::i;:::-;:23;;;42151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45456:14:::1;45473:13;:11;:13::i;:::-;45456:30;;45526:4;45516:7;45507:6;:16;;;;:::i;:::-;:23;45498:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;45584:9;45580:87;45599:7;45595:1;:11;45580:87;;;45627:28;45638:3;45652:1;45643:6;:10;;;;:::i;:::-;45627:9;:28::i;:::-;45608:3;;;;;:::i;:::-;;;;45580:87;;;;42230:1;45376:299:::0;;:::o;23602:164::-;23699:4;23723:18;:25;23742:5;23723:25;;;;;;;;;;;;;;;:35;23749:8;23723:35;;;;;;;;;;;;;;;;;;;;;;;;;23716:42;;23602:164;;;;:::o;42848:201::-;42170:12;:10;:12::i;:::-;42159:23;;:7;:5;:7::i;:::-;:23;;;42151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42957:1:::1;42937:22;;:8;:22;;;;42929:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;43013:28;43032:8;43013:18;:28::i;:::-;42848:201:::0;:::o;46276:82::-;42170:12;:10;:12::i;:::-;42159:23;;:7;:5;:7::i;:::-;:23;;;42151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46347:3:::1;46333:11;;:17;;;;;;;;;;;;;;;;;;46276:82:::0;:::o;20579:305::-;20681:4;20733:25;20718:40;;;:11;:40;;;;:105;;;;20790:33;20775:48;;;:11;:48;;;;20718:105;:158;;;;20840:36;20864:11;20840:23;:36::i;:::-;20718:158;20698:178;;20579:305;;;:::o;26337:127::-;26402:4;26454:1;26426:30;;:7;:16;26434:7;26426:16;;;;;;;;;;;;;;;;;;;;;:30;;;;26419:37;;26337:127;;;:::o;8303:98::-;8356:7;8383:10;8376:17;;8303:98;:::o;30319:174::-;30421:2;30394:15;:24;30410:7;30394:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;30477:7;30473:2;30439:46;;30448:23;30463:7;30448:14;:23::i;:::-;30439:46;;;;;;;;;;;;30319:174;;:::o;26631:348::-;26724:4;26749:16;26757:7;26749;:16::i;:::-;26741:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26825:13;26841:23;26856:7;26841:14;:23::i;:::-;26825:39;;26894:5;26883:16;;:7;:16;;;:51;;;;26927:7;26903:31;;:20;26915:7;26903:11;:20::i;:::-;:31;;;26883:51;:87;;;;26938:32;26955:5;26962:7;26938:16;:32::i;:::-;26883:87;26875:96;;;26631:348;;;;:::o;29623:578::-;29782:4;29755:31;;:23;29770:7;29755:14;:23::i;:::-;:31;;;29747:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;29865:1;29851:16;;:2;:16;;;;29843:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29921:39;29942:4;29948:2;29952:7;29921:20;:39::i;:::-;30025:29;30042:1;30046:7;30025:8;:29::i;:::-;30086:1;30067:9;:15;30077:4;30067:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;30115:1;30098:9;:13;30108:2;30098:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30146:2;30127:7;:16;30135:7;30127:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30185:7;30181:2;30166:27;;30175:4;30166:27;;;;;;;;;;;;29623:578;;;:::o;43209:191::-;43283:16;43302:6;;;;;;;;;;;43283:25;;43328:8;43319:6;;:17;;;;;;;;;;;;;;;;;;43383:8;43352:40;;43373:8;43352:40;;;;;;;;;;;;43209:191;;:::o;30635:315::-;30790:8;30781:17;;:5;:17;;;;30773:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;30877:8;30839:18;:25;30858:5;30839:25;;;;;;;;;;;;;;;:35;30865:8;30839:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;30923:8;30901:41;;30916:5;30901:41;;;30933:8;30901:41;;;;;;:::i;:::-;;;;;;;;30635:315;;;:::o;27321:110::-;27397:26;27407:2;27411:7;27397:26;;;;;;;;;;;;:9;:26::i;:::-;27321:110;;:::o;25709:315::-;25866:28;25876:4;25882:2;25886:7;25866:9;:28::i;:::-;25913:48;25936:4;25942:2;25946:7;25955:5;25913:22;:48::i;:::-;25905:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;25709:315;;;;:::o;46038:114::-;46098:13;46131;46124:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46038:114;:::o;5944:723::-;6000:13;6230:1;6221:5;:10;6217:53;;;6248:10;;;;;;;;;;;;;;;;;;;;;6217:53;6280:12;6295:5;6280:20;;6311:14;6336:78;6351:1;6343:4;:9;6336:78;;6369:8;;;;;:::i;:::-;;;;6400:2;6392:10;;;;;:::i;:::-;;;6336:78;;;6424:19;6456:6;6446:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6424:39;;6474:154;6490:1;6481:5;:10;6474:154;;6518:1;6508:11;;;;;:::i;:::-;;;6585:2;6577:5;:10;;;;:::i;:::-;6564:2;:24;;;;:::i;:::-;6551:39;;6534:6;6541;6534:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;6614:2;6605:11;;;;;:::i;:::-;;;6474:154;;;6652:6;6638:21;;;;;5944:723;;;;:::o;19186:157::-;19271:4;19310:25;19295:40;;;:11;:40;;;;19288:47;;19186:157;;;:::o;36481:589::-;36625:45;36652:4;36658:2;36662:7;36625:26;:45::i;:::-;36703:1;36687:18;;:4;:18;;;36683:187;;;36722:40;36754:7;36722:31;:40::i;:::-;36683:187;;;36792:2;36784:10;;:4;:10;;;36780:90;;36811:47;36844:4;36850:7;36811:32;:47::i;:::-;36780:90;36683:187;36898:1;36884:16;;:2;:16;;;36880:183;;;36917:45;36954:7;36917:36;:45::i;:::-;36880:183;;;36990:4;36984:10;;:2;:10;;;36980:83;;37011:40;37039:2;37043:7;37011:27;:40::i;:::-;36980:83;36880:183;36481:589;;;:::o;27658:321::-;27788:18;27794:2;27798:7;27788:5;:18::i;:::-;27839:54;27870:1;27874:2;27878:7;27887:5;27839:22;:54::i;:::-;27817:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;27658:321;;;:::o;31515:799::-;31670:4;31691:15;:2;:13;;;:15::i;:::-;31687:620;;;31743:2;31727:36;;;31764:12;:10;:12::i;:::-;31778:4;31784:7;31793:5;31727:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;31723:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31986:1;31969:6;:13;:18;31965:272;;;32012:60;;;;;;;;;;:::i;:::-;;;;;;;;31965:272;32187:6;32181:13;32172:6;32168:2;32164:15;32157:38;31723:529;31860:41;;;31850:51;;;:6;:51;;;;31843:58;;;;;31687:620;32291:4;32284:11;;31515:799;;;;;;;:::o;32886:126::-;;;;:::o;37793:164::-;37897:10;:17;;;;37870:15;:24;37886:7;37870:24;;;;;;;;;;;:44;;;;37925:10;37941:7;37925:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37793:164;:::o;38584:988::-;38850:22;38900:1;38875:22;38892:4;38875:16;:22::i;:::-;:26;;;;:::i;:::-;38850:51;;38912:18;38933:17;:26;38951:7;38933:26;;;;;;;;;;;;38912:47;;39080:14;39066:10;:28;39062:328;;39111:19;39133:12;:18;39146:4;39133:18;;;;;;;;;;;;;;;:34;39152:14;39133:34;;;;;;;;;;;;39111:56;;39217:11;39184:12;:18;39197:4;39184:18;;;;;;;;;;;;;;;:30;39203:10;39184:30;;;;;;;;;;;:44;;;;39334:10;39301:17;:30;39319:11;39301:30;;;;;;;;;;;:43;;;;39062:328;;39486:17;:26;39504:7;39486:26;;;;;;;;;;;39479:33;;;39530:12;:18;39543:4;39530:18;;;;;;;;;;;;;;;:34;39549:14;39530:34;;;;;;;;;;;39523:41;;;38584:988;;;;:::o;39867:1079::-;40120:22;40165:1;40145:10;:17;;;;:21;;;;:::i;:::-;40120:46;;40177:18;40198:15;:24;40214:7;40198:24;;;;;;;;;;;;40177:45;;40549:19;40571:10;40582:14;40571:26;;;;;;;;;;;;;;;;;;;;;;;;40549:48;;40635:11;40610:10;40621;40610:22;;;;;;;;;;;;;;;;;;;;;;;:36;;;;40746:10;40715:15;:28;40731:11;40715:28;;;;;;;;;;;:41;;;;40887:15;:24;40903:7;40887:24;;;;;;;;;;;40880:31;;;40922:10;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39867:1079;;;;:::o;37371:221::-;37456:14;37473:20;37490:2;37473:16;:20::i;:::-;37456:37;;37531:7;37504:12;:16;37517:2;37504:16;;;;;;;;;;;;;;;:24;37521:6;37504:24;;;;;;;;;;;:34;;;;37578:6;37549:17;:26;37567:7;37549:26;;;;;;;;;;;:35;;;;37371:221;;;:::o;28315:382::-;28409:1;28395:16;;:2;:16;;;;28387:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;28468:16;28476:7;28468;:16::i;:::-;28467:17;28459:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;28530:45;28559:1;28563:2;28567:7;28530:20;:45::i;:::-;28605:1;28588:9;:13;28598:2;28588:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;28636:2;28617:7;:16;28625:7;28617:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;28681:7;28677:2;28656:33;;28673:1;28656:33;;;;;;;;;;;;28315:382;;:::o;11074:387::-;11134:4;11342:12;11409:7;11397:20;11389:28;;11452:1;11445:4;:8;11438:15;;;11074:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;652:342::-;;754:64;769:48;810:6;769:48;:::i;:::-;754:64;:::i;:::-;745:73;;841:6;834:5;827:21;879:4;872:5;868:16;917:3;908:6;903:3;899:16;896:25;893:2;;;934:1;931;924:12;893:2;947:41;981:6;976:3;971;947:41;:::i;:::-;735:259;;;;;;:::o;1000:344::-;;1103:65;1118:49;1160:6;1118:49;:::i;:::-;1103:65;:::i;:::-;1094:74;;1191:6;1184:5;1177:21;1229:4;1222:5;1218:16;1267:3;1258:6;1253:3;1249:16;1246:25;1243:2;;;1284:1;1281;1274:12;1243:2;1297:41;1331:6;1326:3;1321;1297:41;:::i;:::-;1084:260;;;;;;:::o;1350:139::-;;1434:6;1421:20;1412:29;;1450:33;1477:5;1450:33;:::i;:::-;1402:87;;;;:::o;1512:303::-;;1632:3;1625:4;1617:6;1613:17;1609:27;1599:2;;1650:1;1647;1640:12;1599:2;1690:6;1677:20;1715:94;1805:3;1797:6;1790:4;1782:6;1778:17;1715:94;:::i;:::-;1706:103;;1589:226;;;;;:::o;1821:133::-;;1902:6;1889:20;1880:29;;1918:30;1942:5;1918:30;:::i;:::-;1870:84;;;;:::o;1960:137::-;;2043:6;2030:20;2021:29;;2059:32;2085:5;2059:32;:::i;:::-;2011:86;;;;:::o;2103:141::-;;2190:6;2184:13;2175:22;;2206:32;2232:5;2206:32;:::i;:::-;2165:79;;;;:::o;2263:271::-;;2367:3;2360:4;2352:6;2348:17;2344:27;2334:2;;2385:1;2382;2375:12;2334:2;2425:6;2412:20;2450:78;2524:3;2516:6;2509:4;2501:6;2497:17;2450:78;:::i;:::-;2441:87;;2324:210;;;;;:::o;2554:273::-;;2659:3;2652:4;2644:6;2640:17;2636:27;2626:2;;2677:1;2674;2667:12;2626:2;2717:6;2704:20;2742:79;2817:3;2809:6;2802:4;2794:6;2790:17;2742:79;:::i;:::-;2733:88;;2616:211;;;;;:::o;2833:139::-;;2917:6;2904:20;2895:29;;2933:33;2960:5;2933:33;:::i;:::-;2885:87;;;;:::o;2978:262::-;;3086:2;3074:9;3065:7;3061:23;3057:32;3054:2;;;3102:1;3099;3092:12;3054:2;3145:1;3170:53;3215:7;3206:6;3195:9;3191:22;3170:53;:::i;:::-;3160:63;;3116:117;3044:196;;;;:::o;3246:407::-;;;3371:2;3359:9;3350:7;3346:23;3342:32;3339:2;;;3387:1;3384;3377:12;3339:2;3430:1;3455:53;3500:7;3491:6;3480:9;3476:22;3455:53;:::i;:::-;3445:63;;3401:117;3557:2;3583:53;3628:7;3619:6;3608:9;3604:22;3583:53;:::i;:::-;3573:63;;3528:118;3329:324;;;;;:::o;3659:552::-;;;;3801:2;3789:9;3780:7;3776:23;3772:32;3769:2;;;3817:1;3814;3807:12;3769:2;3860:1;3885:53;3930:7;3921:6;3910:9;3906:22;3885:53;:::i;:::-;3875:63;;3831:117;3987:2;4013:53;4058:7;4049:6;4038:9;4034:22;4013:53;:::i;:::-;4003:63;;3958:118;4115:2;4141:53;4186:7;4177:6;4166:9;4162:22;4141:53;:::i;:::-;4131:63;;4086:118;3759:452;;;;;:::o;4217:809::-;;;;;4385:3;4373:9;4364:7;4360:23;4356:33;4353:2;;;4402:1;4399;4392:12;4353:2;4445:1;4470:53;4515:7;4506:6;4495:9;4491:22;4470:53;:::i;:::-;4460:63;;4416:117;4572:2;4598:53;4643:7;4634:6;4623:9;4619:22;4598:53;:::i;:::-;4588:63;;4543:118;4700:2;4726:53;4771:7;4762:6;4751:9;4747:22;4726:53;:::i;:::-;4716:63;;4671:118;4856:2;4845:9;4841:18;4828:32;4887:18;4879:6;4876:30;4873:2;;;4919:1;4916;4909:12;4873:2;4947:62;5001:7;4992:6;4981:9;4977:22;4947:62;:::i;:::-;4937:72;;4799:220;4343:683;;;;;;;:::o;5032:401::-;;;5154:2;5142:9;5133:7;5129:23;5125:32;5122:2;;;5170:1;5167;5160:12;5122:2;5213:1;5238:53;5283:7;5274:6;5263:9;5259:22;5238:53;:::i;:::-;5228:63;;5184:117;5340:2;5366:50;5408:7;5399:6;5388:9;5384:22;5366:50;:::i;:::-;5356:60;;5311:115;5112:321;;;;;:::o;5439:407::-;;;5564:2;5552:9;5543:7;5539:23;5535:32;5532:2;;;5580:1;5577;5570:12;5532:2;5623:1;5648:53;5693:7;5684:6;5673:9;5669:22;5648:53;:::i;:::-;5638:63;;5594:117;5750:2;5776:53;5821:7;5812:6;5801:9;5797:22;5776:53;:::i;:::-;5766:63;;5721:118;5522:324;;;;;:::o;5852:405::-;;5985:2;5973:9;5964:7;5960:23;5956:32;5953:2;;;6001:1;5998;5991:12;5953:2;6072:1;6061:9;6057:17;6044:31;6102:18;6094:6;6091:30;6088:2;;;6134:1;6131;6124:12;6088:2;6162:78;6232:7;6223:6;6212:9;6208:22;6162:78;:::i;:::-;6152:88;;6015:235;5943:314;;;;:::o;6263:256::-;;6368:2;6356:9;6347:7;6343:23;6339:32;6336:2;;;6384:1;6381;6374:12;6336:2;6427:1;6452:50;6494:7;6485:6;6474:9;6470:22;6452:50;:::i;:::-;6442:60;;6398:114;6326:193;;;;:::o;6525:260::-;;6632:2;6620:9;6611:7;6607:23;6603:32;6600:2;;;6648:1;6645;6638:12;6600:2;6691:1;6716:52;6760:7;6751:6;6740:9;6736:22;6716:52;:::i;:::-;6706:62;;6662:116;6590:195;;;;:::o;6791:282::-;;6909:2;6897:9;6888:7;6884:23;6880:32;6877:2;;;6925:1;6922;6915:12;6877:2;6968:1;6993:63;7048:7;7039:6;7028:9;7024:22;6993:63;:::i;:::-;6983:73;;6939:127;6867:206;;;;:::o;7079:375::-;;7197:2;7185:9;7176:7;7172:23;7168:32;7165:2;;;7213:1;7210;7203:12;7165:2;7284:1;7273:9;7269:17;7256:31;7314:18;7306:6;7303:30;7300:2;;;7346:1;7343;7336:12;7300:2;7374:63;7429:7;7420:6;7409:9;7405:22;7374:63;:::i;:::-;7364:73;;7227:220;7155:299;;;;:::o;7460:262::-;;7568:2;7556:9;7547:7;7543:23;7539:32;7536:2;;;7584:1;7581;7574:12;7536:2;7627:1;7652:53;7697:7;7688:6;7677:9;7673:22;7652:53;:::i;:::-;7642:63;;7598:117;7526:196;;;;:::o;7728:179::-;;7818:46;7860:3;7852:6;7818:46;:::i;:::-;7896:4;7891:3;7887:14;7873:28;;7808:99;;;;:::o;7913:118::-;8000:24;8018:5;8000:24;:::i;:::-;7995:3;7988:37;7978:53;;:::o;8067:732::-;;8215:54;8263:5;8215:54;:::i;:::-;8285:86;8364:6;8359:3;8285:86;:::i;:::-;8278:93;;8395:56;8445:5;8395:56;:::i;:::-;8474:7;8505:1;8490:284;8515:6;8512:1;8509:13;8490:284;;;8591:6;8585:13;8618:63;8677:3;8662:13;8618:63;:::i;:::-;8611:70;;8704:60;8757:6;8704:60;:::i;:::-;8694:70;;8550:224;8537:1;8534;8530:9;8525:14;;8490:284;;;8494:14;8790:3;8783:10;;8191:608;;;;;;;:::o;8805:109::-;8886:21;8901:5;8886:21;:::i;:::-;8881:3;8874:34;8864:50;;:::o;8920:360::-;;9034:38;9066:5;9034:38;:::i;:::-;9088:70;9151:6;9146:3;9088:70;:::i;:::-;9081:77;;9167:52;9212:6;9207:3;9200:4;9193:5;9189:16;9167:52;:::i;:::-;9244:29;9266:6;9244:29;:::i;:::-;9239:3;9235:39;9228:46;;9010:270;;;;;:::o;9286:364::-;;9402:39;9435:5;9402:39;:::i;:::-;9457:71;9521:6;9516:3;9457:71;:::i;:::-;9450:78;;9537:52;9582:6;9577:3;9570:4;9563:5;9559:16;9537:52;:::i;:::-;9614:29;9636:6;9614:29;:::i;:::-;9609:3;9605:39;9598:46;;9378:272;;;;;:::o;9656:377::-;;9790:39;9823:5;9790:39;:::i;:::-;9845:89;9927:6;9922:3;9845:89;:::i;:::-;9838:96;;9943:52;9988:6;9983:3;9976:4;9969:5;9965:16;9943:52;:::i;:::-;10020:6;10015:3;10011:16;10004:23;;9766:267;;;;;:::o;10039:375::-;;10202:67;10266:2;10261:3;10202:67;:::i;:::-;10195:74;;10299:34;10295:1;10290:3;10286:11;10279:55;10365:13;10360:2;10355:3;10351:12;10344:35;10405:2;10400:3;10396:12;10389:19;;10185:229;;;:::o;10420:382::-;;10583:67;10647:2;10642:3;10583:67;:::i;:::-;10576:74;;10680:34;10676:1;10671:3;10667:11;10660:55;10746:20;10741:2;10736:3;10732:12;10725:42;10793:2;10788:3;10784:12;10777:19;;10566:236;;;:::o;10808:321::-;;10971:67;11035:2;11030:3;10971:67;:::i;:::-;10964:74;;11068:25;11064:1;11059:3;11055:11;11048:46;11120:2;11115:3;11111:12;11104:19;;10954:175;;;:::o;11135:370::-;;11298:67;11362:2;11357:3;11298:67;:::i;:::-;11291:74;;11395:34;11391:1;11386:3;11382:11;11375:55;11461:8;11456:2;11451:3;11447:12;11440:30;11496:2;11491:3;11487:12;11480:19;;11281:224;;;:::o;11511:326::-;;11674:67;11738:2;11733:3;11674:67;:::i;:::-;11667:74;;11771:30;11767:1;11762:3;11758:11;11751:51;11828:2;11823:3;11819:12;11812:19;;11657:180;;;:::o;11843:368::-;;12006:67;12070:2;12065:3;12006:67;:::i;:::-;11999:74;;12103:34;12099:1;12094:3;12090:11;12083:55;12169:6;12164:2;12159:3;12155:12;12148:28;12202:2;12197:3;12193:12;12186:19;;11989:222;;;:::o;12217:323::-;;12380:67;12444:2;12439:3;12380:67;:::i;:::-;12373:74;;12477:27;12473:1;12468:3;12464:11;12457:48;12531:2;12526:3;12522:12;12515:19;;12363:177;;;:::o;12546:376::-;;12709:67;12773:2;12768:3;12709:67;:::i;:::-;12702:74;;12806:34;12802:1;12797:3;12793:11;12786:55;12872:14;12867:2;12862:3;12858:12;12851:36;12913:2;12908:3;12904:12;12897:19;;12692:230;;;:::o;12928:388::-;;13091:67;13155:2;13150:3;13091:67;:::i;:::-;13084:74;;13188:34;13184:1;13179:3;13175:11;13168:55;13254:26;13249:2;13244:3;13240:12;13233:48;13307:2;13302:3;13298:12;13291:19;;13074:242;;;:::o;13322:374::-;;13485:67;13549:2;13544:3;13485:67;:::i;:::-;13478:74;;13582:34;13578:1;13573:3;13569:11;13562:55;13648:12;13643:2;13638:3;13634:12;13627:34;13687:2;13682:3;13678:12;13671:19;;13468:228;;;:::o;13702:373::-;;13865:67;13929:2;13924:3;13865:67;:::i;:::-;13858:74;;13962:34;13958:1;13953:3;13949:11;13942:55;14028:11;14023:2;14018:3;14014:12;14007:33;14066:2;14061:3;14057:12;14050:19;;13848:227;;;:::o;14081:330::-;;14244:67;14308:2;14303:3;14244:67;:::i;:::-;14237:74;;14341:34;14337:1;14332:3;14328:11;14321:55;14402:2;14397:3;14393:12;14386:19;;14227:184;;;:::o;14417:376::-;;14580:67;14644:2;14639:3;14580:67;:::i;:::-;14573:74;;14677:34;14673:1;14668:3;14664:11;14657:55;14743:14;14738:2;14733:3;14729:12;14722:36;14784:2;14779:3;14775:12;14768:19;;14563:230;;;:::o;14799:313::-;;14962:67;15026:2;15021:3;14962:67;:::i;:::-;14955:74;;15059:17;15055:1;15050:3;15046:11;15039:38;15103:2;15098:3;15094:12;15087:19;;14945:167;;;:::o;15118:330::-;;15281:67;15345:2;15340:3;15281:67;:::i;:::-;15274:74;;15378:34;15374:1;15369:3;15365:11;15358:55;15439:2;15434:3;15430:12;15423:19;;15264:184;;;:::o;15454:373::-;;15617:67;15681:2;15676:3;15617:67;:::i;:::-;15610:74;;15714:34;15710:1;15705:3;15701:11;15694:55;15780:11;15775:2;15770:3;15766:12;15759:33;15818:2;15813:3;15809:12;15802:19;;15600:227;;;:::o;15833:379::-;;15996:67;16060:2;16055:3;15996:67;:::i;:::-;15989:74;;16093:34;16089:1;16084:3;16080:11;16073:55;16159:17;16154:2;16149:3;16145:12;16138:39;16203:2;16198:3;16194:12;16187:19;;15979:233;;;:::o;16218:319::-;;16381:67;16445:2;16440:3;16381:67;:::i;:::-;16374:74;;16478:23;16474:1;16469:3;16465:11;16458:44;16528:2;16523:3;16519:12;16512:19;;16364:173;;;:::o;16543:365::-;;16706:67;16770:2;16765:3;16706:67;:::i;:::-;16699:74;;16803:34;16799:1;16794:3;16790:11;16783:55;16869:3;16864:2;16859:3;16855:12;16848:25;16899:2;16894:3;16890:12;16883:19;;16689:219;;;:::o;16914:320::-;;17077:67;17141:2;17136:3;17077:67;:::i;:::-;17070:74;;17174:24;17170:1;17165:3;17161:11;17154:45;17225:2;17220:3;17216:12;17209:19;;17060:174;;;:::o;17240:381::-;;17403:67;17467:2;17462:3;17403:67;:::i;:::-;17396:74;;17500:34;17496:1;17491:3;17487:11;17480:55;17566:19;17561:2;17556:3;17552:12;17545:41;17612:2;17607:3;17603:12;17596:19;;17386:235;;;:::o;17627:376::-;;17790:67;17854:2;17849:3;17790:67;:::i;:::-;17783:74;;17887:34;17883:1;17878:3;17874:11;17867:55;17953:14;17948:2;17943:3;17939:12;17932:36;17994:2;17989:3;17985:12;17978:19;;17773:230;;;:::o;18009:108::-;18086:24;18104:5;18086:24;:::i;:::-;18081:3;18074:37;18064:53;;:::o;18123:118::-;18210:24;18228:5;18210:24;:::i;:::-;18205:3;18198:37;18188:53;;:::o;18247:435::-;;18449:95;18540:3;18531:6;18449:95;:::i;:::-;18442:102;;18561:95;18652:3;18643:6;18561:95;:::i;:::-;18554:102;;18673:3;18666:10;;18431:251;;;;;:::o;18688:222::-;;18819:2;18808:9;18804:18;18796:26;;18832:71;18900:1;18889:9;18885:17;18876:6;18832:71;:::i;:::-;18786:124;;;;:::o;18916:640::-;;19149:3;19138:9;19134:19;19126:27;;19163:71;19231:1;19220:9;19216:17;19207:6;19163:71;:::i;:::-;19244:72;19312:2;19301:9;19297:18;19288:6;19244:72;:::i;:::-;19326;19394:2;19383:9;19379:18;19370:6;19326:72;:::i;:::-;19445:9;19439:4;19435:20;19430:2;19419:9;19415:18;19408:48;19473:76;19544:4;19535:6;19473:76;:::i;:::-;19465:84;;19116:440;;;;;;;:::o;19562:373::-;;19743:2;19732:9;19728:18;19720:26;;19792:9;19786:4;19782:20;19778:1;19767:9;19763:17;19756:47;19820:108;19923:4;19914:6;19820:108;:::i;:::-;19812:116;;19710:225;;;;:::o;19941:210::-;;20066:2;20055:9;20051:18;20043:26;;20079:65;20141:1;20130:9;20126:17;20117:6;20079:65;:::i;:::-;20033:118;;;;:::o;20157:313::-;;20308:2;20297:9;20293:18;20285:26;;20357:9;20351:4;20347:20;20343:1;20332:9;20328:17;20321:47;20385:78;20458:4;20449:6;20385:78;:::i;:::-;20377:86;;20275:195;;;;:::o;20476:419::-;;20680:2;20669:9;20665:18;20657:26;;20729:9;20723:4;20719:20;20715:1;20704:9;20700:17;20693:47;20757:131;20883:4;20757:131;:::i;:::-;20749:139;;20647:248;;;:::o;20901:419::-;;21105:2;21094:9;21090:18;21082:26;;21154:9;21148:4;21144:20;21140:1;21129:9;21125:17;21118:47;21182:131;21308:4;21182:131;:::i;:::-;21174:139;;21072:248;;;:::o;21326:419::-;;21530:2;21519:9;21515:18;21507:26;;21579:9;21573:4;21569:20;21565:1;21554:9;21550:17;21543:47;21607:131;21733:4;21607:131;:::i;:::-;21599:139;;21497:248;;;:::o;21751:419::-;;21955:2;21944:9;21940:18;21932:26;;22004:9;21998:4;21994:20;21990:1;21979:9;21975:17;21968:47;22032:131;22158:4;22032:131;:::i;:::-;22024:139;;21922:248;;;:::o;22176:419::-;;22380:2;22369:9;22365:18;22357:26;;22429:9;22423:4;22419:20;22415:1;22404:9;22400:17;22393:47;22457:131;22583:4;22457:131;:::i;:::-;22449:139;;22347:248;;;:::o;22601:419::-;;22805:2;22794:9;22790:18;22782:26;;22854:9;22848:4;22844:20;22840:1;22829:9;22825:17;22818:47;22882:131;23008:4;22882:131;:::i;:::-;22874:139;;22772:248;;;:::o;23026:419::-;;23230:2;23219:9;23215:18;23207:26;;23279:9;23273:4;23269:20;23265:1;23254:9;23250:17;23243:47;23307:131;23433:4;23307:131;:::i;:::-;23299:139;;23197:248;;;:::o;23451:419::-;;23655:2;23644:9;23640:18;23632:26;;23704:9;23698:4;23694:20;23690:1;23679:9;23675:17;23668:47;23732:131;23858:4;23732:131;:::i;:::-;23724:139;;23622:248;;;:::o;23876:419::-;;24080:2;24069:9;24065:18;24057:26;;24129:9;24123:4;24119:20;24115:1;24104:9;24100:17;24093:47;24157:131;24283:4;24157:131;:::i;:::-;24149:139;;24047:248;;;:::o;24301:419::-;;24505:2;24494:9;24490:18;24482:26;;24554:9;24548:4;24544:20;24540:1;24529:9;24525:17;24518:47;24582:131;24708:4;24582:131;:::i;:::-;24574:139;;24472:248;;;:::o;24726:419::-;;24930:2;24919:9;24915:18;24907:26;;24979:9;24973:4;24969:20;24965:1;24954:9;24950:17;24943:47;25007:131;25133:4;25007:131;:::i;:::-;24999:139;;24897:248;;;:::o;25151:419::-;;25355:2;25344:9;25340:18;25332:26;;25404:9;25398:4;25394:20;25390:1;25379:9;25375:17;25368:47;25432:131;25558:4;25432:131;:::i;:::-;25424:139;;25322:248;;;:::o;25576:419::-;;25780:2;25769:9;25765:18;25757:26;;25829:9;25823:4;25819:20;25815:1;25804:9;25800:17;25793:47;25857:131;25983:4;25857:131;:::i;:::-;25849:139;;25747:248;;;:::o;26001:419::-;;26205:2;26194:9;26190:18;26182:26;;26254:9;26248:4;26244:20;26240:1;26229:9;26225:17;26218:47;26282:131;26408:4;26282:131;:::i;:::-;26274:139;;26172:248;;;:::o;26426:419::-;;26630:2;26619:9;26615:18;26607:26;;26679:9;26673:4;26669:20;26665:1;26654:9;26650:17;26643:47;26707:131;26833:4;26707:131;:::i;:::-;26699:139;;26597:248;;;:::o;26851:419::-;;27055:2;27044:9;27040:18;27032:26;;27104:9;27098:4;27094:20;27090:1;27079:9;27075:17;27068:47;27132:131;27258:4;27132:131;:::i;:::-;27124:139;;27022:248;;;:::o;27276:419::-;;27480:2;27469:9;27465:18;27457:26;;27529:9;27523:4;27519:20;27515:1;27504:9;27500:17;27493:47;27557:131;27683:4;27557:131;:::i;:::-;27549:139;;27447:248;;;:::o;27701:419::-;;27905:2;27894:9;27890:18;27882:26;;27954:9;27948:4;27944:20;27940:1;27929:9;27925:17;27918:47;27982:131;28108:4;27982:131;:::i;:::-;27974:139;;27872:248;;;:::o;28126:419::-;;28330:2;28319:9;28315:18;28307:26;;28379:9;28373:4;28369:20;28365:1;28354:9;28350:17;28343:47;28407:131;28533:4;28407:131;:::i;:::-;28399:139;;28297:248;;;:::o;28551:419::-;;28755:2;28744:9;28740:18;28732:26;;28804:9;28798:4;28794:20;28790:1;28779:9;28775:17;28768:47;28832:131;28958:4;28832:131;:::i;:::-;28824:139;;28722:248;;;:::o;28976:419::-;;29180:2;29169:9;29165:18;29157:26;;29229:9;29223:4;29219:20;29215:1;29204:9;29200:17;29193:47;29257:131;29383:4;29257:131;:::i;:::-;29249:139;;29147:248;;;:::o;29401:419::-;;29605:2;29594:9;29590:18;29582:26;;29654:9;29648:4;29644:20;29640:1;29629:9;29625:17;29618:47;29682:131;29808:4;29682:131;:::i;:::-;29674:139;;29572:248;;;:::o;29826:222::-;;29957:2;29946:9;29942:18;29934:26;;29970:71;30038:1;30027:9;30023:17;30014:6;29970:71;:::i;:::-;29924:124;;;;:::o;30054:283::-;;30120:2;30114:9;30104:19;;30162:4;30154:6;30150:17;30269:6;30257:10;30254:22;30233:18;30221:10;30218:34;30215:62;30212:2;;;30280:18;;:::i;:::-;30212:2;30320:10;30316:2;30309:22;30094:243;;;;:::o;30343:311::-;;30510:18;30502:6;30499:30;30496:2;;;30532:18;;:::i;:::-;30496:2;30582:4;30574:6;30570:17;30562:25;;30642:4;30636;30632:15;30624:23;;30425:229;;;:::o;30660:331::-;;30811:18;30803:6;30800:30;30797:2;;;30833:18;;:::i;:::-;30797:2;30918:4;30914:9;30907:4;30899:6;30895:17;30891:33;30883:41;;30979:4;30973;30969:15;30961:23;;30726:265;;;:::o;30997:332::-;;31149:18;31141:6;31138:30;31135:2;;;31171:18;;:::i;:::-;31135:2;31256:4;31252:9;31245:4;31237:6;31233:17;31229:33;31221:41;;31317:4;31311;31307:15;31299:23;;31064:265;;;:::o;31335:132::-;;31425:3;31417:11;;31455:4;31450:3;31446:14;31438:22;;31407:60;;;:::o;31473:114::-;;31574:5;31568:12;31558:22;;31547:40;;;:::o;31593:98::-;;31678:5;31672:12;31662:22;;31651:40;;;:::o;31697:99::-;;31783:5;31777:12;31767:22;;31756:40;;;:::o;31802:113::-;;31904:4;31899:3;31895:14;31887:22;;31877:38;;;:::o;31921:184::-;;32054:6;32049:3;32042:19;32094:4;32089:3;32085:14;32070:29;;32032:73;;;;:::o;32111:168::-;;32228:6;32223:3;32216:19;32268:4;32263:3;32259:14;32244:29;;32206:73;;;;:::o;32285:169::-;;32403:6;32398:3;32391:19;32443:4;32438:3;32434:14;32419:29;;32381:73;;;;:::o;32460:148::-;;32599:3;32584:18;;32574:34;;;;:::o;32614:305::-;;32673:20;32691:1;32673:20;:::i;:::-;32668:25;;32707:20;32725:1;32707:20;:::i;:::-;32702:25;;32861:1;32793:66;32789:74;32786:1;32783:81;32780:2;;;32867:18;;:::i;:::-;32780:2;32911:1;32908;32904:9;32897:16;;32658:261;;;;:::o;32925:185::-;;32982:20;33000:1;32982:20;:::i;:::-;32977:25;;33016:20;33034:1;33016:20;:::i;:::-;33011:25;;33055:1;33045:2;;33060:18;;:::i;:::-;33045:2;33102:1;33099;33095:9;33090:14;;32967:143;;;;:::o;33116:348::-;;33179:20;33197:1;33179:20;:::i;:::-;33174:25;;33213:20;33231:1;33213:20;:::i;:::-;33208:25;;33401:1;33333:66;33329:74;33326:1;33323:81;33318:1;33311:9;33304:17;33300:105;33297:2;;;33408:18;;:::i;:::-;33297:2;33456:1;33453;33449:9;33438:20;;33164:300;;;;:::o;33470:191::-;;33530:20;33548:1;33530:20;:::i;:::-;33525:25;;33564:20;33582:1;33564:20;:::i;:::-;33559:25;;33603:1;33600;33597:8;33594:2;;;33608:18;;:::i;:::-;33594:2;33653:1;33650;33646:9;33638:17;;33515:146;;;;:::o;33667:96::-;;33733:24;33751:5;33733:24;:::i;:::-;33722:35;;33712:51;;;:::o;33769:90::-;;33846:5;33839:13;33832:21;33821:32;;33811:48;;;:::o;33865:149::-;;33941:66;33934:5;33930:78;33919:89;;33909:105;;;:::o;34020:126::-;;34097:42;34090:5;34086:54;34075:65;;34065:81;;;:::o;34152:77::-;;34218:5;34207:16;;34197:32;;;:::o;34235:154::-;34319:6;34314:3;34309;34296:30;34381:1;34372:6;34367:3;34363:16;34356:27;34286:103;;;:::o;34395:307::-;34463:1;34473:113;34487:6;34484:1;34481:13;34473:113;;;34572:1;34567:3;34563:11;34557:18;34553:1;34548:3;34544:11;34537:39;34509:2;34506:1;34502:10;34497:15;;34473:113;;;34604:6;34601:1;34598:13;34595:2;;;34684:1;34675:6;34670:3;34666:16;34659:27;34595:2;34444:258;;;;:::o;34708:320::-;;34789:1;34783:4;34779:12;34769:22;;34836:1;34830:4;34826:12;34857:18;34847:2;;34913:4;34905:6;34901:17;34891:27;;34847:2;34975;34967:6;34964:14;34944:18;34941:38;34938:2;;;34994:18;;:::i;:::-;34938:2;34759:269;;;;:::o;35034:233::-;;35096:24;35114:5;35096:24;:::i;:::-;35087:33;;35142:66;35135:5;35132:77;35129:2;;;35212:18;;:::i;:::-;35129:2;35259:1;35252:5;35248:13;35241:20;;35077:190;;;:::o;35273:176::-;;35322:20;35340:1;35322:20;:::i;:::-;35317:25;;35356:20;35374:1;35356:20;:::i;:::-;35351:25;;35395:1;35385:2;;35400:18;;:::i;:::-;35385:2;35441:1;35438;35434:9;35429:14;;35307:142;;;;:::o;35455:180::-;35503:77;35500:1;35493:88;35600:4;35597:1;35590:15;35624:4;35621:1;35614:15;35641:180;35689:77;35686:1;35679:88;35786:4;35783:1;35776:15;35810:4;35807:1;35800:15;35827:180;35875:77;35872:1;35865:88;35972:4;35969:1;35962:15;35996:4;35993:1;35986:15;36013:180;36061:77;36058:1;36051:88;36158:4;36155:1;36148:15;36182:4;36179:1;36172:15;36199:102;;36291:2;36287:7;36282:2;36275:5;36271:14;36267:28;36257:38;;36247:54;;;:::o;36307:122::-;36380:24;36398:5;36380:24;:::i;:::-;36373:5;36370:35;36360:2;;36419:1;36416;36409:12;36360:2;36350:79;:::o;36435:116::-;36505:21;36520:5;36505:21;:::i;:::-;36498:5;36495:32;36485:2;;36541:1;36538;36531:12;36485:2;36475:76;:::o;36557:120::-;36629:23;36646:5;36629:23;:::i;:::-;36622:5;36619:34;36609:2;;36667:1;36664;36657:12;36609:2;36599:78;:::o;36683:122::-;36756:24;36774:5;36756:24;:::i;:::-;36749:5;36746:35;36736:2;;36795:1;36792;36785:12;36736:2;36726:79;:::o
Swarm Source
ipfs://fb12fc633af6981812e57ec7864838308f1af5cd0a2955dc0b5a899c8ee48f75
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.