Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
NFT
Overview
Max Total Supply
2,222 SCIAC
Holders
950
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
2 SCIACLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SuperCreators
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-01 */ // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // File: contracts/SuperCreators.sol pragma solidity >=0.7.0 <0.9.0; contract SuperCreators is ERC721Enumerable, Ownable { using Strings for uint256; string public baseURI; string public baseExtension = ".json"; uint256 public Price = 0.11 ether; uint256 public maxGenCount = 2222; uint256 public maxMintTokens = 5; uint256 private maxLegendMint = 7; uint256 private legendMinted = 0; bool public paused = false; bool public revealed = false; bool public publicSale = false; bool public privateSale = false; string public notRevealedUri; mapping(address => bool) public whitelisted; mapping(address => uint256) public teamListed; mapping(uint256 => bool) private tokenForChakra; constructor( string memory _initBaseURI, string memory _initNotRevealedUri ) ERC721("Super Creators By IAC", "SCIAC") { setBaseURI(_initBaseURI); setNotRevealedURI(_initNotRevealedUri); defineTeams(); } function defineTeams() private { teamListed[0x1b7eAE5277D859e6f55Bc4Cd5BE5Bab29c1E3635]=123; teamListed[0xCec5110117210CA389c49D625ba3E4b588c9024C]=2; teamListed[0xCdebcC6563B6eBB0aE624dC8bc2cFbc9A79663Eb]=2; teamListed[0x85BD21337d6FBc29E3c8A628e08C4df38CdF255C]=2; teamListed[0x66197989800C6C1eef622eb0B8a54e82033a8A1D]=2; teamListed[0x50DDf40D3D10fDC6776F078040FBDb487B0dD1F4]=2; teamListed[0x571CAEEEF2403b73cd0413c5753deDEdCa8Ce283]=2; teamListed[0xF355A34F88D1Dad659E241a59B722F4bE6521F25]=2; teamListed[0xF9E9D3867a3B358cfd138666161D9DD1E04569E4]=2; teamListed[0x375AF9155618F0b56B51f67F24C5Fc637B62107d]=2; teamListed[0xcB90261dEeBEb279E56FB7e9289c1d576C0bb24d]=2; teamListed[0x04534c862D30f4643F109aa492EA67A4b777dA46]=2; teamListed[0xCAB95aa883B0E0D4363237A88CD4eC46EB5DE266]=2; teamListed[0x52E3343CF582742bA75B6E0E9cbfc74437CA8c39]=2; teamListed[0xF3C496B3D71d717A450CD6E2110FdD0b02f887e0]=2; teamListed[0x576837B396457b69BB430CA3bAF922A558D4Ee8F]=2; teamListed[0xab40E74b26EaE2980e1a45Fdb4570f2c240aB23b]=2; teamListed[0x36A9c6BEE260de97c36f92C941573C19C05913ab]=2; teamListed[0xb00029fe31E12517dDa4B691c543a156AD4a12cD]=2; teamListed[0x2975e1B6eB526ab8Edd6421202a3C14F9bB917d8]=2; teamListed[0xa6C49Bf2E7aD88bDa7F9D64A2cC9D0EDa171f7cA]=2; } // internal function _baseURI() internal view virtual override returns (string memory) { return baseURI; } event teamTokens(uint256 scid,address minter); event SCLegendry(uint256[] usedTokens, uint256 legendid,address minter); // public functions function mint(uint256 _noOfTokens) public payable { uint256 supply = totalSupply(); require(!paused,"Sale has not started yet."); require(_noOfTokens > 0); require(supply + _noOfTokens <= maxGenCount); //Only whitelisted user is allowed to mint until public sale not started. if (msg.sender != owner()) { require(_noOfTokens <= maxMintTokens); require(maxMintTokens >= balanceOf(msg.sender) +_noOfTokens ,"Not eligible to mint this allocation." ); if(whitelisted[msg.sender] != true) { require(publicSale,"Sorry, you are not in the whitelist."); } require(msg.value >= Price * _noOfTokens ,"Not enough ethers to mint NFTs."); } for (uint256 i = 1; i <= _noOfTokens; i++) { _safeMint(msg.sender, supply+i); } } function PrivateMint(uint256 _noOfTokens) public payable { uint256 supply = totalSupply(); require(_noOfTokens > 0); require(!paused,"Sale has not started yet."); require(_noOfTokens > 0); require(supply + _noOfTokens <= maxGenCount); require(privateSale,"Private sale has not started yet"); require(teamListed[msg.sender] >= balanceOf(msg.sender) +_noOfTokens ,"Reached maximum allocation" ); for (uint256 i = 1; i <= _noOfTokens; i++) { _safeMint(msg.sender, supply+i); emit teamTokens (supply+i, msg.sender); } } function legendryMint(uint256[] memory chakrasTokens)public { uint256 legendId = maxGenCount + legendMinted; require(legendMinted < maxLegendMint,"All legendry tokens are already minted"); require(balanceOf(msg.sender) >= maxLegendMint,"Not sufficient tokens to mint legendry token"); for (uint256 i = 0; i < chakrasTokens.length; i++) { require(ownerOf(chakrasTokens[i]) == msg.sender, "Cannot interact with a SuperCreators you do not own."); require(tokenForChakra[chakrasTokens[i]]==false, "token already used for Legendry minting."); } _safeMint(msg.sender, legendId+1); legendMinted = legendMinted+1; for (uint256 i = 0; i < chakrasTokens.length; i++) { tokenForChakra[chakrasTokens[i]]=true; } emit SCLegendry(chakrasTokens,legendId,msg.sender); } function walletOfOwner(address _owner) public view returns (uint256[] memory) { uint256 ownerTokenCount = balanceOf(_owner); uint256[] memory tokenIds = new uint256[](ownerTokenCount); for (uint256 i; i < ownerTokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(_owner, i); } return tokenIds; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); if(revealed == false) { return notRevealedUri; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension)) : ""; } //only owner functions function reveal(bool _state) public onlyOwner { revealed = _state; } function publicSaleStarted(bool _state) public onlyOwner{ publicSale = _state; } function privateSaleStarted(bool _state) public onlyOwner{ privateSale = _state; } function setPrice(uint256 _newPrice) public onlyOwner { Price = _newPrice; } function setmaxMintTokens(uint256 _newmaxMintTokens) public onlyOwner { maxMintTokens = _newmaxMintTokens; } function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner { notRevealedUri = _notRevealedURI; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } function pause(bool _state) public onlyOwner { paused = _state; } function whitelistUser(address[] memory _user) public onlyOwner { for (uint i = 0; i < _user.length; i++) { whitelisted[_user[i]] = true; } } function removeWhitelistUser(address _user) public onlyOwner { whitelisted[_user] = false; } function withdraw() public payable onlyOwner { uint balance = address(this).balance; require(balance > 0, "Not enough Ether to withdraw!"); (bool success, ) = (msg.sender).call{value: balance}(""); require(success, "Transaction failed."); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"usedTokens","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"legendid","type":"uint256"},{"indexed":false,"internalType":"address","name":"minter","type":"address"}],"name":"SCLegendry","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"scid","type":"uint256"},{"indexed":false,"internalType":"address","name":"minter","type":"address"}],"name":"teamTokens","type":"event"},{"inputs":[],"name":"Price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_noOfTokens","type":"uint256"}],"name":"PrivateMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"chakrasTokens","type":"uint256[]"}],"name":"legendryMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxGenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_noOfTokens","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","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":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"privateSaleStarted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"publicSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"publicSaleStarted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeWhitelistUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintTokens","type":"uint256"}],"name":"setmaxMintTokens","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":"address","name":"","type":"address"}],"name":"teamListed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"address[]","name":"_user","type":"address[]"}],"name":"whitelistUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c90805190602001906200005192919062000ba9565b50670186cc6acd4b0000600d556108ae600e556005600f55600760105560006011556000601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff0219169083151502179055506000601260026101000a81548160ff0219169083151502179055506000601260036101000a81548160ff021916908315150217905550348015620000ec57600080fd5b50604051620068da380380620068da833981810160405281019062000112919062000cd7565b6040518060400160405280601581526020017f53757065722043726561746f72732042792049414300000000000000000000008152506040518060400160405280600581526020017f534349414300000000000000000000000000000000000000000000000000000081525081600090805190602001906200019692919062000ba9565b508060019080519060200190620001af92919062000ba9565b505050620001d2620001c66200020c60201b60201c565b6200021460201b60201c565b620001e382620002da60201b60201c565b620001f4816200038560201b60201c565b620002046200043060201b60201c565b505062000f63565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002ea6200020c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200031062000b7f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000369576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003609062000d83565b60405180910390fd5b80600b90805190602001906200038192919062000ba9565b5050565b620003956200020c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003bb62000b7f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000414576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200040b9062000d83565b60405180910390fd5b80601390805190602001906200042c92919062000ba9565b5050565b607b60156000731b7eae5277d859e6f55bc4cd5be5bab29c1e363573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073cec5110117210ca389c49d625ba3e4b588c9024c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073cdebcc6563b6ebb0ae624dc8bc2cfbc9a79663eb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002601560007385bd21337d6fbc29e3c8a628e08c4df38cdf255c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002601560007366197989800c6c1eef622eb0b8a54e82033a8a1d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002601560007350ddf40d3d10fdc6776f078040fbdb487b0dd1f473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073571caeeef2403b73cd0413c5753dededca8ce28373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073f355a34f88d1dad659e241a59b722f4be6521f2573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073f9e9d3867a3b358cfd138666161d9dd1e04569e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073375af9155618f0b56b51f67f24c5fc637b62107d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073cb90261deebeb279e56fb7e9289c1d576c0bb24d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002601560007304534c862d30f4643f109aa492ea67a4b777da4673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073cab95aa883b0e0d4363237a88cd4ec46eb5de26673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002601560007352e3343cf582742ba75b6e0e9cbfc74437ca8c3973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073f3c496b3d71d717a450cd6e2110fdd0b02f887e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073576837b396457b69bb430ca3baf922a558d4ee8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073ab40e74b26eae2980e1a45fdb4570f2c240ab23b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002601560007336a9c6bee260de97c36f92c941573c19c05913ab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073b00029fe31e12517dda4b691c543a156ad4a12cd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260156000732975e1b6eb526ab8edd6421202a3c14f9bb917d873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060026015600073a6c49bf2e7ad88bda7f9d64a2cc9d0eda171f7ca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000bb79062000e4b565b90600052602060002090601f01602090048101928262000bdb576000855562000c27565b82601f1062000bf657805160ff191683800117855562000c27565b8280016001018555821562000c27579182015b8281111562000c2657825182559160200191906001019062000c09565b5b50905062000c36919062000c3a565b5090565b5b8082111562000c5557600081600090555060010162000c3b565b5090565b600062000c7062000c6a8462000dce565b62000da5565b90508281526020810184848401111562000c8f5762000c8e62000f1a565b5b62000c9c84828562000e15565b509392505050565b600082601f83011262000cbc5762000cbb62000f15565b5b815162000cce84826020860162000c59565b91505092915050565b6000806040838503121562000cf15762000cf062000f24565b5b600083015167ffffffffffffffff81111562000d125762000d1162000f1f565b5b62000d208582860162000ca4565b925050602083015167ffffffffffffffff81111562000d445762000d4362000f1f565b5b62000d528582860162000ca4565b9150509250929050565b600062000d6b60208362000e04565b915062000d788262000f3a565b602082019050919050565b6000602082019050818103600083015262000d9e8162000d5c565b9050919050565b600062000db162000dc4565b905062000dbf828262000e81565b919050565b6000604051905090565b600067ffffffffffffffff82111562000dec5762000deb62000ee6565b5b62000df78262000f29565b9050602081019050919050565b600082825260208201905092915050565b60005b8381101562000e3557808201518184015260208101905062000e18565b8381111562000e45576000848401525b50505050565b6000600282049050600182168062000e6457607f821691505b6020821081141562000e7b5762000e7a62000eb7565b5b50919050565b62000e8c8262000f29565b810181811067ffffffffffffffff8211171562000eae5762000ead62000ee6565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6159678062000f736000396000f3fe6080604052600436106102885760003560e01c8063715018a61161015a578063b88d4fde116100c1578063da3ef23f1161007a578063da3ef23f146109b5578063e985e9c5146109de578063ec912c8314610a1b578063f2c4ce1e14610a46578063f2fde38b14610a6f578063fd9d2f4f14610a9857610288565b8063b88d4fde14610893578063ba1f879f146108bc578063ba582d73146108e7578063c668286214610910578063c87b56dd1461093b578063d936547e1461097857610288565b8063940cd05b11610113578063940cd05b146107a657806395d89b41146107cf5780639b6fbf8a146107fa5780639dfde20114610823578063a0712d681461084e578063a22cb4651461086a57610288565b8063715018a6146106cd57806377227139146106e45780638075fa471461070d5780638c851e5f146107295780638da5cb5b1461075257806391b7f5ed1461077d57610288565b806333bc1c5c116101fe57806355f804b3116101b757806355f804b3146105975780635c975abb146105c05780636352211e146105eb5780636ac7ca14146106285780636c0360eb1461066557806370a082311461069057610288565b806333bc1c5c146104945780633ccfd60b146104bf57806342842e0e146104c9578063438b6300146104f25780634f6ccce71461052f578063518302271461056c57610288565b8063095ea7b311610250578063095ea7b31461038657806318160ddd146103af57806323b872dd146103da5780632f745c591461040357806330cc7ae0146104405780633299c1201461046957610288565b806301ffc9a71461028d57806302329a29146102ca57806306fdde03146102f3578063081812fc1461031e578063081c8c441461035b575b600080fd5b34801561029957600080fd5b506102b460048036038101906102af9190613f76565b610ac1565b6040516102c19190614764565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190613f49565b610b3b565b005b3480156102ff57600080fd5b50610308610bd4565b604051610315919061477f565b60405180910390f35b34801561032a57600080fd5b5061034560048036038101906103409190614019565b610c66565b604051610352919061469d565b60405180910390f35b34801561036757600080fd5b50610370610ceb565b60405161037d919061477f565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a89190613e77565b610d79565b005b3480156103bb57600080fd5b506103c4610e91565b6040516103d19190614b61565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc9190613d61565b610e9e565b005b34801561040f57600080fd5b5061042a60048036038101906104259190613e77565b610efe565b6040516104379190614b61565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190613cf4565b610fa3565b005b34801561047557600080fd5b5061047e61107a565b60405161048b9190614b61565b60405180910390f35b3480156104a057600080fd5b506104a9611080565b6040516104b69190614764565b60405180910390f35b6104c7611093565b005b3480156104d557600080fd5b506104f060048036038101906104eb9190613d61565b611207565b005b3480156104fe57600080fd5b5061051960048036038101906105149190613cf4565b611227565b6040516105269190614704565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190614019565b6112d5565b6040516105639190614b61565b60405180910390f35b34801561057857600080fd5b50610581611346565b60405161058e9190614764565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b99190613fd0565b611359565b005b3480156105cc57600080fd5b506105d56113ef565b6040516105e29190614764565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190614019565b611402565b60405161061f919061469d565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a9190613cf4565b6114b4565b60405161065c9190614b61565b60405180910390f35b34801561067157600080fd5b5061067a6114cc565b604051610687919061477f565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190613cf4565b61155a565b6040516106c49190614b61565b60405180910390f35b3480156106d957600080fd5b506106e2611612565b005b3480156106f057600080fd5b5061070b60048036038101906107069190613f00565b61169a565b005b61072760048036038101906107229190614019565b611942565b005b34801561073557600080fd5b50610750600480360381019061074b9190613f49565b611b35565b005b34801561075e57600080fd5b50610767611bce565b604051610774919061469d565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f9190614019565b611bf8565b005b3480156107b257600080fd5b506107cd60048036038101906107c89190613f49565b611c7e565b005b3480156107db57600080fd5b506107e4611d17565b6040516107f1919061477f565b60405180910390f35b34801561080657600080fd5b50610821600480360381019061081c9190613eb7565b611da9565b005b34801561082f57600080fd5b50610838611eba565b6040516108459190614b61565b60405180910390f35b61086860048036038101906108639190614019565b611ec0565b005b34801561087657600080fd5b50610891600480360381019061088c9190613e37565b612118565b005b34801561089f57600080fd5b506108ba60048036038101906108b59190613db4565b61212e565b005b3480156108c857600080fd5b506108d1612190565b6040516108de9190614764565b60405180910390f35b3480156108f357600080fd5b5061090e60048036038101906109099190613f49565b6121a3565b005b34801561091c57600080fd5b5061092561223c565b604051610932919061477f565b60405180910390f35b34801561094757600080fd5b50610962600480360381019061095d9190614019565b6122ca565b60405161096f919061477f565b60405180910390f35b34801561098457600080fd5b5061099f600480360381019061099a9190613cf4565b612423565b6040516109ac9190614764565b60405180910390f35b3480156109c157600080fd5b506109dc60048036038101906109d79190613fd0565b612443565b005b3480156109ea57600080fd5b50610a056004803603810190610a009190613d21565b6124d9565b604051610a129190614764565b60405180910390f35b348015610a2757600080fd5b50610a3061256d565b604051610a3d9190614b61565b60405180910390f35b348015610a5257600080fd5b50610a6d6004803603810190610a689190613fd0565b612573565b005b348015610a7b57600080fd5b50610a966004803603810190610a919190613cf4565b612609565b005b348015610aa457600080fd5b50610abf6004803603810190610aba9190614019565b612701565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b345750610b3382612787565b5b9050919050565b610b43612869565b73ffffffffffffffffffffffffffffffffffffffff16610b61611bce565b73ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90614a41565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b606060008054610be390614eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0f90614eeb565b8015610c5c5780601f10610c3157610100808354040283529160200191610c5c565b820191906000526020600020905b815481529060010190602001808311610c3f57829003601f168201915b5050505050905090565b6000610c7182612871565b610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca790614a21565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60138054610cf890614eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2490614eeb565b8015610d715780601f10610d4657610100808354040283529160200191610d71565b820191906000526020600020905b815481529060010190602001808311610d5457829003601f168201915b505050505081565b6000610d8482611402565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90614ac1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e14612869565b73ffffffffffffffffffffffffffffffffffffffff161480610e435750610e4281610e3d612869565b6124d9565b5b610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990614961565b60405180910390fd5b610e8c83836128dd565b505050565b6000600880549050905090565b610eaf610ea9612869565b82612996565b610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee590614ae1565b60405180910390fd5b610ef9838383612a74565b505050565b6000610f098361155a565b8210610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f41906147e1565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610fab612869565b73ffffffffffffffffffffffffffffffffffffffff16610fc9611bce565b73ffffffffffffffffffffffffffffffffffffffff161461101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690614a41565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e5481565b601260029054906101000a900460ff1681565b61109b612869565b73ffffffffffffffffffffffffffffffffffffffff166110b9611bce565b73ffffffffffffffffffffffffffffffffffffffff161461110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110690614a41565b60405180910390fd5b600047905060008111611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114e90614b41565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff168260405161117d90614688565b60006040518083038185875af1925050503d80600081146111ba576040519150601f19603f3d011682016040523d82523d6000602084013e6111bf565b606091505b5050905080611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa906147c1565b60405180910390fd5b5050565b6112228383836040518060200160405280600081525061212e565b505050565b606060006112348361155a565b905060008167ffffffffffffffff811115611252576112516150b3565b5b6040519080825280602002602001820160405280156112805781602001602082028036833780820191505090505b50905060005b828110156112ca576112988582610efe565b8282815181106112ab576112aa615084565b5b60200260200101818152505080806112c290614f4e565b915050611286565b508092505050919050565b60006112df610e91565b8210611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790614b21565b60405180910390fd5b6008828154811061133457611333615084565b5b90600052602060002001549050919050565b601260019054906101000a900460ff1681565b611361612869565b73ffffffffffffffffffffffffffffffffffffffff1661137f611bce565b73ffffffffffffffffffffffffffffffffffffffff16146113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90614a41565b60405180910390fd5b80600b90805190602001906113eb9291906139cc565b5050565b601260009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a2906149a1565b60405180910390fd5b80915050919050565b60156020528060005260406000206000915090505481565b600b80546114d990614eeb565b80601f016020809104026020016040519081016040528092919081815260200182805461150590614eeb565b80156115525780601f1061152757610100808354040283529160200191611552565b820191906000526020600020905b81548152906001019060200180831161153557829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290614981565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61161a612869565b73ffffffffffffffffffffffffffffffffffffffff16611638611bce565b73ffffffffffffffffffffffffffffffffffffffff161461168e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590614a41565b60405180910390fd5b6116986000612cd0565b565b6000601154600e546116ac9190614d20565b9050601054601154106116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90614b01565b60405180910390fd5b6010546117003361155a565b1015611741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173890614881565b60405180910390fd5b60005b8251811015611871573373ffffffffffffffffffffffffffffffffffffffff1661178784838151811061177a57611779615084565b5b6020026020010151611402565b73ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490614a01565b60405180910390fd5b60001515601660008584815181106117f8576117f7615084565b5b6020026020010151815260200190815260200160002060009054906101000a900460ff1615151461185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590614921565b60405180910390fd5b808061186990614f4e565b915050611744565b50611888336001836118839190614d20565b612d96565b60016011546118979190614d20565b60118190555060005b8251811015611902576001601660008584815181106118c2576118c1615084565b5b6020026020010151815260200190815260200160002060006101000a81548160ff02191690831515021790555080806118fa90614f4e565b9150506118a0565b507fe0f0a7b009331e633d97520ff70e1c6a6776855c4315ed8057731e67f6625c0282823360405161193693929190614726565b60405180910390a15050565b600061194c610e91565b90506000821161195b57600080fd5b601260009054906101000a900460ff16156119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290614aa1565b60405180910390fd5b600082116119b857600080fd5b600e5482826119c79190614d20565b11156119d257600080fd5b601260039054906101000a900460ff16611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a18906149e1565b60405180910390fd5b81611a2b3361155a565b611a359190614d20565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90614941565b60405180910390fd5b6000600190505b828111611b3057611ad9338284611ad49190614d20565b612d96565b7f8a597e144748f647b3a5783f60e5d24d40173798fa7ed859b110ac9b2176694f8183611b069190614d20565b33604051611b15929190614b7c565b60405180910390a18080611b2890614f4e565b915050611abd565b505050565b611b3d612869565b73ffffffffffffffffffffffffffffffffffffffff16611b5b611bce565b73ffffffffffffffffffffffffffffffffffffffff1614611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890614a41565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c00612869565b73ffffffffffffffffffffffffffffffffffffffff16611c1e611bce565b73ffffffffffffffffffffffffffffffffffffffff1614611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b90614a41565b60405180910390fd5b80600d8190555050565b611c86612869565b73ffffffffffffffffffffffffffffffffffffffff16611ca4611bce565b73ffffffffffffffffffffffffffffffffffffffff1614611cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf190614a41565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b606060018054611d2690614eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5290614eeb565b8015611d9f5780601f10611d7457610100808354040283529160200191611d9f565b820191906000526020600020905b815481529060010190602001808311611d8257829003601f168201915b5050505050905090565b611db1612869565b73ffffffffffffffffffffffffffffffffffffffff16611dcf611bce565b73ffffffffffffffffffffffffffffffffffffffff1614611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c90614a41565b60405180910390fd5b60005b8151811015611eb657600160146000848481518110611e4a57611e49615084565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611eae90614f4e565b915050611e28565b5050565b600d5481565b6000611eca610e91565b9050601260009054906101000a900460ff1615611f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1390614aa1565b60405180910390fd5b60008211611f2957600080fd5b600e548282611f389190614d20565b1115611f4357600080fd5b611f4b611bce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120dd57600f54821115611f8c57600080fd5b81611f963361155a565b611fa09190614d20565b600f541015611fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdb906148a1565b60405180910390fd5b60011515601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461208c57601260029054906101000a900460ff1661208b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612082906147a1565b60405180910390fd5b5b81600d5461209a9190614da7565b3410156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d390614821565b60405180910390fd5b5b6000600190505b828111612113576121003382846120fb9190614d20565b612d96565b808061210b90614f4e565b9150506120e4565b505050565b61212a612123612869565b8383612db4565b5050565b61213f612139612869565b83612996565b61217e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217590614ae1565b60405180910390fd5b61218a84848484612f21565b50505050565b601260039054906101000a900460ff1681565b6121ab612869565b73ffffffffffffffffffffffffffffffffffffffff166121c9611bce565b73ffffffffffffffffffffffffffffffffffffffff161461221f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221690614a41565b60405180910390fd5b80601260036101000a81548160ff02191690831515021790555050565b600c805461224990614eeb565b80601f016020809104026020016040519081016040528092919081815260200182805461227590614eeb565b80156122c25780601f10612297576101008083540402835291602001916122c2565b820191906000526020600020905b8154815290600101906020018083116122a557829003601f168201915b505050505081565b60606122d582612871565b612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b90614a81565b60405180910390fd5b60001515601260019054906101000a900460ff16151514156123c2576013805461233d90614eeb565b80601f016020809104026020016040519081016040528092919081815260200182805461236990614eeb565b80156123b65780601f1061238b576101008083540402835291602001916123b6565b820191906000526020600020905b81548152906001019060200180831161239957829003601f168201915b5050505050905061241e565b60006123cc612f7d565b905060008151116123ec576040518060200160405280600081525061241a565b806123f68461300f565b600c60405160200161240a93929190614657565b6040516020818303038152906040525b9150505b919050565b60146020528060005260406000206000915054906101000a900460ff1681565b61244b612869565b73ffffffffffffffffffffffffffffffffffffffff16612469611bce565b73ffffffffffffffffffffffffffffffffffffffff16146124bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b690614a41565b60405180910390fd5b80600c90805190602001906124d59291906139cc565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600f5481565b61257b612869565b73ffffffffffffffffffffffffffffffffffffffff16612599611bce565b73ffffffffffffffffffffffffffffffffffffffff16146125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e690614a41565b60405180910390fd5b80601390805190602001906126059291906139cc565b5050565b612611612869565b73ffffffffffffffffffffffffffffffffffffffff1661262f611bce565b73ffffffffffffffffffffffffffffffffffffffff1614612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c90614a41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ec90614841565b60405180910390fd5b6126fe81612cd0565b50565b612709612869565b73ffffffffffffffffffffffffffffffffffffffff16612727611bce565b73ffffffffffffffffffffffffffffffffffffffff161461277d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277490614a41565b60405180910390fd5b80600f8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061285257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612862575061286182613170565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661295083611402565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006129a182612871565b6129e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d790614901565b60405180910390fd5b60006129eb83611402565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612a5a57508373ffffffffffffffffffffffffffffffffffffffff16612a4284610c66565b73ffffffffffffffffffffffffffffffffffffffff16145b80612a6b5750612a6a81856124d9565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612a9482611402565b73ffffffffffffffffffffffffffffffffffffffff1614612aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae190614a61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b51906148c1565b60405180910390fd5b612b658383836131da565b612b706000826128dd565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bc09190614e01565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c179190614d20565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612db08282604051806020016040528060008152506132ee565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1a906148e1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612f149190614764565b60405180910390a3505050565b612f2c848484612a74565b612f3884848484613349565b612f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6e90614801565b60405180910390fd5b50505050565b6060600b8054612f8c90614eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054612fb890614eeb565b80156130055780601f10612fda57610100808354040283529160200191613005565b820191906000526020600020905b815481529060010190602001808311612fe857829003601f168201915b5050505050905090565b60606000821415613057576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061316b565b600082905060005b6000821461308957808061307290614f4e565b915050600a826130829190614d76565b915061305f565b60008167ffffffffffffffff8111156130a5576130a46150b3565b5b6040519080825280601f01601f1916602001820160405280156130d75781602001600182028036833780820191505090505b5090505b60008514613164576001826130f09190614e01565b9150600a856130ff9190614f97565b603061310b9190614d20565b60f81b81838151811061312157613120615084565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561315d9190614d76565b94506130db565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6131e58383836134e0565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561322857613223816134e5565b613267565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461326657613265838261352e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132aa576132a58161369b565b6132e9565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146132e8576132e7828261376c565b5b5b505050565b6132f883836137eb565b6133056000848484613349565b613344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333b90614801565b60405180910390fd5b505050565b600061336a8473ffffffffffffffffffffffffffffffffffffffff166139b9565b156134d3578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613393612869565b8786866040518563ffffffff1660e01b81526004016133b594939291906146b8565b602060405180830381600087803b1580156133cf57600080fd5b505af192505050801561340057506040513d601f19601f820116820180604052508101906133fd9190613fa3565b60015b613483573d8060008114613430576040519150601f19603f3d011682016040523d82523d6000602084013e613435565b606091505b5060008151141561347b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347290614801565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506134d8565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161353b8461155a565b6135459190614e01565b905060006007600084815260200190815260200160002054905081811461362a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506136af9190614e01565b90506000600960008481526020019081526020016000205490506000600883815481106136df576136de615084565b5b90600052602060002001549050806008838154811061370157613700615084565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806137505761374f615055565b5b6001900381819060005260206000200160009055905550505050565b60006137778361155a565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561385b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613852906149c1565b60405180910390fd5b61386481612871565b156138a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389b90614861565b60405180910390fd5b6138b0600083836131da565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139009190614d20565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546139d890614eeb565b90600052602060002090601f0160209004810192826139fa5760008555613a41565b82601f10613a1357805160ff1916838001178555613a41565b82800160010185558215613a41579182015b82811115613a40578251825591602001919060010190613a25565b5b509050613a4e9190613a52565b5090565b5b80821115613a6b576000816000905550600101613a53565b5090565b6000613a82613a7d84614bca565b614ba5565b90508083825260208201905082856020860282011115613aa557613aa46150e7565b5b60005b85811015613ad55781613abb8882613bd3565b845260208401935060208301925050600181019050613aa8565b5050509392505050565b6000613af2613aed84614bf6565b614ba5565b90508083825260208201905082856020860282011115613b1557613b146150e7565b5b60005b85811015613b455781613b2b8882613cdf565b845260208401935060208301925050600181019050613b18565b5050509392505050565b6000613b62613b5d84614c22565b614ba5565b905082815260208101848484011115613b7e57613b7d6150ec565b5b613b89848285614ea9565b509392505050565b6000613ba4613b9f84614c53565b614ba5565b905082815260208101848484011115613bc057613bbf6150ec565b5b613bcb848285614ea9565b509392505050565b600081359050613be2816158d5565b92915050565b600082601f830112613bfd57613bfc6150e2565b5b8135613c0d848260208601613a6f565b91505092915050565b600082601f830112613c2b57613c2a6150e2565b5b8135613c3b848260208601613adf565b91505092915050565b600081359050613c53816158ec565b92915050565b600081359050613c6881615903565b92915050565b600081519050613c7d81615903565b92915050565b600082601f830112613c9857613c976150e2565b5b8135613ca8848260208601613b4f565b91505092915050565b600082601f830112613cc657613cc56150e2565b5b8135613cd6848260208601613b91565b91505092915050565b600081359050613cee8161591a565b92915050565b600060208284031215613d0a57613d096150f6565b5b6000613d1884828501613bd3565b91505092915050565b60008060408385031215613d3857613d376150f6565b5b6000613d4685828601613bd3565b9250506020613d5785828601613bd3565b9150509250929050565b600080600060608486031215613d7a57613d796150f6565b5b6000613d8886828701613bd3565b9350506020613d9986828701613bd3565b9250506040613daa86828701613cdf565b9150509250925092565b60008060008060808587031215613dce57613dcd6150f6565b5b6000613ddc87828801613bd3565b9450506020613ded87828801613bd3565b9350506040613dfe87828801613cdf565b925050606085013567ffffffffffffffff811115613e1f57613e1e6150f1565b5b613e2b87828801613c83565b91505092959194509250565b60008060408385031215613e4e57613e4d6150f6565b5b6000613e5c85828601613bd3565b9250506020613e6d85828601613c44565b9150509250929050565b60008060408385031215613e8e57613e8d6150f6565b5b6000613e9c85828601613bd3565b9250506020613ead85828601613cdf565b9150509250929050565b600060208284031215613ecd57613ecc6150f6565b5b600082013567ffffffffffffffff811115613eeb57613eea6150f1565b5b613ef784828501613be8565b91505092915050565b600060208284031215613f1657613f156150f6565b5b600082013567ffffffffffffffff811115613f3457613f336150f1565b5b613f4084828501613c16565b91505092915050565b600060208284031215613f5f57613f5e6150f6565b5b6000613f6d84828501613c44565b91505092915050565b600060208284031215613f8c57613f8b6150f6565b5b6000613f9a84828501613c59565b91505092915050565b600060208284031215613fb957613fb86150f6565b5b6000613fc784828501613c6e565b91505092915050565b600060208284031215613fe657613fe56150f6565b5b600082013567ffffffffffffffff811115614004576140036150f1565b5b61401084828501613cb1565b91505092915050565b60006020828403121561402f5761402e6150f6565b5b600061403d84828501613cdf565b91505092915050565b60006140528383614639565b60208301905092915050565b61406781614e35565b82525050565b600061407882614ca9565b6140828185614cd7565b935061408d83614c84565b8060005b838110156140be5781516140a58882614046565b97506140b083614cca565b925050600181019050614091565b5085935050505092915050565b6140d481614e47565b82525050565b60006140e582614cb4565b6140ef8185614ce8565b93506140ff818560208601614eb8565b614108816150fb565b840191505092915050565b600061411e82614cbf565b6141288185614d04565b9350614138818560208601614eb8565b614141816150fb565b840191505092915050565b600061415782614cbf565b6141618185614d15565b9350614171818560208601614eb8565b80840191505092915050565b6000815461418a81614eeb565b6141948186614d15565b945060018216600081146141af57600181146141c0576141f3565b60ff198316865281860193506141f3565b6141c985614c94565b60005b838110156141eb578154818901526001820191506020810190506141cc565b838801955050505b50505092915050565b6000614209602483614d04565b91506142148261510c565b604082019050919050565b600061422c601383614d04565b91506142378261515b565b602082019050919050565b600061424f602b83614d04565b915061425a82615184565b604082019050919050565b6000614272603283614d04565b915061427d826151d3565b604082019050919050565b6000614295601f83614d04565b91506142a082615222565b602082019050919050565b60006142b8602683614d04565b91506142c38261524b565b604082019050919050565b60006142db601c83614d04565b91506142e68261529a565b602082019050919050565b60006142fe602c83614d04565b9150614309826152c3565b604082019050919050565b6000614321602583614d04565b915061432c82615312565b604082019050919050565b6000614344602483614d04565b915061434f82615361565b604082019050919050565b6000614367601983614d04565b9150614372826153b0565b602082019050919050565b600061438a602c83614d04565b9150614395826153d9565b604082019050919050565b60006143ad602883614d04565b91506143b882615428565b604082019050919050565b60006143d0601a83614d04565b91506143db82615477565b602082019050919050565b60006143f3603883614d04565b91506143fe826154a0565b604082019050919050565b6000614416602a83614d04565b9150614421826154ef565b604082019050919050565b6000614439602983614d04565b91506144448261553e565b604082019050919050565b600061445c602083614d04565b91506144678261558d565b602082019050919050565b600061447f602083614d04565b915061448a826155b6565b602082019050919050565b60006144a2603483614d04565b91506144ad826155df565b604082019050919050565b60006144c5602c83614d04565b91506144d08261562e565b604082019050919050565b60006144e8602083614d04565b91506144f38261567d565b602082019050919050565b600061450b602983614d04565b9150614516826156a6565b604082019050919050565b600061452e602f83614d04565b9150614539826156f5565b604082019050919050565b6000614551601983614d04565b915061455c82615744565b602082019050919050565b6000614574602183614d04565b915061457f8261576d565b604082019050919050565b6000614597600083614cf9565b91506145a2826157bc565b600082019050919050565b60006145ba603183614d04565b91506145c5826157bf565b604082019050919050565b60006145dd602683614d04565b91506145e88261580e565b604082019050919050565b6000614600602c83614d04565b915061460b8261585d565b604082019050919050565b6000614623601d83614d04565b915061462e826158ac565b602082019050919050565b61464281614e9f565b82525050565b61465181614e9f565b82525050565b6000614663828661414c565b915061466f828561414c565b915061467b828461417d565b9150819050949350505050565b60006146938261458a565b9150819050919050565b60006020820190506146b2600083018461405e565b92915050565b60006080820190506146cd600083018761405e565b6146da602083018661405e565b6146e76040830185614648565b81810360608301526146f981846140da565b905095945050505050565b6000602082019050818103600083015261471e818461406d565b905092915050565b60006060820190508181036000830152614740818661406d565b905061474f6020830185614648565b61475c604083018461405e565b949350505050565b600060208201905061477960008301846140cb565b92915050565b600060208201905081810360008301526147998184614113565b905092915050565b600060208201905081810360008301526147ba816141fc565b9050919050565b600060208201905081810360008301526147da8161421f565b9050919050565b600060208201905081810360008301526147fa81614242565b9050919050565b6000602082019050818103600083015261481a81614265565b9050919050565b6000602082019050818103600083015261483a81614288565b9050919050565b6000602082019050818103600083015261485a816142ab565b9050919050565b6000602082019050818103600083015261487a816142ce565b9050919050565b6000602082019050818103600083015261489a816142f1565b9050919050565b600060208201905081810360008301526148ba81614314565b9050919050565b600060208201905081810360008301526148da81614337565b9050919050565b600060208201905081810360008301526148fa8161435a565b9050919050565b6000602082019050818103600083015261491a8161437d565b9050919050565b6000602082019050818103600083015261493a816143a0565b9050919050565b6000602082019050818103600083015261495a816143c3565b9050919050565b6000602082019050818103600083015261497a816143e6565b9050919050565b6000602082019050818103600083015261499a81614409565b9050919050565b600060208201905081810360008301526149ba8161442c565b9050919050565b600060208201905081810360008301526149da8161444f565b9050919050565b600060208201905081810360008301526149fa81614472565b9050919050565b60006020820190508181036000830152614a1a81614495565b9050919050565b60006020820190508181036000830152614a3a816144b8565b9050919050565b60006020820190508181036000830152614a5a816144db565b9050919050565b60006020820190508181036000830152614a7a816144fe565b9050919050565b60006020820190508181036000830152614a9a81614521565b9050919050565b60006020820190508181036000830152614aba81614544565b9050919050565b60006020820190508181036000830152614ada81614567565b9050919050565b60006020820190508181036000830152614afa816145ad565b9050919050565b60006020820190508181036000830152614b1a816145d0565b9050919050565b60006020820190508181036000830152614b3a816145f3565b9050919050565b60006020820190508181036000830152614b5a81614616565b9050919050565b6000602082019050614b766000830184614648565b92915050565b6000604082019050614b916000830185614648565b614b9e602083018461405e565b9392505050565b6000614baf614bc0565b9050614bbb8282614f1d565b919050565b6000604051905090565b600067ffffffffffffffff821115614be557614be46150b3565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614c1157614c106150b3565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614c3d57614c3c6150b3565b5b614c46826150fb565b9050602081019050919050565b600067ffffffffffffffff821115614c6e57614c6d6150b3565b5b614c77826150fb565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614d2b82614e9f565b9150614d3683614e9f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d6b57614d6a614fc8565b5b828201905092915050565b6000614d8182614e9f565b9150614d8c83614e9f565b925082614d9c57614d9b614ff7565b5b828204905092915050565b6000614db282614e9f565b9150614dbd83614e9f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614df657614df5614fc8565b5b828202905092915050565b6000614e0c82614e9f565b9150614e1783614e9f565b925082821015614e2a57614e29614fc8565b5b828203905092915050565b6000614e4082614e7f565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614ed6578082015181840152602081019050614ebb565b83811115614ee5576000848401525b50505050565b60006002820490506001821680614f0357607f821691505b60208210811415614f1757614f16615026565b5b50919050565b614f26826150fb565b810181811067ffffffffffffffff82111715614f4557614f446150b3565b5b80604052505050565b6000614f5982614e9f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614f8c57614f8b614fc8565b5b600182019050919050565b6000614fa282614e9f565b9150614fad83614e9f565b925082614fbd57614fbc614ff7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f536f7272792c20796f7520617265206e6f7420696e207468652077686974656c60008201527f6973742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73616374696f6e206661696c65642e00000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4e6f7420656e6f7567682065746865727320746f206d696e74204e4654732e00600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4e6f742073756666696369656e7420746f6b656e7320746f206d696e74206c6560008201527f67656e64727920746f6b656e0000000000000000000000000000000000000000602082015250565b7f4e6f7420656c696769626c6520746f206d696e74207468697320616c6c6f636160008201527f74696f6e2e000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f746f6b656e20616c7265616479207573656420666f72204c6567656e6472792060008201527f6d696e74696e672e000000000000000000000000000000000000000000000000602082015250565b7f52656163686564206d6178696d756d20616c6c6f636174696f6e000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f507269766174652073616c6520686173206e6f74207374617274656420796574600082015250565b7f43616e6e6f7420696e746572616374207769746820612053757065724372656160008201527f746f727320796f7520646f206e6f74206f776e2e000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f53616c6520686173206e6f742073746172746564207965742e00000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f416c6c206c6567656e64727920746f6b656e732061726520616c72656164792060008201527f6d696e7465640000000000000000000000000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f75676820457468657220746f20776974686472617721000000600082015250565b6158de81614e35565b81146158e957600080fd5b50565b6158f581614e47565b811461590057600080fd5b50565b61590c81614e53565b811461591757600080fd5b50565b61592381614e9f565b811461592e57600080fd5b5056fea264697066735822122014181ef4d02a7124b729c531fc5606c2d08f29bdd7f0844fb27d3f9230f1013264736f6c634300080700330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102885760003560e01c8063715018a61161015a578063b88d4fde116100c1578063da3ef23f1161007a578063da3ef23f146109b5578063e985e9c5146109de578063ec912c8314610a1b578063f2c4ce1e14610a46578063f2fde38b14610a6f578063fd9d2f4f14610a9857610288565b8063b88d4fde14610893578063ba1f879f146108bc578063ba582d73146108e7578063c668286214610910578063c87b56dd1461093b578063d936547e1461097857610288565b8063940cd05b11610113578063940cd05b146107a657806395d89b41146107cf5780639b6fbf8a146107fa5780639dfde20114610823578063a0712d681461084e578063a22cb4651461086a57610288565b8063715018a6146106cd57806377227139146106e45780638075fa471461070d5780638c851e5f146107295780638da5cb5b1461075257806391b7f5ed1461077d57610288565b806333bc1c5c116101fe57806355f804b3116101b757806355f804b3146105975780635c975abb146105c05780636352211e146105eb5780636ac7ca14146106285780636c0360eb1461066557806370a082311461069057610288565b806333bc1c5c146104945780633ccfd60b146104bf57806342842e0e146104c9578063438b6300146104f25780634f6ccce71461052f578063518302271461056c57610288565b8063095ea7b311610250578063095ea7b31461038657806318160ddd146103af57806323b872dd146103da5780632f745c591461040357806330cc7ae0146104405780633299c1201461046957610288565b806301ffc9a71461028d57806302329a29146102ca57806306fdde03146102f3578063081812fc1461031e578063081c8c441461035b575b600080fd5b34801561029957600080fd5b506102b460048036038101906102af9190613f76565b610ac1565b6040516102c19190614764565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190613f49565b610b3b565b005b3480156102ff57600080fd5b50610308610bd4565b604051610315919061477f565b60405180910390f35b34801561032a57600080fd5b5061034560048036038101906103409190614019565b610c66565b604051610352919061469d565b60405180910390f35b34801561036757600080fd5b50610370610ceb565b60405161037d919061477f565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a89190613e77565b610d79565b005b3480156103bb57600080fd5b506103c4610e91565b6040516103d19190614b61565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc9190613d61565b610e9e565b005b34801561040f57600080fd5b5061042a60048036038101906104259190613e77565b610efe565b6040516104379190614b61565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190613cf4565b610fa3565b005b34801561047557600080fd5b5061047e61107a565b60405161048b9190614b61565b60405180910390f35b3480156104a057600080fd5b506104a9611080565b6040516104b69190614764565b60405180910390f35b6104c7611093565b005b3480156104d557600080fd5b506104f060048036038101906104eb9190613d61565b611207565b005b3480156104fe57600080fd5b5061051960048036038101906105149190613cf4565b611227565b6040516105269190614704565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190614019565b6112d5565b6040516105639190614b61565b60405180910390f35b34801561057857600080fd5b50610581611346565b60405161058e9190614764565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b99190613fd0565b611359565b005b3480156105cc57600080fd5b506105d56113ef565b6040516105e29190614764565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190614019565b611402565b60405161061f919061469d565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a9190613cf4565b6114b4565b60405161065c9190614b61565b60405180910390f35b34801561067157600080fd5b5061067a6114cc565b604051610687919061477f565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b29190613cf4565b61155a565b6040516106c49190614b61565b60405180910390f35b3480156106d957600080fd5b506106e2611612565b005b3480156106f057600080fd5b5061070b60048036038101906107069190613f00565b61169a565b005b61072760048036038101906107229190614019565b611942565b005b34801561073557600080fd5b50610750600480360381019061074b9190613f49565b611b35565b005b34801561075e57600080fd5b50610767611bce565b604051610774919061469d565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f9190614019565b611bf8565b005b3480156107b257600080fd5b506107cd60048036038101906107c89190613f49565b611c7e565b005b3480156107db57600080fd5b506107e4611d17565b6040516107f1919061477f565b60405180910390f35b34801561080657600080fd5b50610821600480360381019061081c9190613eb7565b611da9565b005b34801561082f57600080fd5b50610838611eba565b6040516108459190614b61565b60405180910390f35b61086860048036038101906108639190614019565b611ec0565b005b34801561087657600080fd5b50610891600480360381019061088c9190613e37565b612118565b005b34801561089f57600080fd5b506108ba60048036038101906108b59190613db4565b61212e565b005b3480156108c857600080fd5b506108d1612190565b6040516108de9190614764565b60405180910390f35b3480156108f357600080fd5b5061090e60048036038101906109099190613f49565b6121a3565b005b34801561091c57600080fd5b5061092561223c565b604051610932919061477f565b60405180910390f35b34801561094757600080fd5b50610962600480360381019061095d9190614019565b6122ca565b60405161096f919061477f565b60405180910390f35b34801561098457600080fd5b5061099f600480360381019061099a9190613cf4565b612423565b6040516109ac9190614764565b60405180910390f35b3480156109c157600080fd5b506109dc60048036038101906109d79190613fd0565b612443565b005b3480156109ea57600080fd5b50610a056004803603810190610a009190613d21565b6124d9565b604051610a129190614764565b60405180910390f35b348015610a2757600080fd5b50610a3061256d565b604051610a3d9190614b61565b60405180910390f35b348015610a5257600080fd5b50610a6d6004803603810190610a689190613fd0565b612573565b005b348015610a7b57600080fd5b50610a966004803603810190610a919190613cf4565b612609565b005b348015610aa457600080fd5b50610abf6004803603810190610aba9190614019565b612701565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b345750610b3382612787565b5b9050919050565b610b43612869565b73ffffffffffffffffffffffffffffffffffffffff16610b61611bce565b73ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90614a41565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b606060008054610be390614eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0f90614eeb565b8015610c5c5780601f10610c3157610100808354040283529160200191610c5c565b820191906000526020600020905b815481529060010190602001808311610c3f57829003601f168201915b5050505050905090565b6000610c7182612871565b610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca790614a21565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60138054610cf890614eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2490614eeb565b8015610d715780601f10610d4657610100808354040283529160200191610d71565b820191906000526020600020905b815481529060010190602001808311610d5457829003601f168201915b505050505081565b6000610d8482611402565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90614ac1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e14612869565b73ffffffffffffffffffffffffffffffffffffffff161480610e435750610e4281610e3d612869565b6124d9565b5b610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990614961565b60405180910390fd5b610e8c83836128dd565b505050565b6000600880549050905090565b610eaf610ea9612869565b82612996565b610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee590614ae1565b60405180910390fd5b610ef9838383612a74565b505050565b6000610f098361155a565b8210610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f41906147e1565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610fab612869565b73ffffffffffffffffffffffffffffffffffffffff16610fc9611bce565b73ffffffffffffffffffffffffffffffffffffffff161461101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690614a41565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e5481565b601260029054906101000a900460ff1681565b61109b612869565b73ffffffffffffffffffffffffffffffffffffffff166110b9611bce565b73ffffffffffffffffffffffffffffffffffffffff161461110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110690614a41565b60405180910390fd5b600047905060008111611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114e90614b41565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff168260405161117d90614688565b60006040518083038185875af1925050503d80600081146111ba576040519150601f19603f3d011682016040523d82523d6000602084013e6111bf565b606091505b5050905080611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa906147c1565b60405180910390fd5b5050565b6112228383836040518060200160405280600081525061212e565b505050565b606060006112348361155a565b905060008167ffffffffffffffff811115611252576112516150b3565b5b6040519080825280602002602001820160405280156112805781602001602082028036833780820191505090505b50905060005b828110156112ca576112988582610efe565b8282815181106112ab576112aa615084565b5b60200260200101818152505080806112c290614f4e565b915050611286565b508092505050919050565b60006112df610e91565b8210611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790614b21565b60405180910390fd5b6008828154811061133457611333615084565b5b90600052602060002001549050919050565b601260019054906101000a900460ff1681565b611361612869565b73ffffffffffffffffffffffffffffffffffffffff1661137f611bce565b73ffffffffffffffffffffffffffffffffffffffff16146113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90614a41565b60405180910390fd5b80600b90805190602001906113eb9291906139cc565b5050565b601260009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a2906149a1565b60405180910390fd5b80915050919050565b60156020528060005260406000206000915090505481565b600b80546114d990614eeb565b80601f016020809104026020016040519081016040528092919081815260200182805461150590614eeb565b80156115525780601f1061152757610100808354040283529160200191611552565b820191906000526020600020905b81548152906001019060200180831161153557829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290614981565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61161a612869565b73ffffffffffffffffffffffffffffffffffffffff16611638611bce565b73ffffffffffffffffffffffffffffffffffffffff161461168e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590614a41565b60405180910390fd5b6116986000612cd0565b565b6000601154600e546116ac9190614d20565b9050601054601154106116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90614b01565b60405180910390fd5b6010546117003361155a565b1015611741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173890614881565b60405180910390fd5b60005b8251811015611871573373ffffffffffffffffffffffffffffffffffffffff1661178784838151811061177a57611779615084565b5b6020026020010151611402565b73ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490614a01565b60405180910390fd5b60001515601660008584815181106117f8576117f7615084565b5b6020026020010151815260200190815260200160002060009054906101000a900460ff1615151461185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590614921565b60405180910390fd5b808061186990614f4e565b915050611744565b50611888336001836118839190614d20565b612d96565b60016011546118979190614d20565b60118190555060005b8251811015611902576001601660008584815181106118c2576118c1615084565b5b6020026020010151815260200190815260200160002060006101000a81548160ff02191690831515021790555080806118fa90614f4e565b9150506118a0565b507fe0f0a7b009331e633d97520ff70e1c6a6776855c4315ed8057731e67f6625c0282823360405161193693929190614726565b60405180910390a15050565b600061194c610e91565b90506000821161195b57600080fd5b601260009054906101000a900460ff16156119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290614aa1565b60405180910390fd5b600082116119b857600080fd5b600e5482826119c79190614d20565b11156119d257600080fd5b601260039054906101000a900460ff16611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a18906149e1565b60405180910390fd5b81611a2b3361155a565b611a359190614d20565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90614941565b60405180910390fd5b6000600190505b828111611b3057611ad9338284611ad49190614d20565b612d96565b7f8a597e144748f647b3a5783f60e5d24d40173798fa7ed859b110ac9b2176694f8183611b069190614d20565b33604051611b15929190614b7c565b60405180910390a18080611b2890614f4e565b915050611abd565b505050565b611b3d612869565b73ffffffffffffffffffffffffffffffffffffffff16611b5b611bce565b73ffffffffffffffffffffffffffffffffffffffff1614611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890614a41565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c00612869565b73ffffffffffffffffffffffffffffffffffffffff16611c1e611bce565b73ffffffffffffffffffffffffffffffffffffffff1614611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b90614a41565b60405180910390fd5b80600d8190555050565b611c86612869565b73ffffffffffffffffffffffffffffffffffffffff16611ca4611bce565b73ffffffffffffffffffffffffffffffffffffffff1614611cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf190614a41565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b606060018054611d2690614eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5290614eeb565b8015611d9f5780601f10611d7457610100808354040283529160200191611d9f565b820191906000526020600020905b815481529060010190602001808311611d8257829003601f168201915b5050505050905090565b611db1612869565b73ffffffffffffffffffffffffffffffffffffffff16611dcf611bce565b73ffffffffffffffffffffffffffffffffffffffff1614611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c90614a41565b60405180910390fd5b60005b8151811015611eb657600160146000848481518110611e4a57611e49615084565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611eae90614f4e565b915050611e28565b5050565b600d5481565b6000611eca610e91565b9050601260009054906101000a900460ff1615611f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1390614aa1565b60405180910390fd5b60008211611f2957600080fd5b600e548282611f389190614d20565b1115611f4357600080fd5b611f4b611bce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120dd57600f54821115611f8c57600080fd5b81611f963361155a565b611fa09190614d20565b600f541015611fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdb906148a1565b60405180910390fd5b60011515601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461208c57601260029054906101000a900460ff1661208b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612082906147a1565b60405180910390fd5b5b81600d5461209a9190614da7565b3410156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d390614821565b60405180910390fd5b5b6000600190505b828111612113576121003382846120fb9190614d20565b612d96565b808061210b90614f4e565b9150506120e4565b505050565b61212a612123612869565b8383612db4565b5050565b61213f612139612869565b83612996565b61217e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217590614ae1565b60405180910390fd5b61218a84848484612f21565b50505050565b601260039054906101000a900460ff1681565b6121ab612869565b73ffffffffffffffffffffffffffffffffffffffff166121c9611bce565b73ffffffffffffffffffffffffffffffffffffffff161461221f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221690614a41565b60405180910390fd5b80601260036101000a81548160ff02191690831515021790555050565b600c805461224990614eeb565b80601f016020809104026020016040519081016040528092919081815260200182805461227590614eeb565b80156122c25780601f10612297576101008083540402835291602001916122c2565b820191906000526020600020905b8154815290600101906020018083116122a557829003601f168201915b505050505081565b60606122d582612871565b612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b90614a81565b60405180910390fd5b60001515601260019054906101000a900460ff16151514156123c2576013805461233d90614eeb565b80601f016020809104026020016040519081016040528092919081815260200182805461236990614eeb565b80156123b65780601f1061238b576101008083540402835291602001916123b6565b820191906000526020600020905b81548152906001019060200180831161239957829003601f168201915b5050505050905061241e565b60006123cc612f7d565b905060008151116123ec576040518060200160405280600081525061241a565b806123f68461300f565b600c60405160200161240a93929190614657565b6040516020818303038152906040525b9150505b919050565b60146020528060005260406000206000915054906101000a900460ff1681565b61244b612869565b73ffffffffffffffffffffffffffffffffffffffff16612469611bce565b73ffffffffffffffffffffffffffffffffffffffff16146124bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b690614a41565b60405180910390fd5b80600c90805190602001906124d59291906139cc565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600f5481565b61257b612869565b73ffffffffffffffffffffffffffffffffffffffff16612599611bce565b73ffffffffffffffffffffffffffffffffffffffff16146125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e690614a41565b60405180910390fd5b80601390805190602001906126059291906139cc565b5050565b612611612869565b73ffffffffffffffffffffffffffffffffffffffff1661262f611bce565b73ffffffffffffffffffffffffffffffffffffffff1614612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c90614a41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ec90614841565b60405180910390fd5b6126fe81612cd0565b50565b612709612869565b73ffffffffffffffffffffffffffffffffffffffff16612727611bce565b73ffffffffffffffffffffffffffffffffffffffff161461277d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277490614a41565b60405180910390fd5b80600f8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061285257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612862575061286182613170565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661295083611402565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006129a182612871565b6129e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d790614901565b60405180910390fd5b60006129eb83611402565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612a5a57508373ffffffffffffffffffffffffffffffffffffffff16612a4284610c66565b73ffffffffffffffffffffffffffffffffffffffff16145b80612a6b5750612a6a81856124d9565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612a9482611402565b73ffffffffffffffffffffffffffffffffffffffff1614612aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae190614a61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b51906148c1565b60405180910390fd5b612b658383836131da565b612b706000826128dd565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bc09190614e01565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c179190614d20565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612db08282604051806020016040528060008152506132ee565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1a906148e1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612f149190614764565b60405180910390a3505050565b612f2c848484612a74565b612f3884848484613349565b612f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6e90614801565b60405180910390fd5b50505050565b6060600b8054612f8c90614eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054612fb890614eeb565b80156130055780601f10612fda57610100808354040283529160200191613005565b820191906000526020600020905b815481529060010190602001808311612fe857829003601f168201915b5050505050905090565b60606000821415613057576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061316b565b600082905060005b6000821461308957808061307290614f4e565b915050600a826130829190614d76565b915061305f565b60008167ffffffffffffffff8111156130a5576130a46150b3565b5b6040519080825280601f01601f1916602001820160405280156130d75781602001600182028036833780820191505090505b5090505b60008514613164576001826130f09190614e01565b9150600a856130ff9190614f97565b603061310b9190614d20565b60f81b81838151811061312157613120615084565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561315d9190614d76565b94506130db565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6131e58383836134e0565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561322857613223816134e5565b613267565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461326657613265838261352e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132aa576132a58161369b565b6132e9565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146132e8576132e7828261376c565b5b5b505050565b6132f883836137eb565b6133056000848484613349565b613344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333b90614801565b60405180910390fd5b505050565b600061336a8473ffffffffffffffffffffffffffffffffffffffff166139b9565b156134d3578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613393612869565b8786866040518563ffffffff1660e01b81526004016133b594939291906146b8565b602060405180830381600087803b1580156133cf57600080fd5b505af192505050801561340057506040513d601f19601f820116820180604052508101906133fd9190613fa3565b60015b613483573d8060008114613430576040519150601f19603f3d011682016040523d82523d6000602084013e613435565b606091505b5060008151141561347b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347290614801565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506134d8565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161353b8461155a565b6135459190614e01565b905060006007600084815260200190815260200160002054905081811461362a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506136af9190614e01565b90506000600960008481526020019081526020016000205490506000600883815481106136df576136de615084565b5b90600052602060002001549050806008838154811061370157613700615084565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806137505761374f615055565b5b6001900381819060005260206000200160009055905550505050565b60006137778361155a565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561385b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613852906149c1565b60405180910390fd5b61386481612871565b156138a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389b90614861565b60405180910390fd5b6138b0600083836131da565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139009190614d20565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546139d890614eeb565b90600052602060002090601f0160209004810192826139fa5760008555613a41565b82601f10613a1357805160ff1916838001178555613a41565b82800160010185558215613a41579182015b82811115613a40578251825591602001919060010190613a25565b5b509050613a4e9190613a52565b5090565b5b80821115613a6b576000816000905550600101613a53565b5090565b6000613a82613a7d84614bca565b614ba5565b90508083825260208201905082856020860282011115613aa557613aa46150e7565b5b60005b85811015613ad55781613abb8882613bd3565b845260208401935060208301925050600181019050613aa8565b5050509392505050565b6000613af2613aed84614bf6565b614ba5565b90508083825260208201905082856020860282011115613b1557613b146150e7565b5b60005b85811015613b455781613b2b8882613cdf565b845260208401935060208301925050600181019050613b18565b5050509392505050565b6000613b62613b5d84614c22565b614ba5565b905082815260208101848484011115613b7e57613b7d6150ec565b5b613b89848285614ea9565b509392505050565b6000613ba4613b9f84614c53565b614ba5565b905082815260208101848484011115613bc057613bbf6150ec565b5b613bcb848285614ea9565b509392505050565b600081359050613be2816158d5565b92915050565b600082601f830112613bfd57613bfc6150e2565b5b8135613c0d848260208601613a6f565b91505092915050565b600082601f830112613c2b57613c2a6150e2565b5b8135613c3b848260208601613adf565b91505092915050565b600081359050613c53816158ec565b92915050565b600081359050613c6881615903565b92915050565b600081519050613c7d81615903565b92915050565b600082601f830112613c9857613c976150e2565b5b8135613ca8848260208601613b4f565b91505092915050565b600082601f830112613cc657613cc56150e2565b5b8135613cd6848260208601613b91565b91505092915050565b600081359050613cee8161591a565b92915050565b600060208284031215613d0a57613d096150f6565b5b6000613d1884828501613bd3565b91505092915050565b60008060408385031215613d3857613d376150f6565b5b6000613d4685828601613bd3565b9250506020613d5785828601613bd3565b9150509250929050565b600080600060608486031215613d7a57613d796150f6565b5b6000613d8886828701613bd3565b9350506020613d9986828701613bd3565b9250506040613daa86828701613cdf565b9150509250925092565b60008060008060808587031215613dce57613dcd6150f6565b5b6000613ddc87828801613bd3565b9450506020613ded87828801613bd3565b9350506040613dfe87828801613cdf565b925050606085013567ffffffffffffffff811115613e1f57613e1e6150f1565b5b613e2b87828801613c83565b91505092959194509250565b60008060408385031215613e4e57613e4d6150f6565b5b6000613e5c85828601613bd3565b9250506020613e6d85828601613c44565b9150509250929050565b60008060408385031215613e8e57613e8d6150f6565b5b6000613e9c85828601613bd3565b9250506020613ead85828601613cdf565b9150509250929050565b600060208284031215613ecd57613ecc6150f6565b5b600082013567ffffffffffffffff811115613eeb57613eea6150f1565b5b613ef784828501613be8565b91505092915050565b600060208284031215613f1657613f156150f6565b5b600082013567ffffffffffffffff811115613f3457613f336150f1565b5b613f4084828501613c16565b91505092915050565b600060208284031215613f5f57613f5e6150f6565b5b6000613f6d84828501613c44565b91505092915050565b600060208284031215613f8c57613f8b6150f6565b5b6000613f9a84828501613c59565b91505092915050565b600060208284031215613fb957613fb86150f6565b5b6000613fc784828501613c6e565b91505092915050565b600060208284031215613fe657613fe56150f6565b5b600082013567ffffffffffffffff811115614004576140036150f1565b5b61401084828501613cb1565b91505092915050565b60006020828403121561402f5761402e6150f6565b5b600061403d84828501613cdf565b91505092915050565b60006140528383614639565b60208301905092915050565b61406781614e35565b82525050565b600061407882614ca9565b6140828185614cd7565b935061408d83614c84565b8060005b838110156140be5781516140a58882614046565b97506140b083614cca565b925050600181019050614091565b5085935050505092915050565b6140d481614e47565b82525050565b60006140e582614cb4565b6140ef8185614ce8565b93506140ff818560208601614eb8565b614108816150fb565b840191505092915050565b600061411e82614cbf565b6141288185614d04565b9350614138818560208601614eb8565b614141816150fb565b840191505092915050565b600061415782614cbf565b6141618185614d15565b9350614171818560208601614eb8565b80840191505092915050565b6000815461418a81614eeb565b6141948186614d15565b945060018216600081146141af57600181146141c0576141f3565b60ff198316865281860193506141f3565b6141c985614c94565b60005b838110156141eb578154818901526001820191506020810190506141cc565b838801955050505b50505092915050565b6000614209602483614d04565b91506142148261510c565b604082019050919050565b600061422c601383614d04565b91506142378261515b565b602082019050919050565b600061424f602b83614d04565b915061425a82615184565b604082019050919050565b6000614272603283614d04565b915061427d826151d3565b604082019050919050565b6000614295601f83614d04565b91506142a082615222565b602082019050919050565b60006142b8602683614d04565b91506142c38261524b565b604082019050919050565b60006142db601c83614d04565b91506142e68261529a565b602082019050919050565b60006142fe602c83614d04565b9150614309826152c3565b604082019050919050565b6000614321602583614d04565b915061432c82615312565b604082019050919050565b6000614344602483614d04565b915061434f82615361565b604082019050919050565b6000614367601983614d04565b9150614372826153b0565b602082019050919050565b600061438a602c83614d04565b9150614395826153d9565b604082019050919050565b60006143ad602883614d04565b91506143b882615428565b604082019050919050565b60006143d0601a83614d04565b91506143db82615477565b602082019050919050565b60006143f3603883614d04565b91506143fe826154a0565b604082019050919050565b6000614416602a83614d04565b9150614421826154ef565b604082019050919050565b6000614439602983614d04565b91506144448261553e565b604082019050919050565b600061445c602083614d04565b91506144678261558d565b602082019050919050565b600061447f602083614d04565b915061448a826155b6565b602082019050919050565b60006144a2603483614d04565b91506144ad826155df565b604082019050919050565b60006144c5602c83614d04565b91506144d08261562e565b604082019050919050565b60006144e8602083614d04565b91506144f38261567d565b602082019050919050565b600061450b602983614d04565b9150614516826156a6565b604082019050919050565b600061452e602f83614d04565b9150614539826156f5565b604082019050919050565b6000614551601983614d04565b915061455c82615744565b602082019050919050565b6000614574602183614d04565b915061457f8261576d565b604082019050919050565b6000614597600083614cf9565b91506145a2826157bc565b600082019050919050565b60006145ba603183614d04565b91506145c5826157bf565b604082019050919050565b60006145dd602683614d04565b91506145e88261580e565b604082019050919050565b6000614600602c83614d04565b915061460b8261585d565b604082019050919050565b6000614623601d83614d04565b915061462e826158ac565b602082019050919050565b61464281614e9f565b82525050565b61465181614e9f565b82525050565b6000614663828661414c565b915061466f828561414c565b915061467b828461417d565b9150819050949350505050565b60006146938261458a565b9150819050919050565b60006020820190506146b2600083018461405e565b92915050565b60006080820190506146cd600083018761405e565b6146da602083018661405e565b6146e76040830185614648565b81810360608301526146f981846140da565b905095945050505050565b6000602082019050818103600083015261471e818461406d565b905092915050565b60006060820190508181036000830152614740818661406d565b905061474f6020830185614648565b61475c604083018461405e565b949350505050565b600060208201905061477960008301846140cb565b92915050565b600060208201905081810360008301526147998184614113565b905092915050565b600060208201905081810360008301526147ba816141fc565b9050919050565b600060208201905081810360008301526147da8161421f565b9050919050565b600060208201905081810360008301526147fa81614242565b9050919050565b6000602082019050818103600083015261481a81614265565b9050919050565b6000602082019050818103600083015261483a81614288565b9050919050565b6000602082019050818103600083015261485a816142ab565b9050919050565b6000602082019050818103600083015261487a816142ce565b9050919050565b6000602082019050818103600083015261489a816142f1565b9050919050565b600060208201905081810360008301526148ba81614314565b9050919050565b600060208201905081810360008301526148da81614337565b9050919050565b600060208201905081810360008301526148fa8161435a565b9050919050565b6000602082019050818103600083015261491a8161437d565b9050919050565b6000602082019050818103600083015261493a816143a0565b9050919050565b6000602082019050818103600083015261495a816143c3565b9050919050565b6000602082019050818103600083015261497a816143e6565b9050919050565b6000602082019050818103600083015261499a81614409565b9050919050565b600060208201905081810360008301526149ba8161442c565b9050919050565b600060208201905081810360008301526149da8161444f565b9050919050565b600060208201905081810360008301526149fa81614472565b9050919050565b60006020820190508181036000830152614a1a81614495565b9050919050565b60006020820190508181036000830152614a3a816144b8565b9050919050565b60006020820190508181036000830152614a5a816144db565b9050919050565b60006020820190508181036000830152614a7a816144fe565b9050919050565b60006020820190508181036000830152614a9a81614521565b9050919050565b60006020820190508181036000830152614aba81614544565b9050919050565b60006020820190508181036000830152614ada81614567565b9050919050565b60006020820190508181036000830152614afa816145ad565b9050919050565b60006020820190508181036000830152614b1a816145d0565b9050919050565b60006020820190508181036000830152614b3a816145f3565b9050919050565b60006020820190508181036000830152614b5a81614616565b9050919050565b6000602082019050614b766000830184614648565b92915050565b6000604082019050614b916000830185614648565b614b9e602083018461405e565b9392505050565b6000614baf614bc0565b9050614bbb8282614f1d565b919050565b6000604051905090565b600067ffffffffffffffff821115614be557614be46150b3565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614c1157614c106150b3565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614c3d57614c3c6150b3565b5b614c46826150fb565b9050602081019050919050565b600067ffffffffffffffff821115614c6e57614c6d6150b3565b5b614c77826150fb565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614d2b82614e9f565b9150614d3683614e9f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d6b57614d6a614fc8565b5b828201905092915050565b6000614d8182614e9f565b9150614d8c83614e9f565b925082614d9c57614d9b614ff7565b5b828204905092915050565b6000614db282614e9f565b9150614dbd83614e9f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614df657614df5614fc8565b5b828202905092915050565b6000614e0c82614e9f565b9150614e1783614e9f565b925082821015614e2a57614e29614fc8565b5b828203905092915050565b6000614e4082614e7f565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614ed6578082015181840152602081019050614ebb565b83811115614ee5576000848401525b50505050565b60006002820490506001821680614f0357607f821691505b60208210811415614f1757614f16615026565b5b50919050565b614f26826150fb565b810181811067ffffffffffffffff82111715614f4557614f446150b3565b5b80604052505050565b6000614f5982614e9f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614f8c57614f8b614fc8565b5b600182019050919050565b6000614fa282614e9f565b9150614fad83614e9f565b925082614fbd57614fbc614ff7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f536f7272792c20796f7520617265206e6f7420696e207468652077686974656c60008201527f6973742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73616374696f6e206661696c65642e00000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4e6f7420656e6f7567682065746865727320746f206d696e74204e4654732e00600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4e6f742073756666696369656e7420746f6b656e7320746f206d696e74206c6560008201527f67656e64727920746f6b656e0000000000000000000000000000000000000000602082015250565b7f4e6f7420656c696769626c6520746f206d696e74207468697320616c6c6f636160008201527f74696f6e2e000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f746f6b656e20616c7265616479207573656420666f72204c6567656e6472792060008201527f6d696e74696e672e000000000000000000000000000000000000000000000000602082015250565b7f52656163686564206d6178696d756d20616c6c6f636174696f6e000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f507269766174652073616c6520686173206e6f74207374617274656420796574600082015250565b7f43616e6e6f7420696e746572616374207769746820612053757065724372656160008201527f746f727320796f7520646f206e6f74206f776e2e000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f53616c6520686173206e6f742073746172746564207965742e00000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f416c6c206c6567656e64727920746f6b656e732061726520616c72656164792060008201527f6d696e7465640000000000000000000000000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f75676820457468657220746f20776974686472617721000000600082015250565b6158de81614e35565b81146158e957600080fd5b50565b6158f581614e47565b811461590057600080fd5b50565b61590c81614e53565b811461591757600080fd5b50565b61592381614e9f565b811461592e57600080fd5b5056fea264697066735822122014181ef4d02a7124b729c531fc5606c2d08f29bdd7f0844fb27d3f9230f1013264736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _initBaseURI (string):
Arg [1] : _initNotRevealedUri (string):
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
44534:7255:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38303:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51152:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25797:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27356:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45043:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26879:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38943:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28106:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38611:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51411:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44735:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44960:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51516:270;;;:::i;:::-;;28516:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49412:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39133:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44927:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50920:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44896:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25491:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45124:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44625:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25221:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4767:103;;;;;;;;;;;;;:::i;:::-;;48573:830;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47962:603;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50389:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4116:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50579:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50303:78;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25966:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51231:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44693:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47126:830;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27649:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28772:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44996:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50483:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44651:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49770:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45076:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51024:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27875:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44776:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50794:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5025:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50669:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38303:224;38405:4;38444:35;38429:50;;;:11;:50;;;;:90;;;;38483:36;38507:11;38483:23;:36::i;:::-;38429:90;38422:97;;38303:224;;;:::o;51152:73::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51213:6:::1;51204;;:15;;;;;;;;;;;;;;;;;;51152:73:::0;:::o;25797:100::-;25851:13;25884:5;25877:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25797:100;:::o;27356:221::-;27432:7;27460:16;27468:7;27460;:16::i;:::-;27452:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27545:15;:24;27561:7;27545:24;;;;;;;;;;;;;;;;;;;;;27538:31;;27356:221;;;:::o;45043:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26879:411::-;26960:13;26976:23;26991:7;26976:14;:23::i;:::-;26960:39;;27024:5;27018:11;;:2;:11;;;;27010:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;27118:5;27102:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;27127:37;27144:5;27151:12;:10;:12::i;:::-;27127:16;:37::i;:::-;27102:62;27080:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;27261:21;27270:2;27274:7;27261:8;:21::i;:::-;26949:341;26879:411;;:::o;38943:113::-;39004:7;39031:10;:17;;;;39024:24;;38943:113;:::o;28106:339::-;28301:41;28320:12;:10;:12::i;:::-;28334:7;28301:18;:41::i;:::-;28293:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;28409:28;28419:4;28425:2;28429:7;28409:9;:28::i;:::-;28106:339;;;:::o;38611:256::-;38708:7;38744:23;38761:5;38744:16;:23::i;:::-;38736:5;:31;38728:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;38833:12;:19;38846:5;38833:19;;;;;;;;;;;;;;;:26;38853:5;38833:26;;;;;;;;;;;;38826:33;;38611:256;;;;:::o;51411:100::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51500:5:::1;51479:11;:18;51491:5;51479:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;51411:100:::0;:::o;44735:33::-;;;;:::o;44960:31::-;;;;;;;;;;;;;:::o;51516:270::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51570:12:::1;51585:21;51570:36;;51633:1;51623:7;:11;51615:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;51678:12;51697:10;51696:17;;51721:7;51696:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51677:56;;;51750:7;51742:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;51561:225;;51516:270::o:0;28516:185::-;28654:39;28671:4;28677:2;28681:7;28654:39;;;;;;;;;;;;:16;:39::i;:::-;28516:185;;;:::o;49412:348::-;49487:16;49515:23;49541:17;49551:6;49541:9;:17::i;:::-;49515:43;;49565:25;49607:15;49593:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49565:58;;49635:9;49630:103;49650:15;49646:1;:19;49630:103;;;49695:30;49715:6;49723:1;49695:19;:30::i;:::-;49681:8;49690:1;49681:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;49667:3;;;;;:::i;:::-;;;;49630:103;;;;49746:8;49739:15;;;;49412:348;;;:::o;39133:233::-;39208:7;39244:30;:28;:30::i;:::-;39236:5;:38;39228:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;39341:10;39352:5;39341:17;;;;;;;;:::i;:::-;;;;;;;;;;39334:24;;39133:233;;;:::o;44927:28::-;;;;;;;;;;;;;:::o;50920:98::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51001:11:::1;50991:7;:21;;;;;;;;;;;;:::i;:::-;;50920:98:::0;:::o;44896:26::-;;;;;;;;;;;;;:::o;25491:239::-;25563:7;25583:13;25599:7;:16;25607:7;25599:16;;;;;;;;;;;;;;;;;;;;;25583:32;;25651:1;25634:19;;:5;:19;;;;25626:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25717:5;25710:12;;;25491:239;;;:::o;45124:45::-;;;;;;;;;;;;;;;;;:::o;44625:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25221:208::-;25293:7;25338:1;25321:19;;:5;:19;;;;25313:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25405:9;:16;25415:5;25405:16;;;;;;;;;;;;;;;;25398:23;;25221:208;;;:::o;4767:103::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4832:30:::1;4859:1;4832:18;:30::i;:::-;4767:103::o:0;48573:830::-;48640:16;48673:12;;48659:11;;:26;;;;:::i;:::-;48640:45;;48715:13;;48700:12;;:28;48692:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;48810:13;;48785:21;48795:10;48785:9;:21::i;:::-;:38;;48777:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;48883:9;48878:273;48902:13;:20;48898:1;:24;48878:273;;;48975:10;48946:39;;:25;48954:13;48968:1;48954:16;;;;;;;;:::i;:::-;;;;;;;;48946:7;:25::i;:::-;:39;;;48938:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;49093:5;49059:39;;:14;:32;49074:13;49088:1;49074:16;;;;;;;;:::i;:::-;;;;;;;;49059:32;;;;;;;;;;;;;;;;;;;;;:39;;;49051:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;48924:3;;;;;:::i;:::-;;;;48878:273;;;;49157:33;49167:10;49188:1;49179:8;:10;;;;:::i;:::-;49157:9;:33::i;:::-;49226:1;49213:12;;:14;;;;:::i;:::-;49198:12;:29;;;;49240:9;49235:105;49259:13;:20;49255:1;:24;49235:105;;;49328:4;49295:14;:32;49310:13;49324:1;49310:16;;;;;;;;:::i;:::-;;;;;;;;49295:32;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;49281:3;;;;;:::i;:::-;;;;49235:105;;;;49351:45;49362:13;49376:8;49385:10;49351:45;;;;;;;;:::i;:::-;;;;;;;;48633:770;48573:830;:::o;47962:603::-;48026:14;48043:13;:11;:13::i;:::-;48026:30;;48085:1;48071:11;:15;48063:24;;;;;;48105:6;;;;;;;;;;;48104:7;48096:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;48169:1;48155:11;:15;48147:24;;;;;;48210:11;;48195;48186:6;:20;;;;:::i;:::-;:35;;48178:44;;;;;;48237:11;;;;;;;;;;;48229:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;48348:11;48325:21;48335:10;48325:9;:21::i;:::-;:34;;;;:::i;:::-;48299:10;:22;48310:10;48299:22;;;;;;;;;;;;;;;;:60;;48291:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;48418:9;48430:1;48418:13;;48413:142;48438:11;48433:1;:16;48413:142;;48467:31;48477:10;48496:1;48489:6;:8;;;;:::i;:::-;48467:9;:31::i;:::-;48514:33;48533:1;48526:6;:8;;;;:::i;:::-;48536:10;48514:33;;;;;;;:::i;:::-;;;;;;;;48451:3;;;;;:::i;:::-;;;;48413:142;;;;48019:546;47962:603;:::o;50389:88::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50465:6:::1;50452:10;;:19;;;;;;;;;;;;;;;;;;50389:88:::0;:::o;4116:87::-;4162:7;4189:6;;;;;;;;;;;4182:13;;4116:87;:::o;50579:84::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50648:9:::1;50640:5;:17;;;;50579:84:::0;:::o;50303:78::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50369:6:::1;50358:8;;:17;;;;;;;;;;;;;;;;;;50303:78:::0;:::o;25966:104::-;26022:13;26055:7;26048:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25966:104;:::o;51231:171::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51307:6:::1;51302:95;51323:5;:12;51319:1;:16;51302:95;;;51381:4;51357:11;:21;51369:5;51375:1;51369:8;;;;;;;;:::i;:::-;;;;;;;;51357:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;51337:3;;;;;:::i;:::-;;;;51302:95;;;;51231:171:::0;:::o;44693:33::-;;;;:::o;47126:830::-;47183:14;47200:13;:11;:13::i;:::-;47183:30;;47229:6;;;;;;;;;;;47228:7;47220:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;47293:1;47279:11;:15;47271:24;;;;;;47334:11;;47319;47310:6;:20;;;;:::i;:::-;:35;;47302:44;;;;;;47452:7;:5;:7::i;:::-;47438:21;;:10;:21;;;47434:401;;47493:13;;47478:11;:28;;47470:37;;;;;;47564:11;47541:21;47551:10;47541:9;:21::i;:::-;:34;;;;:::i;:::-;47524:13;;:51;;47516:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;47658:4;47631:31;;:11;:23;47643:10;47631:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;47628:115;;47683:10;;;;;;;;;;;47675:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;47628:115;47780:11;47772:5;;:19;;;;:::i;:::-;47759:9;:32;;47751:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;47434:401;47850:9;47862:1;47850:13;;47845:101;47870:11;47865:1;:16;47845:101;;47899:31;47909:10;47928:1;47921:6;:8;;;;:::i;:::-;47899:9;:31::i;:::-;47883:3;;;;;:::i;:::-;;;;47845:101;;;;47176:780;47126:830;:::o;27649:155::-;27744:52;27763:12;:10;:12::i;:::-;27777:8;27787;27744:18;:52::i;:::-;27649:155;;:::o;28772:328::-;28947:41;28966:12;:10;:12::i;:::-;28980:7;28947:18;:41::i;:::-;28939:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;29053:39;29067:4;29073:2;29077:7;29086:5;29053:13;:39::i;:::-;28772:328;;;;:::o;44996:32::-;;;;;;;;;;;;;:::o;50483:90::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50561:6:::1;50547:11;;:20;;;;;;;;;;;;;;;;;;50483:90:::0;:::o;44651:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;49770:497::-;49868:13;49909:16;49917:7;49909;:16::i;:::-;49893:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;50018:5;50006:17;;:8;;;;;;;;;;;:17;;;50003:62;;;50043:14;50036:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50003:62;50073:28;50104:10;:8;:10::i;:::-;50073:41;;50159:1;50134:14;50128:28;:32;:133;;;;;;;;;;;;;;;;;50196:14;50212:18;:7;:16;:18::i;:::-;50232:13;50179:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;50128:133;50121:140;;;49770:497;;;;:::o;45076:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;51024:122::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51123:17:::1;51107:13;:33;;;;;;;;;;;;:::i;:::-;;51024:122:::0;:::o;27875:164::-;27972:4;27996:18;:25;28015:5;27996:25;;;;;;;;;;;;;;;:35;28022:8;27996:35;;;;;;;;;;;;;;;;;;;;;;;;;27989:42;;27875:164;;;;:::o;44776:32::-;;;;:::o;50794:120::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50893:15:::1;50876:14;:32;;;;;;;;;;;;:::i;:::-;;50794:120:::0;:::o;5025:201::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5134:1:::1;5114:22;;:8;:22;;;;5106:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5190:28;5209:8;5190:18;:28::i;:::-;5025:201:::0;:::o;50669:116::-;4347:12;:10;:12::i;:::-;4336:23;;:7;:5;:7::i;:::-;:23;;;4328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50762:17:::1;50746:13;:33;;;;50669:116:::0;:::o;24852:305::-;24954:4;25006:25;24991:40;;;:11;:40;;;;:105;;;;25063:33;25048:48;;;:11;:48;;;;24991:105;:158;;;;25113:36;25137:11;25113:23;:36::i;:::-;24991:158;24971:178;;24852:305;;;:::o;2840:98::-;2893:7;2920:10;2913:17;;2840:98;:::o;30610:127::-;30675:4;30727:1;30699:30;;:7;:16;30707:7;30699:16;;;;;;;;;;;;;;;;;;;;;:30;;;;30692:37;;30610:127;;;:::o;34592:174::-;34694:2;34667:15;:24;34683:7;34667:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;34750:7;34746:2;34712:46;;34721:23;34736:7;34721:14;:23::i;:::-;34712:46;;;;;;;;;;;;34592:174;;:::o;30904:348::-;30997:4;31022:16;31030:7;31022;:16::i;:::-;31014:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31098:13;31114:23;31129:7;31114:14;:23::i;:::-;31098:39;;31167:5;31156:16;;:7;:16;;;:51;;;;31200:7;31176:31;;:20;31188:7;31176:11;:20::i;:::-;:31;;;31156:51;:87;;;;31211:32;31228:5;31235:7;31211:16;:32::i;:::-;31156:87;31148:96;;;30904:348;;;;:::o;33896:578::-;34055:4;34028:31;;:23;34043:7;34028:14;:23::i;:::-;:31;;;34020:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;34138:1;34124:16;;:2;:16;;;;34116:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;34194:39;34215:4;34221:2;34225:7;34194:20;:39::i;:::-;34298:29;34315:1;34319:7;34298:8;:29::i;:::-;34359:1;34340:9;:15;34350:4;34340:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;34388:1;34371:9;:13;34381:2;34371:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;34419:2;34400:7;:16;34408:7;34400:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;34458:7;34454:2;34439:27;;34448:4;34439:27;;;;;;;;;;;;33896:578;;;:::o;5386:191::-;5460:16;5479:6;;;;;;;;;;;5460:25;;5505:8;5496:6;;:17;;;;;;;;;;;;;;;;;;5560:8;5529:40;;5550:8;5529:40;;;;;;;;;;;;5449:128;5386:191;:::o;31594:110::-;31670:26;31680:2;31684:7;31670:26;;;;;;;;;;;;:9;:26::i;:::-;31594:110;;:::o;34908:315::-;35063:8;35054:17;;:5;:17;;;;35046:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;35150:8;35112:18;:25;35131:5;35112:25;;;;;;;;;;;;;;;:35;35138:8;35112:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35196:8;35174:41;;35189:5;35174:41;;;35206:8;35174:41;;;;;;:::i;:::-;;;;;;;;34908:315;;;:::o;29982:::-;30139:28;30149:4;30155:2;30159:7;30139:9;:28::i;:::-;30186:48;30209:4;30215:2;30219:7;30228:5;30186:22;:48::i;:::-;30178:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;29982:315;;;;:::o;46865:102::-;46925:13;46954:7;46947:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46865:102;:::o;402:723::-;458:13;688:1;679:5;:10;675:53;;;706:10;;;;;;;;;;;;;;;;;;;;;675:53;738:12;753:5;738:20;;769:14;794:78;809:1;801:4;:9;794:78;;827:8;;;;;:::i;:::-;;;;858:2;850:10;;;;;:::i;:::-;;;794:78;;;882:19;914:6;904:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;882:39;;932:154;948:1;939:5;:10;932:154;;976:1;966:11;;;;;:::i;:::-;;;1043:2;1035:5;:10;;;;:::i;:::-;1022:2;:24;;;;:::i;:::-;1009:39;;992:6;999;992:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1072:2;1063:11;;;;;:::i;:::-;;;932:154;;;1110:6;1096:21;;;;;402:723;;;;:::o;16548:157::-;16633:4;16672:25;16657:40;;;:11;:40;;;;16650:47;;16548:157;;;:::o;39979:589::-;40123:45;40150:4;40156:2;40160:7;40123:26;:45::i;:::-;40201:1;40185:18;;:4;:18;;;40181:187;;;40220:40;40252:7;40220:31;:40::i;:::-;40181:187;;;40290:2;40282:10;;:4;:10;;;40278:90;;40309:47;40342:4;40348:7;40309:32;:47::i;:::-;40278:90;40181:187;40396:1;40382:16;;:2;:16;;;40378:183;;;40415:45;40452:7;40415:36;:45::i;:::-;40378:183;;;40488:4;40482:10;;:2;:10;;;40478:83;;40509:40;40537:2;40541:7;40509:27;:40::i;:::-;40478:83;40378:183;39979:589;;;:::o;31931:321::-;32061:18;32067:2;32071:7;32061:5;:18::i;:::-;32112:54;32143:1;32147:2;32151:7;32160:5;32112:22;:54::i;:::-;32090:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;31931:321;;;:::o;35788:799::-;35943:4;35964:15;:2;:13;;;:15::i;:::-;35960:620;;;36016:2;36000:36;;;36037:12;:10;:12::i;:::-;36051:4;36057:7;36066:5;36000:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35996:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36259:1;36242:6;:13;:18;36238:272;;;36285:60;;;;;;;;;;:::i;:::-;;;;;;;;36238:272;36460:6;36454:13;36445:6;36441:2;36437:15;36430:38;35996:529;36133:41;;;36123:51;;;:6;:51;;;;36116:58;;;;;35960:620;36564:4;36557:11;;35788:799;;;;;;;:::o;37159:126::-;;;;:::o;41291:164::-;41395:10;:17;;;;41368:15;:24;41384:7;41368:24;;;;;;;;;;;:44;;;;41423:10;41439:7;41423:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41291:164;:::o;42082:988::-;42348:22;42398:1;42373:22;42390:4;42373:16;:22::i;:::-;:26;;;;:::i;:::-;42348:51;;42410:18;42431:17;:26;42449:7;42431:26;;;;;;;;;;;;42410:47;;42578:14;42564:10;:28;42560:328;;42609:19;42631:12;:18;42644:4;42631:18;;;;;;;;;;;;;;;:34;42650:14;42631:34;;;;;;;;;;;;42609:56;;42715:11;42682:12;:18;42695:4;42682:18;;;;;;;;;;;;;;;:30;42701:10;42682:30;;;;;;;;;;;:44;;;;42832:10;42799:17;:30;42817:11;42799:30;;;;;;;;;;;:43;;;;42594:294;42560:328;42984:17;:26;43002:7;42984:26;;;;;;;;;;;42977:33;;;43028:12;:18;43041:4;43028:18;;;;;;;;;;;;;;;:34;43047:14;43028:34;;;;;;;;;;;43021:41;;;42163:907;;42082:988;;:::o;43365:1079::-;43618:22;43663:1;43643:10;:17;;;;:21;;;;:::i;:::-;43618:46;;43675:18;43696:15;:24;43712:7;43696:24;;;;;;;;;;;;43675:45;;44047:19;44069:10;44080:14;44069:26;;;;;;;;:::i;:::-;;;;;;;;;;44047:48;;44133:11;44108:10;44119;44108:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;44244:10;44213:15;:28;44229:11;44213:28;;;;;;;;;;;:41;;;;44385:15;:24;44401:7;44385:24;;;;;;;;;;;44378:31;;;44420:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;43436:1008;;;43365:1079;:::o;40869:221::-;40954:14;40971:20;40988:2;40971:16;:20::i;:::-;40954:37;;41029:7;41002:12;:16;41015:2;41002:16;;;;;;;;;;;;;;;:24;41019:6;41002:24;;;;;;;;;;;:34;;;;41076:6;41047:17;:26;41065:7;41047:26;;;;;;;;;;;:35;;;;40943:147;40869:221;;:::o;32588:382::-;32682:1;32668:16;;:2;:16;;;;32660:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;32741:16;32749:7;32741;:16::i;:::-;32740:17;32732:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;32803:45;32832:1;32836:2;32840:7;32803:20;:45::i;:::-;32878:1;32861:9;:13;32871:2;32861:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;32909:2;32890:7;:16;32898:7;32890:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;32954:7;32950:2;32929:33;;32946:1;32929:33;;;;;;;;;;;;32588:382;;:::o;6404:387::-;6464:4;6672:12;6739:7;6727:20;6719:28;;6782:1;6775:4;:8;6768:15;;;6404:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2493:370::-;2564:5;2613:3;2606:4;2598:6;2594:17;2590:27;2580:122;;2621:79;;:::i;:::-;2580:122;2738:6;2725:20;2763:94;2853:3;2845:6;2838:4;2830:6;2826:17;2763:94;:::i;:::-;2754:103;;2570:293;2493:370;;;;:::o;2886:::-;2957:5;3006:3;2999:4;2991:6;2987:17;2983:27;2973:122;;3014:79;;:::i;:::-;2973:122;3131:6;3118:20;3156:94;3246:3;3238:6;3231:4;3223:6;3219:17;3156:94;:::i;:::-;3147:103;;2963:293;2886:370;;;;:::o;3262:133::-;3305:5;3343:6;3330:20;3321:29;;3359:30;3383:5;3359:30;:::i;:::-;3262:133;;;;:::o;3401:137::-;3446:5;3484:6;3471:20;3462:29;;3500:32;3526:5;3500:32;:::i;:::-;3401:137;;;;:::o;3544:141::-;3600:5;3631:6;3625:13;3616:22;;3647:32;3673:5;3647:32;:::i;:::-;3544:141;;;;:::o;3704:338::-;3759:5;3808:3;3801:4;3793:6;3789:17;3785:27;3775:122;;3816:79;;:::i;:::-;3775:122;3933:6;3920:20;3958:78;4032:3;4024:6;4017:4;4009:6;4005:17;3958:78;:::i;:::-;3949:87;;3765:277;3704:338;;;;:::o;4062:340::-;4118:5;4167:3;4160:4;4152:6;4148:17;4144:27;4134:122;;4175:79;;:::i;:::-;4134:122;4292:6;4279:20;4317:79;4392:3;4384:6;4377:4;4369:6;4365:17;4317:79;:::i;:::-;4308:88;;4124:278;4062:340;;;;:::o;4408:139::-;4454:5;4492:6;4479:20;4470:29;;4508:33;4535:5;4508:33;:::i;:::-;4408:139;;;;:::o;4553:329::-;4612:6;4661:2;4649:9;4640:7;4636:23;4632:32;4629:119;;;4667:79;;:::i;:::-;4629:119;4787:1;4812:53;4857:7;4848:6;4837:9;4833:22;4812:53;:::i;:::-;4802:63;;4758:117;4553:329;;;;:::o;4888:474::-;4956:6;4964;5013:2;5001:9;4992:7;4988:23;4984:32;4981:119;;;5019:79;;:::i;:::-;4981:119;5139:1;5164:53;5209:7;5200:6;5189:9;5185:22;5164:53;:::i;:::-;5154:63;;5110:117;5266:2;5292:53;5337:7;5328:6;5317:9;5313:22;5292:53;:::i;:::-;5282:63;;5237:118;4888:474;;;;;:::o;5368:619::-;5445:6;5453;5461;5510:2;5498:9;5489:7;5485:23;5481:32;5478:119;;;5516:79;;:::i;:::-;5478:119;5636:1;5661:53;5706:7;5697:6;5686:9;5682:22;5661:53;:::i;:::-;5651:63;;5607:117;5763:2;5789:53;5834:7;5825:6;5814:9;5810:22;5789:53;:::i;:::-;5779:63;;5734:118;5891:2;5917:53;5962:7;5953:6;5942:9;5938:22;5917:53;:::i;:::-;5907:63;;5862:118;5368:619;;;;;:::o;5993:943::-;6088:6;6096;6104;6112;6161:3;6149:9;6140:7;6136:23;6132:33;6129:120;;;6168:79;;:::i;:::-;6129:120;6288:1;6313:53;6358:7;6349:6;6338:9;6334:22;6313:53;:::i;:::-;6303:63;;6259:117;6415:2;6441:53;6486:7;6477:6;6466:9;6462:22;6441:53;:::i;:::-;6431:63;;6386:118;6543:2;6569:53;6614:7;6605:6;6594:9;6590:22;6569:53;:::i;:::-;6559:63;;6514:118;6699:2;6688:9;6684:18;6671:32;6730:18;6722:6;6719:30;6716:117;;;6752:79;;:::i;:::-;6716:117;6857:62;6911:7;6902:6;6891:9;6887:22;6857:62;:::i;:::-;6847:72;;6642:287;5993:943;;;;;;;:::o;6942:468::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:50;7385:7;7376:6;7365:9;7361:22;7343:50;:::i;:::-;7333:60;;7288:115;6942:468;;;;;:::o;7416:474::-;7484:6;7492;7541:2;7529:9;7520:7;7516:23;7512:32;7509:119;;;7547:79;;:::i;:::-;7509:119;7667:1;7692:53;7737:7;7728:6;7717:9;7713:22;7692:53;:::i;:::-;7682:63;;7638:117;7794:2;7820:53;7865:7;7856:6;7845:9;7841:22;7820:53;:::i;:::-;7810:63;;7765:118;7416:474;;;;;:::o;7896:539::-;7980:6;8029:2;8017:9;8008:7;8004:23;8000:32;7997:119;;;8035:79;;:::i;:::-;7997:119;8183:1;8172:9;8168:17;8155:31;8213:18;8205:6;8202:30;8199:117;;;8235:79;;:::i;:::-;8199:117;8340:78;8410:7;8401:6;8390:9;8386:22;8340:78;:::i;:::-;8330:88;;8126:302;7896:539;;;;:::o;8441:::-;8525:6;8574:2;8562:9;8553:7;8549:23;8545:32;8542:119;;;8580:79;;:::i;:::-;8542:119;8728:1;8717:9;8713:17;8700:31;8758:18;8750:6;8747:30;8744:117;;;8780:79;;:::i;:::-;8744:117;8885:78;8955:7;8946:6;8935:9;8931:22;8885:78;:::i;:::-;8875:88;;8671:302;8441:539;;;;:::o;8986:323::-;9042:6;9091:2;9079:9;9070:7;9066:23;9062:32;9059:119;;;9097:79;;:::i;:::-;9059:119;9217:1;9242:50;9284:7;9275:6;9264:9;9260:22;9242:50;:::i;:::-;9232:60;;9188:114;8986:323;;;;:::o;9315:327::-;9373:6;9422:2;9410:9;9401:7;9397:23;9393:32;9390:119;;;9428:79;;:::i;:::-;9390:119;9548:1;9573:52;9617:7;9608:6;9597:9;9593:22;9573:52;:::i;:::-;9563:62;;9519:116;9315:327;;;;:::o;9648:349::-;9717:6;9766:2;9754:9;9745:7;9741:23;9737:32;9734:119;;;9772:79;;:::i;:::-;9734:119;9892:1;9917:63;9972:7;9963:6;9952:9;9948:22;9917:63;:::i;:::-;9907:73;;9863:127;9648:349;;;;:::o;10003:509::-;10072:6;10121:2;10109:9;10100:7;10096:23;10092:32;10089:119;;;10127:79;;:::i;:::-;10089:119;10275:1;10264:9;10260:17;10247:31;10305:18;10297:6;10294:30;10291:117;;;10327:79;;:::i;:::-;10291:117;10432:63;10487:7;10478:6;10467:9;10463:22;10432:63;:::i;:::-;10422:73;;10218:287;10003:509;;;;:::o;10518:329::-;10577:6;10626:2;10614:9;10605:7;10601:23;10597:32;10594:119;;;10632:79;;:::i;:::-;10594:119;10752:1;10777:53;10822:7;10813:6;10802:9;10798:22;10777:53;:::i;:::-;10767:63;;10723:117;10518:329;;;;:::o;10853:179::-;10922:10;10943:46;10985:3;10977:6;10943:46;:::i;:::-;11021:4;11016:3;11012:14;10998:28;;10853:179;;;;:::o;11038:118::-;11125:24;11143:5;11125:24;:::i;:::-;11120:3;11113:37;11038:118;;:::o;11192:732::-;11311:3;11340:54;11388:5;11340:54;:::i;:::-;11410:86;11489:6;11484:3;11410:86;:::i;:::-;11403:93;;11520:56;11570:5;11520:56;:::i;:::-;11599:7;11630:1;11615:284;11640:6;11637:1;11634:13;11615:284;;;11716:6;11710:13;11743:63;11802:3;11787:13;11743:63;:::i;:::-;11736:70;;11829:60;11882:6;11829:60;:::i;:::-;11819:70;;11675:224;11662:1;11659;11655:9;11650:14;;11615:284;;;11619:14;11915:3;11908:10;;11316:608;;;11192:732;;;;:::o;11930:109::-;12011:21;12026:5;12011:21;:::i;:::-;12006:3;11999:34;11930:109;;:::o;12045:360::-;12131:3;12159:38;12191:5;12159:38;:::i;:::-;12213:70;12276:6;12271:3;12213:70;:::i;:::-;12206:77;;12292:52;12337:6;12332:3;12325:4;12318:5;12314:16;12292:52;:::i;:::-;12369:29;12391:6;12369:29;:::i;:::-;12364:3;12360:39;12353:46;;12135:270;12045:360;;;;:::o;12411:364::-;12499:3;12527:39;12560:5;12527:39;:::i;:::-;12582:71;12646:6;12641:3;12582:71;:::i;:::-;12575:78;;12662:52;12707:6;12702:3;12695:4;12688:5;12684:16;12662:52;:::i;:::-;12739:29;12761:6;12739:29;:::i;:::-;12734:3;12730:39;12723:46;;12503:272;12411:364;;;;:::o;12781:377::-;12887:3;12915:39;12948:5;12915:39;:::i;:::-;12970:89;13052:6;13047:3;12970:89;:::i;:::-;12963:96;;13068:52;13113:6;13108:3;13101:4;13094:5;13090:16;13068:52;:::i;:::-;13145:6;13140:3;13136:16;13129:23;;12891:267;12781:377;;;;:::o;13188:845::-;13291:3;13328:5;13322:12;13357:36;13383:9;13357:36;:::i;:::-;13409:89;13491:6;13486:3;13409:89;:::i;:::-;13402:96;;13529:1;13518:9;13514:17;13545:1;13540:137;;;;13691:1;13686:341;;;;13507:520;;13540:137;13624:4;13620:9;13609;13605:25;13600:3;13593:38;13660:6;13655:3;13651:16;13644:23;;13540:137;;13686:341;13753:38;13785:5;13753:38;:::i;:::-;13813:1;13827:154;13841:6;13838:1;13835:13;13827:154;;;13915:7;13909:14;13905:1;13900:3;13896:11;13889:35;13965:1;13956:7;13952:15;13941:26;;13863:4;13860:1;13856:12;13851:17;;13827:154;;;14010:6;14005:3;14001:16;13994:23;;13693:334;;13507:520;;13295:738;;13188:845;;;;:::o;14039:366::-;14181:3;14202:67;14266:2;14261:3;14202:67;:::i;:::-;14195:74;;14278:93;14367:3;14278:93;:::i;:::-;14396:2;14391:3;14387:12;14380:19;;14039:366;;;:::o;14411:::-;14553:3;14574:67;14638:2;14633:3;14574:67;:::i;:::-;14567:74;;14650:93;14739:3;14650:93;:::i;:::-;14768:2;14763:3;14759:12;14752:19;;14411:366;;;:::o;14783:::-;14925:3;14946:67;15010:2;15005:3;14946:67;:::i;:::-;14939:74;;15022:93;15111:3;15022:93;:::i;:::-;15140:2;15135:3;15131:12;15124:19;;14783:366;;;:::o;15155:::-;15297:3;15318:67;15382:2;15377:3;15318:67;:::i;:::-;15311:74;;15394:93;15483:3;15394:93;:::i;:::-;15512:2;15507:3;15503:12;15496:19;;15155:366;;;:::o;15527:::-;15669:3;15690:67;15754:2;15749:3;15690:67;:::i;:::-;15683:74;;15766:93;15855:3;15766:93;:::i;:::-;15884:2;15879:3;15875:12;15868:19;;15527:366;;;:::o;15899:::-;16041:3;16062:67;16126:2;16121:3;16062:67;:::i;:::-;16055:74;;16138:93;16227:3;16138:93;:::i;:::-;16256:2;16251:3;16247:12;16240:19;;15899:366;;;:::o;16271:::-;16413:3;16434:67;16498:2;16493:3;16434:67;:::i;:::-;16427:74;;16510:93;16599:3;16510:93;:::i;:::-;16628:2;16623:3;16619:12;16612:19;;16271:366;;;:::o;16643:::-;16785:3;16806:67;16870:2;16865:3;16806:67;:::i;:::-;16799:74;;16882:93;16971:3;16882:93;:::i;:::-;17000:2;16995:3;16991:12;16984:19;;16643:366;;;:::o;17015:::-;17157:3;17178:67;17242:2;17237:3;17178:67;:::i;:::-;17171:74;;17254:93;17343:3;17254:93;:::i;:::-;17372:2;17367:3;17363:12;17356:19;;17015:366;;;:::o;17387:::-;17529:3;17550:67;17614:2;17609:3;17550:67;:::i;:::-;17543:74;;17626:93;17715:3;17626:93;:::i;:::-;17744:2;17739:3;17735:12;17728:19;;17387:366;;;:::o;17759:::-;17901:3;17922:67;17986:2;17981:3;17922:67;:::i;:::-;17915:74;;17998:93;18087:3;17998:93;:::i;:::-;18116:2;18111:3;18107:12;18100:19;;17759:366;;;:::o;18131:::-;18273:3;18294:67;18358:2;18353:3;18294:67;:::i;:::-;18287:74;;18370:93;18459:3;18370:93;:::i;:::-;18488:2;18483:3;18479:12;18472:19;;18131:366;;;:::o;18503:::-;18645:3;18666:67;18730:2;18725:3;18666:67;:::i;:::-;18659:74;;18742:93;18831:3;18742:93;:::i;:::-;18860:2;18855:3;18851:12;18844:19;;18503:366;;;:::o;18875:::-;19017:3;19038:67;19102:2;19097:3;19038:67;:::i;:::-;19031:74;;19114:93;19203:3;19114:93;:::i;:::-;19232:2;19227:3;19223:12;19216:19;;18875:366;;;:::o;19247:::-;19389:3;19410:67;19474:2;19469:3;19410:67;:::i;:::-;19403:74;;19486:93;19575:3;19486:93;:::i;:::-;19604:2;19599:3;19595:12;19588:19;;19247:366;;;:::o;19619:::-;19761:3;19782:67;19846:2;19841:3;19782:67;:::i;:::-;19775:74;;19858:93;19947:3;19858:93;:::i;:::-;19976:2;19971:3;19967:12;19960:19;;19619:366;;;:::o;19991:::-;20133:3;20154:67;20218:2;20213:3;20154:67;:::i;:::-;20147:74;;20230:93;20319:3;20230:93;:::i;:::-;20348:2;20343:3;20339:12;20332:19;;19991:366;;;:::o;20363:::-;20505:3;20526:67;20590:2;20585:3;20526:67;:::i;:::-;20519:74;;20602:93;20691:3;20602:93;:::i;:::-;20720:2;20715:3;20711:12;20704:19;;20363:366;;;:::o;20735:::-;20877:3;20898:67;20962:2;20957:3;20898:67;:::i;:::-;20891:74;;20974:93;21063:3;20974:93;:::i;:::-;21092:2;21087:3;21083:12;21076:19;;20735:366;;;:::o;21107:::-;21249:3;21270:67;21334:2;21329:3;21270:67;:::i;:::-;21263:74;;21346:93;21435:3;21346:93;:::i;:::-;21464:2;21459:3;21455:12;21448:19;;21107:366;;;:::o;21479:::-;21621:3;21642:67;21706:2;21701:3;21642:67;:::i;:::-;21635:74;;21718:93;21807:3;21718:93;:::i;:::-;21836:2;21831:3;21827:12;21820:19;;21479:366;;;:::o;21851:::-;21993:3;22014:67;22078:2;22073:3;22014:67;:::i;:::-;22007:74;;22090:93;22179:3;22090:93;:::i;:::-;22208:2;22203:3;22199:12;22192:19;;21851:366;;;:::o;22223:::-;22365:3;22386:67;22450:2;22445:3;22386:67;:::i;:::-;22379:74;;22462:93;22551:3;22462:93;:::i;:::-;22580:2;22575:3;22571:12;22564:19;;22223:366;;;:::o;22595:::-;22737:3;22758:67;22822:2;22817:3;22758:67;:::i;:::-;22751:74;;22834:93;22923:3;22834:93;:::i;:::-;22952:2;22947:3;22943:12;22936:19;;22595:366;;;:::o;22967:::-;23109:3;23130:67;23194:2;23189:3;23130:67;:::i;:::-;23123:74;;23206:93;23295:3;23206:93;:::i;:::-;23324:2;23319:3;23315:12;23308:19;;22967:366;;;:::o;23339:::-;23481:3;23502:67;23566:2;23561:3;23502:67;:::i;:::-;23495:74;;23578:93;23667:3;23578:93;:::i;:::-;23696:2;23691:3;23687:12;23680:19;;23339:366;;;:::o;23711:398::-;23870:3;23891:83;23972:1;23967:3;23891:83;:::i;:::-;23884:90;;23983:93;24072:3;23983:93;:::i;:::-;24101:1;24096:3;24092:11;24085:18;;23711:398;;;:::o;24115:366::-;24257:3;24278:67;24342:2;24337:3;24278:67;:::i;:::-;24271:74;;24354:93;24443:3;24354:93;:::i;:::-;24472:2;24467:3;24463:12;24456:19;;24115:366;;;:::o;24487:::-;24629:3;24650:67;24714:2;24709:3;24650:67;:::i;:::-;24643:74;;24726:93;24815:3;24726:93;:::i;:::-;24844:2;24839:3;24835:12;24828:19;;24487:366;;;:::o;24859:::-;25001:3;25022:67;25086:2;25081:3;25022:67;:::i;:::-;25015:74;;25098:93;25187:3;25098:93;:::i;:::-;25216:2;25211:3;25207:12;25200:19;;24859:366;;;:::o;25231:::-;25373:3;25394:67;25458:2;25453:3;25394:67;:::i;:::-;25387:74;;25470:93;25559:3;25470:93;:::i;:::-;25588:2;25583:3;25579:12;25572:19;;25231:366;;;:::o;25603:108::-;25680:24;25698:5;25680:24;:::i;:::-;25675:3;25668:37;25603:108;;:::o;25717:118::-;25804:24;25822:5;25804:24;:::i;:::-;25799:3;25792:37;25717:118;;:::o;25841:589::-;26066:3;26088:95;26179:3;26170:6;26088:95;:::i;:::-;26081:102;;26200:95;26291:3;26282:6;26200:95;:::i;:::-;26193:102;;26312:92;26400:3;26391:6;26312:92;:::i;:::-;26305:99;;26421:3;26414:10;;25841:589;;;;;;:::o;26436:379::-;26620:3;26642:147;26785:3;26642:147;:::i;:::-;26635:154;;26806:3;26799:10;;26436:379;;;:::o;26821:222::-;26914:4;26952:2;26941:9;26937:18;26929:26;;26965:71;27033:1;27022:9;27018:17;27009:6;26965:71;:::i;:::-;26821:222;;;;:::o;27049:640::-;27244:4;27282:3;27271:9;27267:19;27259:27;;27296:71;27364:1;27353:9;27349:17;27340:6;27296:71;:::i;:::-;27377:72;27445:2;27434:9;27430:18;27421:6;27377:72;:::i;:::-;27459;27527:2;27516:9;27512:18;27503:6;27459:72;:::i;:::-;27578:9;27572:4;27568:20;27563:2;27552:9;27548:18;27541:48;27606:76;27677:4;27668:6;27606:76;:::i;:::-;27598:84;;27049:640;;;;;;;:::o;27695:373::-;27838:4;27876:2;27865:9;27861:18;27853:26;;27925:9;27919:4;27915:20;27911:1;27900:9;27896:17;27889:47;27953:108;28056:4;28047:6;27953:108;:::i;:::-;27945:116;;27695:373;;;;:::o;28074:593::-;28273:4;28311:2;28300:9;28296:18;28288:26;;28360:9;28354:4;28350:20;28346:1;28335:9;28331:17;28324:47;28388:108;28491:4;28482:6;28388:108;:::i;:::-;28380:116;;28506:72;28574:2;28563:9;28559:18;28550:6;28506:72;:::i;:::-;28588;28656:2;28645:9;28641:18;28632:6;28588:72;:::i;:::-;28074:593;;;;;;:::o;28673:210::-;28760:4;28798:2;28787:9;28783:18;28775:26;;28811:65;28873:1;28862:9;28858:17;28849:6;28811:65;:::i;:::-;28673:210;;;;:::o;28889:313::-;29002:4;29040:2;29029:9;29025:18;29017:26;;29089:9;29083:4;29079:20;29075:1;29064:9;29060:17;29053:47;29117:78;29190:4;29181:6;29117:78;:::i;:::-;29109:86;;28889:313;;;;:::o;29208:419::-;29374:4;29412:2;29401:9;29397:18;29389:26;;29461:9;29455:4;29451:20;29447:1;29436:9;29432:17;29425:47;29489:131;29615:4;29489:131;:::i;:::-;29481:139;;29208:419;;;:::o;29633:::-;29799:4;29837:2;29826:9;29822:18;29814:26;;29886:9;29880:4;29876:20;29872:1;29861:9;29857:17;29850:47;29914:131;30040:4;29914:131;:::i;:::-;29906:139;;29633:419;;;:::o;30058:::-;30224:4;30262:2;30251:9;30247:18;30239:26;;30311:9;30305:4;30301:20;30297:1;30286:9;30282:17;30275:47;30339:131;30465:4;30339:131;:::i;:::-;30331:139;;30058:419;;;:::o;30483:::-;30649:4;30687:2;30676:9;30672:18;30664:26;;30736:9;30730:4;30726:20;30722:1;30711:9;30707:17;30700:47;30764:131;30890:4;30764:131;:::i;:::-;30756:139;;30483:419;;;:::o;30908:::-;31074:4;31112:2;31101:9;31097:18;31089:26;;31161:9;31155:4;31151:20;31147:1;31136:9;31132:17;31125:47;31189:131;31315:4;31189:131;:::i;:::-;31181:139;;30908:419;;;:::o;31333:::-;31499:4;31537:2;31526:9;31522:18;31514:26;;31586:9;31580:4;31576:20;31572:1;31561:9;31557:17;31550:47;31614:131;31740:4;31614:131;:::i;:::-;31606:139;;31333:419;;;:::o;31758:::-;31924:4;31962:2;31951:9;31947:18;31939:26;;32011:9;32005:4;32001:20;31997:1;31986:9;31982:17;31975:47;32039:131;32165:4;32039:131;:::i;:::-;32031:139;;31758:419;;;:::o;32183:::-;32349:4;32387:2;32376:9;32372:18;32364:26;;32436:9;32430:4;32426:20;32422:1;32411:9;32407:17;32400:47;32464:131;32590:4;32464:131;:::i;:::-;32456:139;;32183:419;;;:::o;32608:::-;32774:4;32812:2;32801:9;32797:18;32789:26;;32861:9;32855:4;32851:20;32847:1;32836:9;32832:17;32825:47;32889:131;33015:4;32889:131;:::i;:::-;32881:139;;32608:419;;;:::o;33033:::-;33199:4;33237:2;33226:9;33222:18;33214:26;;33286:9;33280:4;33276:20;33272:1;33261:9;33257:17;33250:47;33314:131;33440:4;33314:131;:::i;:::-;33306:139;;33033:419;;;:::o;33458:::-;33624:4;33662:2;33651:9;33647:18;33639:26;;33711:9;33705:4;33701:20;33697:1;33686:9;33682:17;33675:47;33739:131;33865:4;33739:131;:::i;:::-;33731:139;;33458:419;;;:::o;33883:::-;34049:4;34087:2;34076:9;34072:18;34064:26;;34136:9;34130:4;34126:20;34122:1;34111:9;34107:17;34100:47;34164:131;34290:4;34164:131;:::i;:::-;34156:139;;33883:419;;;:::o;34308:::-;34474:4;34512:2;34501:9;34497:18;34489:26;;34561:9;34555:4;34551:20;34547:1;34536:9;34532:17;34525:47;34589:131;34715:4;34589:131;:::i;:::-;34581:139;;34308:419;;;:::o;34733:::-;34899:4;34937:2;34926:9;34922:18;34914:26;;34986:9;34980:4;34976:20;34972:1;34961:9;34957:17;34950:47;35014:131;35140:4;35014:131;:::i;:::-;35006:139;;34733:419;;;:::o;35158:::-;35324:4;35362:2;35351:9;35347:18;35339:26;;35411:9;35405:4;35401:20;35397:1;35386:9;35382:17;35375:47;35439:131;35565:4;35439:131;:::i;:::-;35431:139;;35158:419;;;:::o;35583:::-;35749:4;35787:2;35776:9;35772:18;35764:26;;35836:9;35830:4;35826:20;35822:1;35811:9;35807:17;35800:47;35864:131;35990:4;35864:131;:::i;:::-;35856:139;;35583:419;;;:::o;36008:::-;36174:4;36212:2;36201:9;36197:18;36189:26;;36261:9;36255:4;36251:20;36247:1;36236:9;36232:17;36225:47;36289:131;36415:4;36289:131;:::i;:::-;36281:139;;36008:419;;;:::o;36433:::-;36599:4;36637:2;36626:9;36622:18;36614:26;;36686:9;36680:4;36676:20;36672:1;36661:9;36657:17;36650:47;36714:131;36840:4;36714:131;:::i;:::-;36706:139;;36433:419;;;:::o;36858:::-;37024:4;37062:2;37051:9;37047:18;37039:26;;37111:9;37105:4;37101:20;37097:1;37086:9;37082:17;37075:47;37139:131;37265:4;37139:131;:::i;:::-;37131:139;;36858:419;;;:::o;37283:::-;37449:4;37487:2;37476:9;37472:18;37464:26;;37536:9;37530:4;37526:20;37522:1;37511:9;37507:17;37500:47;37564:131;37690:4;37564:131;:::i;:::-;37556:139;;37283:419;;;:::o;37708:::-;37874:4;37912:2;37901:9;37897:18;37889:26;;37961:9;37955:4;37951:20;37947:1;37936:9;37932:17;37925:47;37989:131;38115:4;37989:131;:::i;:::-;37981:139;;37708:419;;;:::o;38133:::-;38299:4;38337:2;38326:9;38322:18;38314:26;;38386:9;38380:4;38376:20;38372:1;38361:9;38357:17;38350:47;38414:131;38540:4;38414:131;:::i;:::-;38406:139;;38133:419;;;:::o;38558:::-;38724:4;38762:2;38751:9;38747:18;38739:26;;38811:9;38805:4;38801:20;38797:1;38786:9;38782:17;38775:47;38839:131;38965:4;38839:131;:::i;:::-;38831:139;;38558:419;;;:::o;38983:::-;39149:4;39187:2;39176:9;39172:18;39164:26;;39236:9;39230:4;39226:20;39222:1;39211:9;39207:17;39200:47;39264:131;39390:4;39264:131;:::i;:::-;39256:139;;38983:419;;;:::o;39408:::-;39574:4;39612:2;39601:9;39597:18;39589:26;;39661:9;39655:4;39651:20;39647:1;39636:9;39632:17;39625:47;39689:131;39815:4;39689:131;:::i;:::-;39681:139;;39408:419;;;:::o;39833:::-;39999:4;40037:2;40026:9;40022:18;40014:26;;40086:9;40080:4;40076:20;40072:1;40061:9;40057:17;40050:47;40114:131;40240:4;40114:131;:::i;:::-;40106:139;;39833:419;;;:::o;40258:::-;40424:4;40462:2;40451:9;40447:18;40439:26;;40511:9;40505:4;40501:20;40497:1;40486:9;40482:17;40475:47;40539:131;40665:4;40539:131;:::i;:::-;40531:139;;40258:419;;;:::o;40683:::-;40849:4;40887:2;40876:9;40872:18;40864:26;;40936:9;40930:4;40926:20;40922:1;40911:9;40907:17;40900:47;40964:131;41090:4;40964:131;:::i;:::-;40956:139;;40683:419;;;:::o;41108:::-;41274:4;41312:2;41301:9;41297:18;41289:26;;41361:9;41355:4;41351:20;41347:1;41336:9;41332:17;41325:47;41389:131;41515:4;41389:131;:::i;:::-;41381:139;;41108:419;;;:::o;41533:::-;41699:4;41737:2;41726:9;41722:18;41714:26;;41786:9;41780:4;41776:20;41772:1;41761:9;41757:17;41750:47;41814:131;41940:4;41814:131;:::i;:::-;41806:139;;41533:419;;;:::o;41958:222::-;42051:4;42089:2;42078:9;42074:18;42066:26;;42102:71;42170:1;42159:9;42155:17;42146:6;42102:71;:::i;:::-;41958:222;;;;:::o;42186:332::-;42307:4;42345:2;42334:9;42330:18;42322:26;;42358:71;42426:1;42415:9;42411:17;42402:6;42358:71;:::i;:::-;42439:72;42507:2;42496:9;42492:18;42483:6;42439:72;:::i;:::-;42186:332;;;;;:::o;42524:129::-;42558:6;42585:20;;:::i;:::-;42575:30;;42614:33;42642:4;42634:6;42614:33;:::i;:::-;42524:129;;;:::o;42659:75::-;42692:6;42725:2;42719:9;42709:19;;42659:75;:::o;42740:311::-;42817:4;42907:18;42899:6;42896:30;42893:56;;;42929:18;;:::i;:::-;42893:56;42979:4;42971:6;42967:17;42959:25;;43039:4;43033;43029:15;43021:23;;42740:311;;;:::o;43057:::-;43134:4;43224:18;43216:6;43213:30;43210:56;;;43246:18;;:::i;:::-;43210:56;43296:4;43288:6;43284:17;43276:25;;43356:4;43350;43346:15;43338:23;;43057:311;;;:::o;43374:307::-;43435:4;43525:18;43517:6;43514:30;43511:56;;;43547:18;;:::i;:::-;43511:56;43585:29;43607:6;43585:29;:::i;:::-;43577:37;;43669:4;43663;43659:15;43651:23;;43374:307;;;:::o;43687:308::-;43749:4;43839:18;43831:6;43828:30;43825:56;;;43861:18;;:::i;:::-;43825:56;43899:29;43921:6;43899:29;:::i;:::-;43891:37;;43983:4;43977;43973:15;43965:23;;43687:308;;;:::o;44001:132::-;44068:4;44091:3;44083:11;;44121:4;44116:3;44112:14;44104:22;;44001:132;;;:::o;44139:141::-;44188:4;44211:3;44203:11;;44234:3;44231:1;44224:14;44268:4;44265:1;44255:18;44247:26;;44139:141;;;:::o;44286:114::-;44353:6;44387:5;44381:12;44371:22;;44286:114;;;:::o;44406:98::-;44457:6;44491:5;44485:12;44475:22;;44406:98;;;:::o;44510:99::-;44562:6;44596:5;44590:12;44580:22;;44510:99;;;:::o;44615:113::-;44685:4;44717;44712:3;44708:14;44700:22;;44615:113;;;:::o;44734:184::-;44833:11;44867:6;44862:3;44855:19;44907:4;44902:3;44898:14;44883:29;;44734:184;;;;:::o;44924:168::-;45007:11;45041:6;45036:3;45029:19;45081:4;45076:3;45072:14;45057:29;;44924:168;;;;:::o;45098:147::-;45199:11;45236:3;45221:18;;45098:147;;;;:::o;45251:169::-;45335:11;45369:6;45364:3;45357:19;45409:4;45404:3;45400:14;45385:29;;45251:169;;;;:::o;45426:148::-;45528:11;45565:3;45550:18;;45426:148;;;;:::o;45580:305::-;45620:3;45639:20;45657:1;45639:20;:::i;:::-;45634:25;;45673:20;45691:1;45673:20;:::i;:::-;45668:25;;45827:1;45759:66;45755:74;45752:1;45749:81;45746:107;;;45833:18;;:::i;:::-;45746:107;45877:1;45874;45870:9;45863:16;;45580:305;;;;:::o;45891:185::-;45931:1;45948:20;45966:1;45948:20;:::i;:::-;45943:25;;45982:20;46000:1;45982:20;:::i;:::-;45977:25;;46021:1;46011:35;;46026:18;;:::i;:::-;46011:35;46068:1;46065;46061:9;46056:14;;45891:185;;;;:::o;46082:348::-;46122:7;46145:20;46163:1;46145:20;:::i;:::-;46140:25;;46179:20;46197:1;46179:20;:::i;:::-;46174:25;;46367:1;46299:66;46295:74;46292:1;46289:81;46284:1;46277:9;46270:17;46266:105;46263:131;;;46374:18;;:::i;:::-;46263:131;46422:1;46419;46415:9;46404:20;;46082:348;;;;:::o;46436:191::-;46476:4;46496:20;46514:1;46496:20;:::i;:::-;46491:25;;46530:20;46548:1;46530:20;:::i;:::-;46525:25;;46569:1;46566;46563:8;46560:34;;;46574:18;;:::i;:::-;46560:34;46619:1;46616;46612:9;46604:17;;46436:191;;;;:::o;46633:96::-;46670:7;46699:24;46717:5;46699:24;:::i;:::-;46688:35;;46633:96;;;:::o;46735:90::-;46769:7;46812:5;46805:13;46798:21;46787:32;;46735:90;;;:::o;46831:149::-;46867:7;46907:66;46900:5;46896:78;46885:89;;46831:149;;;:::o;46986:126::-;47023:7;47063:42;47056:5;47052:54;47041:65;;46986:126;;;:::o;47118:77::-;47155:7;47184:5;47173:16;;47118:77;;;:::o;47201:154::-;47285:6;47280:3;47275;47262:30;47347:1;47338:6;47333:3;47329:16;47322:27;47201:154;;;:::o;47361:307::-;47429:1;47439:113;47453:6;47450:1;47447:13;47439:113;;;47538:1;47533:3;47529:11;47523:18;47519:1;47514:3;47510:11;47503:39;47475:2;47472:1;47468:10;47463:15;;47439:113;;;47570:6;47567:1;47564:13;47561:101;;;47650:1;47641:6;47636:3;47632:16;47625:27;47561:101;47410:258;47361:307;;;:::o;47674:320::-;47718:6;47755:1;47749:4;47745:12;47735:22;;47802:1;47796:4;47792:12;47823:18;47813:81;;47879:4;47871:6;47867:17;47857:27;;47813:81;47941:2;47933:6;47930:14;47910:18;47907:38;47904:84;;;47960:18;;:::i;:::-;47904:84;47725:269;47674:320;;;:::o;48000:281::-;48083:27;48105:4;48083:27;:::i;:::-;48075:6;48071:40;48213:6;48201:10;48198:22;48177:18;48165:10;48162:34;48159:62;48156:88;;;48224:18;;:::i;:::-;48156:88;48264:10;48260:2;48253:22;48043:238;48000:281;;:::o;48287:233::-;48326:3;48349:24;48367:5;48349:24;:::i;:::-;48340:33;;48395:66;48388:5;48385:77;48382:103;;;48465:18;;:::i;:::-;48382:103;48512:1;48505:5;48501:13;48494:20;;48287:233;;;:::o;48526:176::-;48558:1;48575:20;48593:1;48575:20;:::i;:::-;48570:25;;48609:20;48627:1;48609:20;:::i;:::-;48604:25;;48648:1;48638:35;;48653:18;;:::i;:::-;48638:35;48694:1;48691;48687:9;48682:14;;48526:176;;;;:::o;48708:180::-;48756:77;48753:1;48746:88;48853:4;48850:1;48843:15;48877:4;48874:1;48867:15;48894:180;48942:77;48939:1;48932:88;49039:4;49036:1;49029:15;49063:4;49060:1;49053:15;49080:180;49128:77;49125:1;49118:88;49225:4;49222:1;49215:15;49249:4;49246:1;49239:15;49266:180;49314:77;49311:1;49304:88;49411:4;49408:1;49401:15;49435:4;49432:1;49425:15;49452:180;49500:77;49497:1;49490:88;49597:4;49594:1;49587:15;49621:4;49618:1;49611:15;49638:180;49686:77;49683:1;49676:88;49783:4;49780:1;49773:15;49807:4;49804:1;49797:15;49824:117;49933:1;49930;49923:12;49947:117;50056:1;50053;50046:12;50070:117;50179:1;50176;50169:12;50193:117;50302:1;50299;50292:12;50316:117;50425:1;50422;50415:12;50439:102;50480:6;50531:2;50527:7;50522:2;50515:5;50511:14;50507:28;50497:38;;50439:102;;;:::o;50547:223::-;50687:34;50683:1;50675:6;50671:14;50664:58;50756:6;50751:2;50743:6;50739:15;50732:31;50547:223;:::o;50776:169::-;50916:21;50912:1;50904:6;50900:14;50893:45;50776:169;:::o;50951:230::-;51091:34;51087:1;51079:6;51075:14;51068:58;51160:13;51155:2;51147:6;51143:15;51136:38;50951:230;:::o;51187:237::-;51327:34;51323:1;51315:6;51311:14;51304:58;51396:20;51391:2;51383:6;51379:15;51372:45;51187:237;:::o;51430:181::-;51570:33;51566:1;51558:6;51554:14;51547:57;51430:181;:::o;51617:225::-;51757:34;51753:1;51745:6;51741:14;51734:58;51826:8;51821:2;51813:6;51809:15;51802:33;51617:225;:::o;51848:178::-;51988:30;51984:1;51976:6;51972:14;51965:54;51848:178;:::o;52032:231::-;52172:34;52168:1;52160:6;52156:14;52149:58;52241:14;52236:2;52228:6;52224:15;52217:39;52032:231;:::o;52269:224::-;52409:34;52405:1;52397:6;52393:14;52386:58;52478:7;52473:2;52465:6;52461:15;52454:32;52269:224;:::o;52499:223::-;52639:34;52635:1;52627:6;52623:14;52616:58;52708:6;52703:2;52695:6;52691:15;52684:31;52499:223;:::o;52728:175::-;52868:27;52864:1;52856:6;52852:14;52845:51;52728:175;:::o;52909:231::-;53049:34;53045:1;53037:6;53033:14;53026:58;53118:14;53113:2;53105:6;53101:15;53094:39;52909:231;:::o;53146:227::-;53286:34;53282:1;53274:6;53270:14;53263:58;53355:10;53350:2;53342:6;53338:15;53331:35;53146:227;:::o;53379:176::-;53519:28;53515:1;53507:6;53503:14;53496:52;53379:176;:::o;53561:243::-;53701:34;53697:1;53689:6;53685:14;53678:58;53770:26;53765:2;53757:6;53753:15;53746:51;53561:243;:::o;53810:229::-;53950:34;53946:1;53938:6;53934:14;53927:58;54019:12;54014:2;54006:6;54002:15;53995:37;53810:229;:::o;54045:228::-;54185:34;54181:1;54173:6;54169:14;54162:58;54254:11;54249:2;54241:6;54237:15;54230:36;54045:228;:::o;54279:182::-;54419:34;54415:1;54407:6;54403:14;54396:58;54279:182;:::o;54467:::-;54607:34;54603:1;54595:6;54591:14;54584:58;54467:182;:::o;54655:239::-;54795:34;54791:1;54783:6;54779:14;54772:58;54864:22;54859:2;54851:6;54847:15;54840:47;54655:239;:::o;54900:231::-;55040:34;55036:1;55028:6;55024:14;55017:58;55109:14;55104:2;55096:6;55092:15;55085:39;54900:231;:::o;55137:182::-;55277:34;55273:1;55265:6;55261:14;55254:58;55137:182;:::o;55325:228::-;55465:34;55461:1;55453:6;55449:14;55442:58;55534:11;55529:2;55521:6;55517:15;55510:36;55325:228;:::o;55559:234::-;55699:34;55695:1;55687:6;55683:14;55676:58;55768:17;55763:2;55755:6;55751:15;55744:42;55559:234;:::o;55799:175::-;55939:27;55935:1;55927:6;55923:14;55916:51;55799:175;:::o;55980:220::-;56120:34;56116:1;56108:6;56104:14;56097:58;56189:3;56184:2;56176:6;56172:15;56165:28;55980:220;:::o;56206:114::-;;:::o;56326:236::-;56466:34;56462:1;56454:6;56450:14;56443:58;56535:19;56530:2;56522:6;56518:15;56511:44;56326:236;:::o;56568:225::-;56708:34;56704:1;56696:6;56692:14;56685:58;56777:8;56772:2;56764:6;56760:15;56753:33;56568:225;:::o;56799:231::-;56939:34;56935:1;56927:6;56923:14;56916:58;57008:14;57003:2;56995:6;56991:15;56984:39;56799:231;:::o;57036:179::-;57176:31;57172:1;57164:6;57160:14;57153:55;57036:179;:::o;57221:122::-;57294:24;57312:5;57294:24;:::i;:::-;57287:5;57284:35;57274:63;;57333:1;57330;57323:12;57274:63;57221:122;:::o;57349:116::-;57419:21;57434:5;57419:21;:::i;:::-;57412:5;57409:32;57399:60;;57455:1;57452;57445:12;57399:60;57349:116;:::o;57471:120::-;57543:23;57560:5;57543:23;:::i;:::-;57536:5;57533:34;57523:62;;57581:1;57578;57571:12;57523:62;57471:120;:::o;57597:122::-;57670:24;57688:5;57670:24;:::i;:::-;57663:5;57660:35;57650:63;;57709:1;57706;57699:12;57650:63;57597:122;:::o
Swarm Source
ipfs://14181ef4d02a7124b729c531fc5606c2d08f29bdd7f0844fb27d3f9230f10132
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.