Polygon Sponsored slots available. Book your slot here!
Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
[ Download CSV Export ]
Contract Name:
TheRubianGalaxy
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-05-15 */ /** *Submitted for verification at Etherscan.io on 2022-03-21 */ /** *Submitted for verification at FtmScan.com on 2022-01-21 */ // SPDX-License-Identifier: MIT 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 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 pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } 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 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 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 pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: @openzeppelin/contracts/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(); } } pragma solidity >=0.7.0 <0.9.0; contract TheRubianGalaxy is ERC721Enumerable, Ownable { using Strings for uint256; using SafeERC20 for IERC20; string public baseURI; string public baseExtension = ".json"; string public notRevealedUri; uint256 public cost = 100000000000000000000; // 100 MATIC uint256 public maxSupply = 8000; uint256 public maxMintAmount = 200; uint256 public nftPerAddresslimit = 3; bool public paused = false; bool public revealed = true; bool public onlyWhitelisted = false; address[] public whitelistedAddresses; constructor( string memory _name, string memory _symbol, string memory _initBaseURI, string memory _initNotRevealedUri ) ERC721(_name, _symbol) { setBaseURI(_initBaseURI); setNotRevealedURI(_initNotRevealedUri); } // internal function _baseURI() internal view virtual override returns (string memory) { return baseURI; } // public function mint(uint256 _mintAmount) public payable { require(!paused); uint256 supply = totalSupply(); require(_mintAmount > 0); require(_mintAmount <= maxMintAmount); require(supply + _mintAmount <= maxSupply); if (msg.sender != owner()) { if (onlyWhitelisted == true) { require(isWhitelisted(msg.sender), "user is not whitelisted"); uint256 ownerTokenCount = balanceOf(msg.sender); require(ownerTokenCount < nftPerAddresslimit); } require(msg.value >= cost * _mintAmount); } for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(msg.sender, supply + i); } } function isWhitelisted(address _user) public view returns (bool) { for(uint256 i =0; i < whitelistedAddresses.length; i++) { if (whitelistedAddresses[i] == _user) { return true; } } return false; } 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 function reveal() public onlyOwner { revealed = true; } function setNftPerAddresslimit(uint256 _limit) public onlyOwner { nftPerAddresslimit = _limit; } function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner { maxMintAmount = _newmaxMintAmount; } function setmaxSupply(uint256 _newmaxSupply) public onlyOwner { maxSupply = _newmaxSupply; } 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 setOnlyWhitelisted(bool _state) public onlyOwner { onlyWhitelisted = _state; } function whitelistUsers(address[] calldata _users) public onlyOwner { delete whitelistedAddresses; whitelistedAddresses = _users; } function getETHBalance() external view returns (uint256) { return address(this).balance; } function getERC20TokenBalance(IERC20 token) external view returns (uint256) { return token.balanceOf(address(this)); } function withdraw() public onlyOwner { require(address(this).balance != 0, "contract has no balance"); payable(_msgSender()).transfer(address(this).balance); } /** * @dev sends the full balance of the given token held by this contract to the caller */ function withdraw(IERC20 token) public onlyOwner { require( token.balanceOf(address(this)) != 0, "contract has no balance of token" ); token.safeTransfer(_msgSender(), token.balanceOf(address(this))); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getERC20TokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getETHBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPerAddresslimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onlyWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setNftPerAddresslimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setOnlyWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxSupply","type":"uint256"}],"name":"setmaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"whitelistUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c908051906020019062000051929190620003c3565b5068056bc75e2d63100000600e55611f40600f5560c860105560036011556000601260006101000a81548160ff0219169083151502179055506001601260016101000a81548160ff0219169083151502179055506000601260026101000a81548160ff021916908315150217905550348015620000cd57600080fd5b5060405162005c9b38038062005c9b8339818101604052810190620000f39190620004e5565b838381600090805190602001906200010d929190620003c3565b50806001908051906020019062000126929190620003c3565b505050620001496200013d6200017560201b60201c565b6200017d60201b60201c565b6200015a826200024360201b60201c565b6200016b81620002ee60201b60201c565b505050506200075b565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002536200017560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002796200039960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002c990620005f7565b60405180910390fd5b80600b9080519060200190620002ea929190620003c3565b5050565b620002fe6200017560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003246200039960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200037d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200037490620005f7565b60405180910390fd5b80600d908051906020019062000395929190620003c3565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003d190620006c7565b90600052602060002090601f016020900481019282620003f5576000855562000441565b82601f106200041057805160ff191683800117855562000441565b8280016001018555821562000441579182015b828111156200044057825182559160200191906001019062000423565b5b50905062000450919062000454565b5090565b5b808211156200046f57600081600090555060010162000455565b5090565b60006200048a62000484846200064d565b62000619565b905082815260208101848484011115620004a357600080fd5b620004b084828562000691565b509392505050565b600082601f830112620004ca57600080fd5b8151620004dc84826020860162000473565b91505092915050565b60008060008060808587031215620004fc57600080fd5b600085015167ffffffffffffffff8111156200051757600080fd5b6200052587828801620004b8565b945050602085015167ffffffffffffffff8111156200054357600080fd5b6200055187828801620004b8565b935050604085015167ffffffffffffffff8111156200056f57600080fd5b6200057d87828801620004b8565b925050606085015167ffffffffffffffff8111156200059b57600080fd5b620005a987828801620004b8565b91505092959194509250565b6000620005c460208362000680565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600060208201905081810360008301526200061281620005b5565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156200064357620006426200072c565b5b8060405250919050565b600067ffffffffffffffff8211156200066b576200066a6200072c565b5b601f19601f8301169050602081019050919050565b600082825260208201905092915050565b60005b83811015620006b157808201518184015260208101905062000694565b83811115620006c1576000848401525b50505050565b60006002820490506001821680620006e057607f821691505b60208210811415620006f757620006f6620006fd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b615530806200076b6000396000f3fe6080604052600436106102935760003560e01c80635c975abb1161015a578063a475b5dd116100c1578063d5abeb011161007a578063d5abeb0114610a07578063da3ef23f14610a32578063e985e9c514610a5b578063edec5f2714610a98578063f2c4ce1e14610ac1578063f2fde38b14610aea57610293565b8063a475b5dd146108e5578063b88d4fde146108fc578063ba4e5c4914610925578063c668286214610962578063c716389a1461098d578063c87b56dd146109ca57610293565b80637f00c7a6116101135780637f00c7a6146107f65780638da5cb5b1461081f57806395d89b411461084a5780639c70b51214610875578063a0712d68146108a0578063a22cb465146108bc57610293565b80635c975abb146106e45780636352211e1461070f5780636c0360eb1461074c5780636e9472981461077757806370a08231146107a2578063715018a6146107df57610293565b80632f745c59116101fe57806343bd396d116101b757806343bd396d146105d657806344a0d68a146106015780634f6ccce71461062a578063518302271461066757806351cff8d91461069257806355f804b3146106bb57610293565b80632f745c59146104b65780633af32abf146104f35780633c952764146105305780633ccfd60b1461055957806342842e0e14610570578063438b63001461059957610293565b806313faede61161025057806313faede6146103ba57806318160ddd146103e5578063228025e814610410578063239c70ae1461043957806323b872dd1461046457806325a4206d1461048d57610293565b806301ffc9a71461029857806302329a29146102d557806306fdde03146102fe578063081812fc14610329578063081c8c4414610366578063095ea7b314610391575b600080fd5b3480156102a457600080fd5b506102bf60048036038101906102ba919061403f565b610b13565b6040516102cc9190614cac565b60405180910390f35b3480156102e157600080fd5b506102fc60048036038101906102f79190613fed565b610b8d565b005b34801561030a57600080fd5b50610313610c26565b6040516103209190614cc7565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b91906140fb565b610cb8565b60405161035d9190614bfa565b60405180910390f35b34801561037257600080fd5b5061037b610d3d565b6040516103889190614cc7565b60405180910390f35b34801561039d57600080fd5b506103b860048036038101906103b39190613f6c565b610dcb565b005b3480156103c657600080fd5b506103cf610ee3565b6040516103dc9190614fe9565b60405180910390f35b3480156103f157600080fd5b506103fa610ee9565b6040516104079190614fe9565b60405180910390f35b34801561041c57600080fd5b50610437600480360381019061043291906140fb565b610ef6565b005b34801561044557600080fd5b5061044e610f7c565b60405161045b9190614fe9565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190613e66565b610f82565b005b34801561049957600080fd5b506104b460048036038101906104af91906140fb565b610fe2565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190613f6c565b611068565b6040516104ea9190614fe9565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190613e01565b61110d565b6040516105279190614cac565b60405180910390f35b34801561053c57600080fd5b5061055760048036038101906105529190613fed565b6111e2565b005b34801561056557600080fd5b5061056e61127b565b005b34801561057c57600080fd5b5061059760048036038101906105929190613e66565b61138b565b005b3480156105a557600080fd5b506105c060048036038101906105bb9190613e01565b6113ab565b6040516105cd9190614c8a565b60405180910390f35b3480156105e257600080fd5b506105eb6114a5565b6040516105f89190614fe9565b60405180910390f35b34801561060d57600080fd5b50610628600480360381019061062391906140fb565b6114ab565b005b34801561063657600080fd5b50610651600480360381019061064c91906140fb565b611531565b60405161065e9190614fe9565b60405180910390f35b34801561067357600080fd5b5061067c6115c8565b6040516106899190614cac565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b49190614091565b6115db565b005b3480156106c757600080fd5b506106e260048036038101906106dd91906140ba565b6117e0565b005b3480156106f057600080fd5b506106f9611876565b6040516107069190614cac565b60405180910390f35b34801561071b57600080fd5b50610736600480360381019061073191906140fb565b611889565b6040516107439190614bfa565b60405180910390f35b34801561075857600080fd5b5061076161193b565b60405161076e9190614cc7565b60405180910390f35b34801561078357600080fd5b5061078c6119c9565b6040516107999190614fe9565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190613e01565b6119d1565b6040516107d69190614fe9565b60405180910390f35b3480156107eb57600080fd5b506107f4611a89565b005b34801561080257600080fd5b5061081d600480360381019061081891906140fb565b611b11565b005b34801561082b57600080fd5b50610834611b97565b6040516108419190614bfa565b60405180910390f35b34801561085657600080fd5b5061085f611bc1565b60405161086c9190614cc7565b60405180910390f35b34801561088157600080fd5b5061088a611c53565b6040516108979190614cac565b60405180910390f35b6108ba60048036038101906108b591906140fb565b611c66565b005b3480156108c857600080fd5b506108e360048036038101906108de9190613f30565b611dd3565b005b3480156108f157600080fd5b506108fa611f54565b005b34801561090857600080fd5b50610923600480360381019061091e9190613eb5565b611fed565b005b34801561093157600080fd5b5061094c600480360381019061094791906140fb565b61204f565b6040516109599190614bfa565b60405180910390f35b34801561096e57600080fd5b5061097761208e565b6040516109849190614cc7565b60405180910390f35b34801561099957600080fd5b506109b460048036038101906109af9190614091565b61211c565b6040516109c19190614fe9565b60405180910390f35b3480156109d657600080fd5b506109f160048036038101906109ec91906140fb565b6121ae565b6040516109fe9190614cc7565b60405180910390f35b348015610a1357600080fd5b50610a1c612307565b604051610a299190614fe9565b60405180910390f35b348015610a3e57600080fd5b50610a596004803603810190610a5491906140ba565b61230d565b005b348015610a6757600080fd5b50610a826004803603810190610a7d9190613e2a565b6123a3565b604051610a8f9190614cac565b60405180910390f35b348015610aa457600080fd5b50610abf6004803603810190610aba9190613fa8565b612437565b005b348015610acd57600080fd5b50610ae86004803603810190610ae391906140ba565b6124d7565b005b348015610af657600080fd5b50610b116004803603810190610b0c9190613e01565b61256d565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b865750610b8582612665565b5b9050919050565b610b95612747565b73ffffffffffffffffffffffffffffffffffffffff16610bb3611b97565b73ffffffffffffffffffffffffffffffffffffffff1614610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0090614ec9565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b606060008054610c359061530e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c619061530e565b8015610cae5780601f10610c8357610100808354040283529160200191610cae565b820191906000526020600020905b815481529060010190602001808311610c9157829003601f168201915b5050505050905090565b6000610cc38261274f565b610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf990614ea9565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600d8054610d4a9061530e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d769061530e565b8015610dc35780601f10610d9857610100808354040283529160200191610dc3565b820191906000526020600020905b815481529060010190602001808311610da657829003601f168201915b505050505081565b6000610dd682611889565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e90614f29565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e66612747565b73ffffffffffffffffffffffffffffffffffffffff161480610e955750610e9481610e8f612747565b6123a3565b5b610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90614e09565b60405180910390fd5b610ede83836127bb565b505050565b600e5481565b6000600880549050905090565b610efe612747565b73ffffffffffffffffffffffffffffffffffffffff16610f1c611b97565b73ffffffffffffffffffffffffffffffffffffffff1614610f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6990614ec9565b60405180910390fd5b80600f8190555050565b60105481565b610f93610f8d612747565b82612874565b610fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc990614f49565b60405180910390fd5b610fdd838383612952565b505050565b610fea612747565b73ffffffffffffffffffffffffffffffffffffffff16611008611b97565b73ffffffffffffffffffffffffffffffffffffffff161461105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590614ec9565b60405180910390fd5b8060118190555050565b6000611073836119d1565b82106110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90614ce9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600080600090505b6013805490508110156111d7578273ffffffffffffffffffffffffffffffffffffffff1660138281548110611173577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156111c45760019150506111dd565b80806111cf90615340565b915050611115565b50600090505b919050565b6111ea612747565b73ffffffffffffffffffffffffffffffffffffffff16611208611b97565b73ffffffffffffffffffffffffffffffffffffffff161461125e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125590614ec9565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b611283612747565b73ffffffffffffffffffffffffffffffffffffffff166112a1611b97565b73ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90614ec9565b60405180910390fd5b600047141561133b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133290614de9565b60405180910390fd5b611343612747565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611388573d6000803e3d6000fd5b50565b6113a683838360405180602001604052806000815250611fed565b505050565b606060006113b8836119d1565b905060008167ffffffffffffffff8111156113fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561142a5781602001602082028036833780820191505090505b50905060005b8281101561149a576114428582611068565b82828151811061147b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018181525050808061149290615340565b915050611430565b508092505050919050565b60115481565b6114b3612747565b73ffffffffffffffffffffffffffffffffffffffff166114d1611b97565b73ffffffffffffffffffffffffffffffffffffffff1614611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90614ec9565b60405180910390fd5b80600e8190555050565b600061153b610ee9565b821061157c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157390614f89565b60405180910390fd5b600882815481106115b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b601260019054906101000a900460ff1681565b6115e3612747565b73ffffffffffffffffffffffffffffffffffffffff16611601611b97565b73ffffffffffffffffffffffffffffffffffffffff1614611657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164e90614ec9565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116929190614bfa565b60206040518083038186803b1580156116aa57600080fd5b505afa1580156116be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e29190614124565b1415611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a90614e69565b60405180910390fd5b6117dd61172e612747565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117679190614bfa565b60206040518083038186803b15801561177f57600080fd5b505afa158015611793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b79190614124565b8373ffffffffffffffffffffffffffffffffffffffff16612bae9092919063ffffffff16565b50565b6117e8612747565b73ffffffffffffffffffffffffffffffffffffffff16611806611b97565b73ffffffffffffffffffffffffffffffffffffffff161461185c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185390614ec9565b60405180910390fd5b80600b9080519060200190611872929190613adb565b5050565b601260009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192990614e49565b60405180910390fd5b80915050919050565b600b80546119489061530e565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061530e565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505081565b600047905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990614e29565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a91612747565b73ffffffffffffffffffffffffffffffffffffffff16611aaf611b97565b73ffffffffffffffffffffffffffffffffffffffff1614611b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afc90614ec9565b60405180910390fd5b611b0f6000612c34565b565b611b19612747565b73ffffffffffffffffffffffffffffffffffffffff16611b37611b97565b73ffffffffffffffffffffffffffffffffffffffff1614611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8490614ec9565b60405180910390fd5b8060108190555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611bd09061530e565b80601f0160208091040260200160405190810160405280929190818152602001828054611bfc9061530e565b8015611c495780601f10611c1e57610100808354040283529160200191611c49565b820191906000526020600020905b815481529060010190602001808311611c2c57829003601f168201915b5050505050905090565b601260029054906101000a900460ff1681565b601260009054906101000a900460ff1615611c8057600080fd5b6000611c8a610ee9565b905060008211611c9957600080fd5b601054821115611ca857600080fd5b600f548282611cb79190615131565b1115611cc257600080fd5b611cca611b97565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d985760011515601260029054906101000a900460ff1615151415611d7d57611d213361110d565b611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790614fc9565b60405180910390fd5b6000611d6b336119d1565b90506011548110611d7b57600080fd5b505b81600e54611d8b91906151b8565b341015611d9757600080fd5b5b6000600190505b828111611dce57611dbb338284611db69190615131565b612cfa565b8080611dc690615340565b915050611d9f565b505050565b611ddb612747565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090614d89565b60405180910390fd5b8060056000611e56612747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611f03612747565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611f489190614cac565b60405180910390a35050565b611f5c612747565b73ffffffffffffffffffffffffffffffffffffffff16611f7a611b97565b73ffffffffffffffffffffffffffffffffffffffff1614611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc790614ec9565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550565b611ffe611ff8612747565b83612874565b61203d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203490614f49565b60405180910390fd5b61204984848484612d18565b50505050565b6013818154811061205f57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c805461209b9061530e565b80601f01602080910402602001604051908101604052809291908181526020018280546120c79061530e565b80156121145780601f106120e957610100808354040283529160200191612114565b820191906000526020600020905b8154815290600101906020018083116120f757829003601f168201915b505050505081565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121579190614bfa565b60206040518083038186803b15801561216f57600080fd5b505afa158015612183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a79190614124565b9050919050565b60606121b98261274f565b6121f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ef90614f09565b60405180910390fd5b60001515601260019054906101000a900460ff16151514156122a657600d80546122219061530e565b80601f016020809104026020016040519081016040528092919081815260200182805461224d9061530e565b801561229a5780601f1061226f5761010080835404028352916020019161229a565b820191906000526020600020905b81548152906001019060200180831161227d57829003601f168201915b50505050509050612302565b60006122b0612d74565b905060008151116122d057604051806020016040528060008152506122fe565b806122da84612e06565b600c6040516020016122ee93929190614bc9565b6040516020818303038152906040525b9150505b919050565b600f5481565b612315612747565b73ffffffffffffffffffffffffffffffffffffffff16612333611b97565b73ffffffffffffffffffffffffffffffffffffffff1614612389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238090614ec9565b60405180910390fd5b80600c908051906020019061239f929190613adb565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61243f612747565b73ffffffffffffffffffffffffffffffffffffffff1661245d611b97565b73ffffffffffffffffffffffffffffffffffffffff16146124b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124aa90614ec9565b60405180910390fd5b601360006124c19190613b61565b8181601391906124d2929190613b82565b505050565b6124df612747565b73ffffffffffffffffffffffffffffffffffffffff166124fd611b97565b73ffffffffffffffffffffffffffffffffffffffff1614612553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254a90614ec9565b60405180910390fd5b80600d9080519060200190612569929190613adb565b5050565b612575612747565b73ffffffffffffffffffffffffffffffffffffffff16612593611b97565b73ffffffffffffffffffffffffffffffffffffffff16146125e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e090614ec9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265090614d29565b60405180910390fd5b61266281612c34565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061273057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612740575061273f82612fb3565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661282e83611889565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061287f8261274f565b6128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614dc9565b60405180910390fd5b60006128c983611889565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061293857508373ffffffffffffffffffffffffffffffffffffffff1661292084610cb8565b73ffffffffffffffffffffffffffffffffffffffff16145b80612949575061294881856123a3565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661297282611889565b73ffffffffffffffffffffffffffffffffffffffff16146129c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bf90614ee9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2f90614d69565b60405180910390fd5b612a4383838361301d565b612a4e6000826127bb565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a9e9190615212565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612af59190615131565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b612c2f8363a9059cbb60e01b8484604051602401612bcd929190614c61565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613131565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612d148282604051806020016040528060008152506131f8565b5050565b612d23848484612952565b612d2f84848484613253565b612d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6590614d09565b60405180910390fd5b50505050565b6060600b8054612d839061530e565b80601f0160208091040260200160405190810160405280929190818152602001828054612daf9061530e565b8015612dfc5780601f10612dd157610100808354040283529160200191612dfc565b820191906000526020600020905b815481529060010190602001808311612ddf57829003601f168201915b5050505050905090565b60606000821415612e4e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612fae565b600082905060005b60008214612e80578080612e6990615340565b915050600a82612e799190615187565b9150612e56565b60008167ffffffffffffffff811115612ec2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612ef45781602001600182028036833780820191505090505b5090505b60008514612fa757600182612f0d9190615212565b9150600a85612f1c9190615389565b6030612f289190615131565b60f81b818381518110612f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612fa09190615187565b9450612ef8565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6130288383836133ea565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561306b57613066816133ef565b6130aa565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146130a9576130a88382613438565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130ed576130e8816135a5565b61312c565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461312b5761312a82826136e8565b5b5b505050565b6000613193826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166137679092919063ffffffff16565b90506000815111156131f357808060200190518101906131b39190614016565b6131f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e990614fa9565b60405180910390fd5b5b505050565b613202838361377f565b61320f6000848484613253565b61324e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324590614d09565b60405180910390fd5b505050565b60006132748473ffffffffffffffffffffffffffffffffffffffff1661394d565b156133dd578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261329d612747565b8786866040518563ffffffff1660e01b81526004016132bf9493929190614c15565b602060405180830381600087803b1580156132d957600080fd5b505af192505050801561330a57506040513d601f19601f820116820180604052508101906133079190614068565b60015b61338d573d806000811461333a576040519150601f19603f3d011682016040523d82523d6000602084013e61333f565b606091505b50600081511415613385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337c90614d09565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506133e2565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001613445846119d1565b61344f9190615212565b9050600060076000848152602001908152602001600020549050818114613534576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506135b99190615212565b905060006009600084815260200190815260200160002054905060006008838154811061360f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110613657577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806136cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006136f3836119d1565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b60606137768484600085613960565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e690614e89565b60405180910390fd5b6137f88161274f565b15613838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161382f90614d49565b60405180910390fd5b6138446000838361301d565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138949190615131565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b6060824710156139a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161399c90614da9565b60405180910390fd5b6139ae8561394d565b6139ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139e490614f69565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613a169190614bb2565b60006040518083038185875af1925050503d8060008114613a53576040519150601f19603f3d011682016040523d82523d6000602084013e613a58565b606091505b5091509150613a68828286613a74565b92505050949350505050565b60608315613a8457829050613ad4565b600083511115613a975782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acb9190614cc7565b60405180910390fd5b9392505050565b828054613ae79061530e565b90600052602060002090601f016020900481019282613b095760008555613b50565b82601f10613b2257805160ff1916838001178555613b50565b82800160010185558215613b50579182015b82811115613b4f578251825591602001919060010190613b34565b5b509050613b5d9190613c22565b5090565b5080546000825590600052602060002090810190613b7f9190613c22565b50565b828054828255906000526020600020908101928215613c11579160200282015b82811115613c1057823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613ba2565b5b509050613c1e9190613c22565b5090565b5b80821115613c3b576000816000905550600101613c23565b5090565b6000613c52613c4d84615035565b615004565b905082815260208101848484011115613c6a57600080fd5b613c758482856152cc565b509392505050565b6000613c90613c8b84615065565b615004565b905082815260208101848484011115613ca857600080fd5b613cb38482856152cc565b509392505050565b600081359050613cca81615487565b92915050565b60008083601f840112613ce257600080fd5b8235905067ffffffffffffffff811115613cfb57600080fd5b602083019150836020820283011115613d1357600080fd5b9250929050565b600081359050613d298161549e565b92915050565b600081519050613d3e8161549e565b92915050565b600081359050613d53816154b5565b92915050565b600081519050613d68816154b5565b92915050565b600082601f830112613d7f57600080fd5b8135613d8f848260208601613c3f565b91505092915050565b600081359050613da7816154cc565b92915050565b600082601f830112613dbe57600080fd5b8135613dce848260208601613c7d565b91505092915050565b600081359050613de6816154e3565b92915050565b600081519050613dfb816154e3565b92915050565b600060208284031215613e1357600080fd5b6000613e2184828501613cbb565b91505092915050565b60008060408385031215613e3d57600080fd5b6000613e4b85828601613cbb565b9250506020613e5c85828601613cbb565b9150509250929050565b600080600060608486031215613e7b57600080fd5b6000613e8986828701613cbb565b9350506020613e9a86828701613cbb565b9250506040613eab86828701613dd7565b9150509250925092565b60008060008060808587031215613ecb57600080fd5b6000613ed987828801613cbb565b9450506020613eea87828801613cbb565b9350506040613efb87828801613dd7565b925050606085013567ffffffffffffffff811115613f1857600080fd5b613f2487828801613d6e565b91505092959194509250565b60008060408385031215613f4357600080fd5b6000613f5185828601613cbb565b9250506020613f6285828601613d1a565b9150509250929050565b60008060408385031215613f7f57600080fd5b6000613f8d85828601613cbb565b9250506020613f9e85828601613dd7565b9150509250929050565b60008060208385031215613fbb57600080fd5b600083013567ffffffffffffffff811115613fd557600080fd5b613fe185828601613cd0565b92509250509250929050565b600060208284031215613fff57600080fd5b600061400d84828501613d1a565b91505092915050565b60006020828403121561402857600080fd5b600061403684828501613d2f565b91505092915050565b60006020828403121561405157600080fd5b600061405f84828501613d44565b91505092915050565b60006020828403121561407a57600080fd5b600061408884828501613d59565b91505092915050565b6000602082840312156140a357600080fd5b60006140b184828501613d98565b91505092915050565b6000602082840312156140cc57600080fd5b600082013567ffffffffffffffff8111156140e657600080fd5b6140f284828501613dad565b91505092915050565b60006020828403121561410d57600080fd5b600061411b84828501613dd7565b91505092915050565b60006020828403121561413657600080fd5b600061414484828501613dec565b91505092915050565b60006141598383614b94565b60208301905092915050565b61416e81615246565b82525050565b600061417f826150ba565b61418981856150e8565b935061419483615095565b8060005b838110156141c55781516141ac888261414d565b97506141b7836150db565b925050600181019050614198565b5085935050505092915050565b6141db81615258565b82525050565b60006141ec826150c5565b6141f681856150f9565b93506142068185602086016152db565b61420f81615476565b840191505092915050565b6000614225826150c5565b61422f818561510a565b935061423f8185602086016152db565b80840191505092915050565b6000614256826150d0565b6142608185615115565b93506142708185602086016152db565b61427981615476565b840191505092915050565b600061428f826150d0565b6142998185615126565b93506142a98185602086016152db565b80840191505092915050565b600081546142c28161530e565b6142cc8186615126565b945060018216600081146142e757600181146142f85761432b565b60ff1983168652818601935061432b565b614301856150a5565b60005b8381101561432357815481890152600182019150602081019050614304565b838801955050505b50505092915050565b6000614341602b83615115565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b60006143a7603283615115565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b600061440d602683615115565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614473601c83615115565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b60006144b3602483615115565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614519601983615115565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000614559602683615115565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006145bf602c83615115565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000614625601783615115565b91507f636f6e747261637420686173206e6f2062616c616e63650000000000000000006000830152602082019050919050565b6000614665603883615115565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b60006146cb602a83615115565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000614731602983615115565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000614797602083615115565b91507f636f6e747261637420686173206e6f2062616c616e6365206f6620746f6b656e6000830152602082019050919050565b60006147d7602083615115565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b6000614817602c83615115565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b600061487d602083615115565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006148bd602983615115565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000614923602f83615115565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b6000614989602183615115565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006149ef603183615115565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000614a55601d83615115565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000614a95602c83615115565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b6000614afb602a83615115565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000614b61601783615115565b91507f75736572206973206e6f742077686974656c69737465640000000000000000006000830152602082019050919050565b614b9d816152c2565b82525050565b614bac816152c2565b82525050565b6000614bbe828461421a565b915081905092915050565b6000614bd58286614284565b9150614be18285614284565b9150614bed82846142b5565b9150819050949350505050565b6000602082019050614c0f6000830184614165565b92915050565b6000608082019050614c2a6000830187614165565b614c376020830186614165565b614c446040830185614ba3565b8181036060830152614c5681846141e1565b905095945050505050565b6000604082019050614c766000830185614165565b614c836020830184614ba3565b9392505050565b60006020820190508181036000830152614ca48184614174565b905092915050565b6000602082019050614cc160008301846141d2565b92915050565b60006020820190508181036000830152614ce1818461424b565b905092915050565b60006020820190508181036000830152614d0281614334565b9050919050565b60006020820190508181036000830152614d228161439a565b9050919050565b60006020820190508181036000830152614d4281614400565b9050919050565b60006020820190508181036000830152614d6281614466565b9050919050565b60006020820190508181036000830152614d82816144a6565b9050919050565b60006020820190508181036000830152614da28161450c565b9050919050565b60006020820190508181036000830152614dc28161454c565b9050919050565b60006020820190508181036000830152614de2816145b2565b9050919050565b60006020820190508181036000830152614e0281614618565b9050919050565b60006020820190508181036000830152614e2281614658565b9050919050565b60006020820190508181036000830152614e42816146be565b9050919050565b60006020820190508181036000830152614e6281614724565b9050919050565b60006020820190508181036000830152614e828161478a565b9050919050565b60006020820190508181036000830152614ea2816147ca565b9050919050565b60006020820190508181036000830152614ec28161480a565b9050919050565b60006020820190508181036000830152614ee281614870565b9050919050565b60006020820190508181036000830152614f02816148b0565b9050919050565b60006020820190508181036000830152614f2281614916565b9050919050565b60006020820190508181036000830152614f428161497c565b9050919050565b60006020820190508181036000830152614f62816149e2565b9050919050565b60006020820190508181036000830152614f8281614a48565b9050919050565b60006020820190508181036000830152614fa281614a88565b9050919050565b60006020820190508181036000830152614fc281614aee565b9050919050565b60006020820190508181036000830152614fe281614b54565b9050919050565b6000602082019050614ffe6000830184614ba3565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561502b5761502a615447565b5b8060405250919050565b600067ffffffffffffffff8211156150505761504f615447565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156150805761507f615447565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061513c826152c2565b9150615147836152c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561517c5761517b6153ba565b5b828201905092915050565b6000615192826152c2565b915061519d836152c2565b9250826151ad576151ac6153e9565b5b828204905092915050565b60006151c3826152c2565b91506151ce836152c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615207576152066153ba565b5b828202905092915050565b600061521d826152c2565b9150615228836152c2565b92508282101561523b5761523a6153ba565b5b828203905092915050565b6000615251826152a2565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061529b82615246565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156152f95780820151818401526020810190506152de565b83811115615308576000848401525b50505050565b6000600282049050600182168061532657607f821691505b6020821081141561533a57615339615418565b5b50919050565b600061534b826152c2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561537e5761537d6153ba565b5b600182019050919050565b6000615394826152c2565b915061539f836152c2565b9250826153af576153ae6153e9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61549081615246565b811461549b57600080fd5b50565b6154a781615258565b81146154b257600080fd5b50565b6154be81615264565b81146154c957600080fd5b50565b6154d581615290565b81146154e057600080fd5b50565b6154ec816152c2565b81146154f757600080fd5b5056fea264697066735822122041b5b2560d4107c6fe9258c0b252c91b1e60e17f22d0528b9980e6a85a4acb5d64736f6c63430008000033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000c447265616d67696e65657273000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035247430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005968747470733a2f2f62616679626569616270363466716373647068666f73676c6d7965636965696d36626a7133366a32636934747533346a6973326b736c68657837712e697066732e6e667473746f726167652e6c696e6b2f000000000000000000000000000000000000000000000000000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000c447265616d67696e65657273000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035247430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005968747470733a2f2f62616679626569616270363466716373647068666f73676c6d7965636965696d36626a7133366a32636934747533346a6973326b736c68657837712e697066732e6e667473746f726167652e6c696e6b2f000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Dreamgineers
Arg [1] : _symbol (string): RGC
Arg [2] : _initBaseURI (string): https://bafybeiabp64fqcsdphfosglmyecieim6bjq36j2ci4tu34jis2kslhex7q.ipfs.nftstorage.link/
Arg [3] : _initNotRevealedUri (string):
-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [5] : 447265616d67696e656572730000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 5247430000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000059
Arg [9] : 68747470733a2f2f62616679626569616270363466716373647068666f73676c
Arg [10] : 6d7965636965696d36626a7133366a32636934747533346a6973326b736c6865
Arg [11] : 7837712e697066732e6e667473746f726167652e6c696e6b2f00000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed ByteCode Sourcemap
49260:4705:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43077:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52841:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27614:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29173:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49448:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28696:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49481:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43717:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52373:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49578:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30063:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52053:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43385:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50869:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52922:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53428:172;;;;;;;;;;;;;:::i;:::-;;30473:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51115:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49617:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52165:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43907:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49690:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53715:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52607:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49659:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27308:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49380:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53174:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27038:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4676:94;;;;;;;;;;;;;:::i;:::-;;52251:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4025:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27783:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49722:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50197:666;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29466:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51982:63;;;;;;;;;;;;;:::i;:::-;;30729:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49762:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49406;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53278:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51469:491;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49542:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52711:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29832:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53024:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52481:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4925:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43077:224;43179:4;43218:35;43203:50;;;:11;:50;;;;:90;;;;43257:36;43281:11;43257:23;:36::i;:::-;43203:90;43196:97;;43077:224;;;:::o;52841:73::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52902:6:::1;52893;;:15;;;;;;;;;;;;;;;;;;52841:73:::0;:::o;27614:100::-;27668:13;27701:5;27694:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27614:100;:::o;29173:221::-;29249:7;29277:16;29285:7;29277;:16::i;:::-;29269:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29362:15;:24;29378:7;29362:24;;;;;;;;;;;;;;;;;;;;;29355:31;;29173:221;;;:::o;49448:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28696:411::-;28777:13;28793:23;28808:7;28793:14;:23::i;:::-;28777:39;;28841:5;28835:11;;:2;:11;;;;28827:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;28935:5;28919:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;28944:37;28961:5;28968:12;:10;:12::i;:::-;28944:16;:37::i;:::-;28919:62;28897:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;29078:21;29087:2;29091:7;29078:8;:21::i;:::-;28696:411;;;:::o;49481:43::-;;;;:::o;43717:113::-;43778:7;43805:10;:17;;;;43798:24;;43717:113;:::o;52373:100::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52454:13:::1;52442:9;:25;;;;52373:100:::0;:::o;49578:34::-;;;;:::o;30063:339::-;30258:41;30277:12;:10;:12::i;:::-;30291:7;30258:18;:41::i;:::-;30250:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;30366:28;30376:4;30382:2;30386:7;30366:9;:28::i;:::-;30063:339;;;:::o;52053:104::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52145:6:::1;52124:18;:27;;;;52053:104:::0;:::o;43385:256::-;43482:7;43518:23;43535:5;43518:16;:23::i;:::-;43510:5;:31;43502:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;43607:12;:19;43620:5;43607:19;;;;;;;;;;;;;;;:26;43627:5;43607:26;;;;;;;;;;;;43600:33;;43385:256;;;;:::o;50869:238::-;50928:4;50945:9;50956:1;50945:12;;50941:142;50963:20;:27;;;;50959:1;:31;50941:142;;;51037:5;51010:32;;:20;51031:1;51010:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;51006:70;;;51062:4;51055:11;;;;;51006:70;50992:3;;;;;:::i;:::-;;;;50941:142;;;;51096:5;51089:12;;50869:238;;;;:::o;52922:95::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53005:6:::1;52987:15;;:24;;;;;;;;;;;;;;;;;;52922:95:::0;:::o;53428:172::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53505:1:::1;53480:21;:26;;53472:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;53549:12;:10;:12::i;:::-;53541:30;;:53;53572:21;53541:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;53428:172::o:0;30473:185::-;30611:39;30628:4;30634:2;30638:7;30611:39;;;;;;;;;;;;:16;:39::i;:::-;30473:185;;;:::o;51115:348::-;51190:16;51218:23;51244:17;51254:6;51244:9;:17::i;:::-;51218:43;;51268:25;51310:15;51296:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51268:58;;51338:9;51333:103;51353:15;51349:1;:19;51333:103;;;51398:30;51418:6;51426:1;51398:19;:30::i;:::-;51384:8;51393:1;51384:11;;;;;;;;;;;;;;;;;;;;;:44;;;;;51370:3;;;;;:::i;:::-;;;;51333:103;;;;51449:8;51442:15;;;;51115:348;;;:::o;49617:37::-;;;;:::o;52165:80::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52231:8:::1;52224:4;:15;;;;52165:80:::0;:::o;43907:233::-;43982:7;44018:30;:28;:30::i;:::-;44010:5;:38;44002:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;44115:10;44126:5;44115:17;;;;;;;;;;;;;;;;;;;;;;;;44108:24;;43907:233;;;:::o;49690:27::-;;;;;;;;;;;;;:::o;53715:247::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53834:1:::1;53800:5;:15;;;53824:4;53800:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;;53784:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;53892:64;53911:12;:10;:12::i;:::-;53925:5;:15;;;53949:4;53925:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;53892:5;:18;;;;:64;;;;;:::i;:::-;53715:247:::0;:::o;52607:98::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52688:11:::1;52678:7;:21;;;;;;;;;;;;:::i;:::-;;52607:98:::0;:::o;49659:26::-;;;;;;;;;;;;;:::o;27308:239::-;27380:7;27400:13;27416:7;:16;27424:7;27416:16;;;;;;;;;;;;;;;;;;;;;27400:32;;27468:1;27451:19;;:5;:19;;;;27443:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27534:5;27527:12;;;27308:239;;;:::o;49380:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;53174:98::-;53222:7;53245:21;53238:28;;53174:98;:::o;27038:208::-;27110:7;27155:1;27138:19;;:5;:19;;;;27130:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;27222:9;:16;27232:5;27222:16;;;;;;;;;;;;;;;;27215:23;;27038:208;;;:::o;4676:94::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4741:21:::1;4759:1;4741:9;:21::i;:::-;4676:94::o:0;52251:116::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52344:17:::1;52328:13;:33;;;;52251:116:::0;:::o;4025:87::-;4071:7;4098:6;;;;;;;;;;;4091:13;;4025:87;:::o;27783:104::-;27839:13;27872:7;27865:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27783:104;:::o;49722:35::-;;;;;;;;;;;;;:::o;50197:666::-;50263:6;;;;;;;;;;;50262:7;50254:16;;;;;;50277:14;50294:13;:11;:13::i;:::-;50277:30;;50336:1;50322:11;:15;50314:24;;;;;;50368:13;;50353:11;:28;;50345:37;;;;;;50421:9;;50406:11;50397:6;:20;;;;:::i;:::-;:33;;50389:42;;;;;;50458:7;:5;:7::i;:::-;50444:21;;:10;:21;;;50440:317;;50499:4;50480:23;;:15;;;;;;;;;;;:23;;;50476:225;;;50524:25;50538:10;50524:13;:25::i;:::-;50516:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;50588:23;50614:21;50624:10;50614:9;:21::i;:::-;50588:47;;50672:18;;50654:15;:36;50646:45;;;;;;50476:225;;50737:11;50730:4;;:18;;;;:::i;:::-;50717:9;:31;;50709:40;;;;;;50440:317;50770:9;50782:1;50770:13;;50765:93;50790:11;50785:1;:16;50765:93;;50817:33;50827:10;50848:1;50839:6;:10;;;;:::i;:::-;50817:9;:33::i;:::-;50803:3;;;;;:::i;:::-;;;;50765:93;;;;50197:666;;:::o;29466:295::-;29581:12;:10;:12::i;:::-;29569:24;;:8;:24;;;;29561:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;29681:8;29636:18;:32;29655:12;:10;:12::i;:::-;29636:32;;;;;;;;;;;;;;;:42;29669:8;29636:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;29734:8;29705:48;;29720:12;:10;:12::i;:::-;29705:48;;;29744:8;29705:48;;;;;;:::i;:::-;;;;;;;;29466:295;;:::o;51982:63::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52035:4:::1;52024:8;;:15;;;;;;;;;;;;;;;;;;51982:63::o:0;30729:328::-;30904:41;30923:12;:10;:12::i;:::-;30937:7;30904:18;:41::i;:::-;30896:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;31010:39;31024:4;31030:2;31034:7;31043:5;31010:13;:39::i;:::-;30729:328;;;;:::o;49762:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;49406:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;53278:144::-;53360:7;53386:5;:15;;;53410:4;53386:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;53379:37;;53278:144;;;:::o;51469:491::-;51567:13;51608:16;51616:7;51608;:16::i;:::-;51592:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;51717:5;51705:17;;:8;;;;;;;;;;;:17;;;51702:60;;;51740:14;51733:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51702:60;51770:28;51801:10;:8;:10::i;:::-;51770:41;;51856:1;51831:14;51825:28;:32;:129;;;;;;;;;;;;;;;;;51891:14;51907:18;:7;:16;:18::i;:::-;51927:13;51874:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;51825:129;51818:136;;;51469:491;;;;:::o;49542:31::-;;;;:::o;52711:122::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52810:17:::1;52794:13;:33;;;;;;;;;;;;:::i;:::-;;52711:122:::0;:::o;29832:164::-;29929:4;29953:18;:25;29972:5;29953:25;;;;;;;;;;;;;;;:35;29979:8;29953:35;;;;;;;;;;;;;;;;;;;;;;;;;29946:42;;29832:164;;;;:::o;53024:144::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53106:20:::1;;53099:27;;;;:::i;:::-;53156:6;;53133:20;:29;;;;;;;:::i;:::-;;53024:144:::0;;:::o;52481:120::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52580:15:::1;52563:14;:32;;;;;;;;;;;;:::i;:::-;;52481:120:::0;:::o;4925:192::-;4256:12;:10;:12::i;:::-;4245:23;;:7;:5;:7::i;:::-;:23;;;4237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5034:1:::1;5014:22;;:8;:22;;;;5006:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5090:19;5100:8;5090:9;:19::i;:::-;4925:192:::0;:::o;26669:305::-;26771:4;26823:25;26808:40;;;:11;:40;;;;:105;;;;26880:33;26865:48;;;:11;:48;;;;26808:105;:158;;;;26930:36;26954:11;26930:23;:36::i;:::-;26808:158;26788:178;;26669:305;;;:::o;2813:98::-;2866:7;2893:10;2886:17;;2813:98;:::o;32567:127::-;32632:4;32684:1;32656:30;;:7;:16;32664:7;32656:16;;;;;;;;;;;;;;;;;;;;;:30;;;;32649:37;;32567:127;;;:::o;36549:174::-;36651:2;36624:15;:24;36640:7;36624:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;36707:7;36703:2;36669:46;;36678:23;36693:7;36678:14;:23::i;:::-;36669:46;;;;;;;;;;;;36549:174;;:::o;32861:348::-;32954:4;32979:16;32987:7;32979;:16::i;:::-;32971:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;33055:13;33071:23;33086:7;33071:14;:23::i;:::-;33055:39;;33124:5;33113:16;;:7;:16;;;:51;;;;33157:7;33133:31;;:20;33145:7;33133:11;:20::i;:::-;:31;;;33113:51;:87;;;;33168:32;33185:5;33192:7;33168:16;:32::i;:::-;33113:87;33105:96;;;32861:348;;;;:::o;35853:578::-;36012:4;35985:31;;:23;36000:7;35985:14;:23::i;:::-;:31;;;35977:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;36095:1;36081:16;;:2;:16;;;;36073:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;36151:39;36172:4;36178:2;36182:7;36151:20;:39::i;:::-;36255:29;36272:1;36276:7;36255:8;:29::i;:::-;36316:1;36297:9;:15;36307:4;36297:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;36345:1;36328:9;:13;36338:2;36328:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;36376:2;36357:7;:16;36365:7;36357:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;36415:7;36411:2;36396:27;;36405:4;36396:27;;;;;;;;;;;;35853:578;;;:::o;38851:211::-;38968:86;38988:5;39018:23;;;39043:2;39047:5;38995:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38968:19;:86::i;:::-;38851:211;;;:::o;5125:173::-;5181:16;5200:6;;;;;;;;;;;5181:25;;5226:8;5217:6;;:17;;;;;;;;;;;;;;;;;;5281:8;5250:40;;5271:8;5250:40;;;;;;;;;;;;5125:173;;:::o;33551:110::-;33627:26;33637:2;33641:7;33627:26;;;;;;;;;;;;:9;:26::i;:::-;33551:110;;:::o;31939:315::-;32096:28;32106:4;32112:2;32116:7;32096:9;:28::i;:::-;32143:48;32166:4;32172:2;32176:7;32185:5;32143:22;:48::i;:::-;32135:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;31939:315;;;;:::o;50076:102::-;50136:13;50165:7;50158:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50076:102;:::o;429:723::-;485:13;715:1;706:5;:10;702:53;;;733:10;;;;;;;;;;;;;;;;;;;;;702:53;765:12;780:5;765:20;;796:14;821:78;836:1;828:4;:9;821:78;;854:8;;;;;:::i;:::-;;;;885:2;877:10;;;;;:::i;:::-;;;821:78;;;909:19;941:6;931:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;909:39;;959:154;975:1;966:5;:10;959:154;;1003:1;993:11;;;;;:::i;:::-;;;1070:2;1062:5;:10;;;;:::i;:::-;1049:2;:24;;;;:::i;:::-;1036:39;;1019:6;1026;1019:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;1099:2;1090:11;;;;;:::i;:::-;;;959:154;;;1137:6;1123:21;;;;;429:723;;;;:::o;16011:157::-;16096:4;16135:25;16120:40;;;:11;:40;;;;16113:47;;16011:157;;;:::o;44753:589::-;44897:45;44924:4;44930:2;44934:7;44897:26;:45::i;:::-;44975:1;44959:18;;:4;:18;;;44955:187;;;44994:40;45026:7;44994:31;:40::i;:::-;44955:187;;;45064:2;45056:10;;:4;:10;;;45052:90;;45083:47;45116:4;45122:7;45083:32;:47::i;:::-;45052:90;44955:187;45170:1;45156:16;;:2;:16;;;45152:183;;;45189:45;45226:7;45189:36;:45::i;:::-;45152:183;;;45262:4;45256:10;;:2;:10;;;45252:83;;45283:40;45311:2;45315:7;45283:27;:40::i;:::-;45252:83;45152:183;44753:589;;;:::o;41424:716::-;41848:23;41874:69;41902:4;41874:69;;;;;;;;;;;;;;;;;41882:5;41874:27;;;;:69;;;;;:::i;:::-;41848:95;;41978:1;41958:10;:17;:21;41954:179;;;42055:10;42044:30;;;;;;;;;;;;:::i;:::-;42036:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;41954:179;41424:716;;;:::o;33888:321::-;34018:18;34024:2;34028:7;34018:5;:18::i;:::-;34069:54;34100:1;34104:2;34108:7;34117:5;34069:22;:54::i;:::-;34047:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;33888:321;;;:::o;37288:799::-;37443:4;37464:15;:2;:13;;;:15::i;:::-;37460:620;;;37516:2;37500:36;;;37537:12;:10;:12::i;:::-;37551:4;37557:7;37566:5;37500:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;37496:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37759:1;37742:6;:13;:18;37738:272;;;37785:60;;;;;;;;;;:::i;:::-;;;;;;;;37738:272;37960:6;37954:13;37945:6;37941:2;37937:15;37930:38;37496:529;37633:41;;;37623:51;;;:6;:51;;;;37616:58;;;;;37460:620;38064:4;38057:11;;37288:799;;;;;;;:::o;38659:126::-;;;;:::o;46065:164::-;46169:10;:17;;;;46142:15;:24;46158:7;46142:24;;;;;;;;;;;:44;;;;46197:10;46213:7;46197:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46065:164;:::o;46856:988::-;47122:22;47172:1;47147:22;47164:4;47147:16;:22::i;:::-;:26;;;;:::i;:::-;47122:51;;47184:18;47205:17;:26;47223:7;47205:26;;;;;;;;;;;;47184:47;;47352:14;47338:10;:28;47334:328;;47383:19;47405:12;:18;47418:4;47405:18;;;;;;;;;;;;;;;:34;47424:14;47405:34;;;;;;;;;;;;47383:56;;47489:11;47456:12;:18;47469:4;47456:18;;;;;;;;;;;;;;;:30;47475:10;47456:30;;;;;;;;;;;:44;;;;47606:10;47573:17;:30;47591:11;47573:30;;;;;;;;;;;:43;;;;47334:328;;47758:17;:26;47776:7;47758:26;;;;;;;;;;;47751:33;;;47802:12;:18;47815:4;47802:18;;;;;;;;;;;;;;;:34;47821:14;47802:34;;;;;;;;;;;47795:41;;;46856:988;;;;:::o;48139:1079::-;48392:22;48437:1;48417:10;:17;;;;:21;;;;:::i;:::-;48392:46;;48449:18;48470:15;:24;48486:7;48470:24;;;;;;;;;;;;48449:45;;48821:19;48843:10;48854:14;48843:26;;;;;;;;;;;;;;;;;;;;;;;;48821:48;;48907:11;48882:10;48893;48882:22;;;;;;;;;;;;;;;;;;;;;;;:36;;;;49018:10;48987:15;:28;49003:11;48987:28;;;;;;;;;;;:41;;;;49159:15;:24;49175:7;49159:24;;;;;;;;;;;49152:31;;;49194:10;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48139:1079;;;;:::o;45643:221::-;45728:14;45745:20;45762:2;45745:16;:20::i;:::-;45728:37;;45803:7;45776:12;:16;45789:2;45776:16;;;;;;;;;;;;;;;:24;45793:6;45776:24;;;;;;;;;;;:34;;;;45850:6;45821:17;:26;45839:7;45821:26;;;;;;;;;;;:35;;;;45643:221;;;:::o;8877:229::-;9014:12;9046:52;9068:6;9076:4;9082:1;9085:12;9046:21;:52::i;:::-;9039:59;;8877:229;;;;;:::o;34545:382::-;34639:1;34625:16;;:2;:16;;;;34617:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;34698:16;34706:7;34698;:16::i;:::-;34697:17;34689:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;34760:45;34789:1;34793:2;34797:7;34760:20;:45::i;:::-;34835:1;34818:9;:13;34828:2;34818:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;34866:2;34847:7;:16;34855:7;34847:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;34911:7;34907:2;34886:33;;34903:1;34886:33;;;;;;;;;;;;34545:382;;:::o;6071:387::-;6131:4;6339:12;6406:7;6394:20;6386:28;;6449:1;6442:4;:8;6435:15;;;6071:387;;;:::o;9997:510::-;10167:12;10225:5;10200:21;:30;;10192:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10292:18;10303:6;10292:10;:18::i;:::-;10284:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10358:12;10372:23;10399:6;:11;;10418:5;10425:4;10399:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10357:73;;;;10448:51;10465:7;10474:10;10486:12;10448:16;:51::i;:::-;10441:58;;;;9997:510;;;;;;:::o;12683:712::-;12833:12;12862:7;12858:530;;;12893:10;12886:17;;;;12858:530;13027:1;13007:10;:17;:21;13003:374;;;13205:10;13199:17;13266:15;13253:10;13249:2;13245:19;13238:44;13153:148;13348:12;13341:20;;;;;;;;;;;:::i;:::-;;;;;;;;12683:712;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:344::-;;458:65;473:49;515:6;473:49;:::i;:::-;458:65;:::i;:::-;449:74;;546:6;539:5;532:21;584:4;577:5;573:16;622:3;613:6;608:3;604:16;601:25;598:2;;;639:1;636;629:12;598:2;652:41;686:6;681:3;676;652:41;:::i;:::-;439:260;;;;;;:::o;705:139::-;;789:6;776:20;767:29;;805:33;832:5;805:33;:::i;:::-;757:87;;;;:::o;867:367::-;;;1000:3;993:4;985:6;981:17;977:27;967:2;;1018:1;1015;1008:12;967:2;1054:6;1041:20;1031:30;;1084:18;1076:6;1073:30;1070:2;;;1116:1;1113;1106:12;1070:2;1153:4;1145:6;1141:17;1129:29;;1207:3;1199:4;1191:6;1187:17;1177:8;1173:32;1170:41;1167:2;;;1224:1;1221;1214:12;1167:2;957:277;;;;;:::o;1240:133::-;;1321:6;1308:20;1299:29;;1337:30;1361:5;1337:30;:::i;:::-;1289:84;;;;:::o;1379:137::-;;1464:6;1458:13;1449:22;;1480:30;1504:5;1480:30;:::i;:::-;1439:77;;;;:::o;1522:137::-;;1605:6;1592:20;1583:29;;1621:32;1647:5;1621:32;:::i;:::-;1573:86;;;;:::o;1665:141::-;;1752:6;1746:13;1737:22;;1768:32;1794:5;1768:32;:::i;:::-;1727:79;;;;:::o;1825:271::-;;1929:3;1922:4;1914:6;1910:17;1906:27;1896:2;;1947:1;1944;1937:12;1896:2;1987:6;1974:20;2012:78;2086:3;2078:6;2071:4;2063:6;2059:17;2012:78;:::i;:::-;2003:87;;1886:210;;;;;:::o;2102:167::-;;2200:6;2187:20;2178:29;;2216:47;2257:5;2216:47;:::i;:::-;2168:101;;;;:::o;2289:273::-;;2394:3;2387:4;2379:6;2375:17;2371:27;2361:2;;2412:1;2409;2402:12;2361:2;2452:6;2439:20;2477:79;2552:3;2544:6;2537:4;2529:6;2525:17;2477:79;:::i;:::-;2468:88;;2351:211;;;;;:::o;2568:139::-;;2652:6;2639:20;2630:29;;2668:33;2695:5;2668:33;:::i;:::-;2620:87;;;;:::o;2713:143::-;;2801:6;2795:13;2786:22;;2817:33;2844:5;2817:33;:::i;:::-;2776:80;;;;:::o;2862:262::-;;2970:2;2958:9;2949:7;2945:23;2941:32;2938:2;;;2986:1;2983;2976:12;2938:2;3029:1;3054:53;3099:7;3090:6;3079:9;3075:22;3054:53;:::i;:::-;3044:63;;3000:117;2928:196;;;;:::o;3130:407::-;;;3255:2;3243:9;3234:7;3230:23;3226:32;3223:2;;;3271:1;3268;3261:12;3223:2;3314:1;3339:53;3384:7;3375:6;3364:9;3360:22;3339:53;:::i;:::-;3329:63;;3285:117;3441:2;3467:53;3512:7;3503:6;3492:9;3488:22;3467:53;:::i;:::-;3457:63;;3412:118;3213:324;;;;;:::o;3543:552::-;;;;3685:2;3673:9;3664:7;3660:23;3656:32;3653:2;;;3701:1;3698;3691:12;3653:2;3744:1;3769:53;3814:7;3805:6;3794:9;3790:22;3769:53;:::i;:::-;3759:63;;3715:117;3871:2;3897:53;3942:7;3933:6;3922:9;3918:22;3897:53;:::i;:::-;3887:63;;3842:118;3999:2;4025:53;4070:7;4061:6;4050:9;4046:22;4025:53;:::i;:::-;4015:63;;3970:118;3643:452;;;;;:::o;4101:809::-;;;;;4269:3;4257:9;4248:7;4244:23;4240:33;4237:2;;;4286:1;4283;4276:12;4237:2;4329:1;4354:53;4399:7;4390:6;4379:9;4375:22;4354:53;:::i;:::-;4344:63;;4300:117;4456:2;4482:53;4527:7;4518:6;4507:9;4503:22;4482:53;:::i;:::-;4472:63;;4427:118;4584:2;4610:53;4655:7;4646:6;4635:9;4631:22;4610:53;:::i;:::-;4600:63;;4555:118;4740:2;4729:9;4725:18;4712:32;4771:18;4763:6;4760:30;4757:2;;;4803:1;4800;4793:12;4757:2;4831:62;4885:7;4876:6;4865:9;4861:22;4831:62;:::i;:::-;4821:72;;4683:220;4227:683;;;;;;;:::o;4916:401::-;;;5038:2;5026:9;5017:7;5013:23;5009:32;5006:2;;;5054:1;5051;5044:12;5006:2;5097:1;5122:53;5167:7;5158:6;5147:9;5143:22;5122:53;:::i;:::-;5112:63;;5068:117;5224:2;5250:50;5292:7;5283:6;5272:9;5268:22;5250:50;:::i;:::-;5240:60;;5195:115;4996:321;;;;;:::o;5323:407::-;;;5448:2;5436:9;5427:7;5423:23;5419:32;5416:2;;;5464:1;5461;5454:12;5416:2;5507:1;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5478:117;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5406:324;;;;;:::o;5736:425::-;;;5879:2;5867:9;5858:7;5854:23;5850:32;5847:2;;;5895:1;5892;5885:12;5847:2;5966:1;5955:9;5951:17;5938:31;5996:18;5988:6;5985:30;5982:2;;;6028:1;6025;6018:12;5982:2;6064:80;6136:7;6127:6;6116:9;6112:22;6064:80;:::i;:::-;6046:98;;;;5909:245;5837:324;;;;;:::o;6167:256::-;;6272:2;6260:9;6251:7;6247:23;6243:32;6240:2;;;6288:1;6285;6278:12;6240:2;6331:1;6356:50;6398:7;6389:6;6378:9;6374:22;6356:50;:::i;:::-;6346:60;;6302:114;6230:193;;;;:::o;6429:278::-;;6545:2;6533:9;6524:7;6520:23;6516:32;6513:2;;;6561:1;6558;6551:12;6513:2;6604:1;6629:61;6682:7;6673:6;6662:9;6658:22;6629:61;:::i;:::-;6619:71;;6575:125;6503:204;;;;:::o;6713:260::-;;6820:2;6808:9;6799:7;6795:23;6791:32;6788:2;;;6836:1;6833;6826:12;6788:2;6879:1;6904:52;6948:7;6939:6;6928:9;6924:22;6904:52;:::i;:::-;6894:62;;6850:116;6778:195;;;;:::o;6979:282::-;;7097:2;7085:9;7076:7;7072:23;7068:32;7065:2;;;7113:1;7110;7103:12;7065:2;7156:1;7181:63;7236:7;7227:6;7216:9;7212:22;7181:63;:::i;:::-;7171:73;;7127:127;7055:206;;;;:::o;7267:290::-;;7389:2;7377:9;7368:7;7364:23;7360:32;7357:2;;;7405:1;7402;7395:12;7357:2;7448:1;7473:67;7532:7;7523:6;7512:9;7508:22;7473:67;:::i;:::-;7463:77;;7419:131;7347:210;;;;:::o;7563:375::-;;7681:2;7669:9;7660:7;7656:23;7652:32;7649:2;;;7697:1;7694;7687:12;7649:2;7768:1;7757:9;7753:17;7740:31;7798:18;7790:6;7787:30;7784:2;;;7830:1;7827;7820:12;7784:2;7858:63;7913:7;7904:6;7893:9;7889:22;7858:63;:::i;:::-;7848:73;;7711:220;7639:299;;;;:::o;7944:262::-;;8052:2;8040:9;8031:7;8027:23;8023:32;8020:2;;;8068:1;8065;8058:12;8020:2;8111:1;8136:53;8181:7;8172:6;8161:9;8157:22;8136:53;:::i;:::-;8126:63;;8082:117;8010:196;;;;:::o;8212:284::-;;8331:2;8319:9;8310:7;8306:23;8302:32;8299:2;;;8347:1;8344;8337:12;8299:2;8390:1;8415:64;8471:7;8462:6;8451:9;8447:22;8415:64;:::i;:::-;8405:74;;8361:128;8289:207;;;;:::o;8502:179::-;;8592:46;8634:3;8626:6;8592:46;:::i;:::-;8670:4;8665:3;8661:14;8647:28;;8582:99;;;;:::o;8687:118::-;8774:24;8792:5;8774:24;:::i;:::-;8769:3;8762:37;8752:53;;:::o;8841:732::-;;8989:54;9037:5;8989:54;:::i;:::-;9059:86;9138:6;9133:3;9059:86;:::i;:::-;9052:93;;9169:56;9219:5;9169:56;:::i;:::-;9248:7;9279:1;9264:284;9289:6;9286:1;9283:13;9264:284;;;9365:6;9359:13;9392:63;9451:3;9436:13;9392:63;:::i;:::-;9385:70;;9478:60;9531:6;9478:60;:::i;:::-;9468:70;;9324:224;9311:1;9308;9304:9;9299:14;;9264:284;;;9268:14;9564:3;9557:10;;8965:608;;;;;;;:::o;9579:109::-;9660:21;9675:5;9660:21;:::i;:::-;9655:3;9648:34;9638:50;;:::o;9694:360::-;;9808:38;9840:5;9808:38;:::i;:::-;9862:70;9925:6;9920:3;9862:70;:::i;:::-;9855:77;;9941:52;9986:6;9981:3;9974:4;9967:5;9963:16;9941:52;:::i;:::-;10018:29;10040:6;10018:29;:::i;:::-;10013:3;10009:39;10002:46;;9784:270;;;;;:::o;10060:373::-;;10192:38;10224:5;10192:38;:::i;:::-;10246:88;10327:6;10322:3;10246:88;:::i;:::-;10239:95;;10343:52;10388:6;10383:3;10376:4;10369:5;10365:16;10343:52;:::i;:::-;10420:6;10415:3;10411:16;10404:23;;10168:265;;;;;:::o;10439:364::-;;10555:39;10588:5;10555:39;:::i;:::-;10610:71;10674:6;10669:3;10610:71;:::i;:::-;10603:78;;10690:52;10735:6;10730:3;10723:4;10716:5;10712:16;10690:52;:::i;:::-;10767:29;10789:6;10767:29;:::i;:::-;10762:3;10758:39;10751:46;;10531:272;;;;;:::o;10809:377::-;;10943:39;10976:5;10943:39;:::i;:::-;10998:89;11080:6;11075:3;10998:89;:::i;:::-;10991:96;;11096:52;11141:6;11136:3;11129:4;11122:5;11118:16;11096:52;:::i;:::-;11173:6;11168:3;11164:16;11157:23;;10919:267;;;;;:::o;11216:845::-;;11356:5;11350:12;11385:36;11411:9;11385:36;:::i;:::-;11437:89;11519:6;11514:3;11437:89;:::i;:::-;11430:96;;11557:1;11546:9;11542:17;11573:1;11568:137;;;;11719:1;11714:341;;;;11535:520;;11568:137;11652:4;11648:9;11637;11633:25;11628:3;11621:38;11688:6;11683:3;11679:16;11672:23;;11568:137;;11714:341;11781:38;11813:5;11781:38;:::i;:::-;11841:1;11855:154;11869:6;11866:1;11863:13;11855:154;;;11943:7;11937:14;11933:1;11928:3;11924:11;11917:35;11993:1;11984:7;11980:15;11969:26;;11891:4;11888:1;11884:12;11879:17;;11855:154;;;12038:6;12033:3;12029:16;12022:23;;11721:334;;11535:520;;11323:738;;;;;;:::o;12067:375::-;;12230:67;12294:2;12289:3;12230:67;:::i;:::-;12223:74;;12327:34;12323:1;12318:3;12314:11;12307:55;12393:13;12388:2;12383:3;12379:12;12372:35;12433:2;12428:3;12424:12;12417:19;;12213:229;;;:::o;12448:382::-;;12611:67;12675:2;12670:3;12611:67;:::i;:::-;12604:74;;12708:34;12704:1;12699:3;12695:11;12688:55;12774:20;12769:2;12764:3;12760:12;12753:42;12821:2;12816:3;12812:12;12805:19;;12594:236;;;:::o;12836:370::-;;12999:67;13063:2;13058:3;12999:67;:::i;:::-;12992:74;;13096:34;13092:1;13087:3;13083:11;13076:55;13162:8;13157:2;13152:3;13148:12;13141:30;13197:2;13192:3;13188:12;13181:19;;12982:224;;;:::o;13212:326::-;;13375:67;13439:2;13434:3;13375:67;:::i;:::-;13368:74;;13472:30;13468:1;13463:3;13459:11;13452:51;13529:2;13524:3;13520:12;13513:19;;13358:180;;;:::o;13544:368::-;;13707:67;13771:2;13766:3;13707:67;:::i;:::-;13700:74;;13804:34;13800:1;13795:3;13791:11;13784:55;13870:6;13865:2;13860:3;13856:12;13849:28;13903:2;13898:3;13894:12;13887:19;;13690:222;;;:::o;13918:323::-;;14081:67;14145:2;14140:3;14081:67;:::i;:::-;14074:74;;14178:27;14174:1;14169:3;14165:11;14158:48;14232:2;14227:3;14223:12;14216:19;;14064:177;;;:::o;14247:370::-;;14410:67;14474:2;14469:3;14410:67;:::i;:::-;14403:74;;14507:34;14503:1;14498:3;14494:11;14487:55;14573:8;14568:2;14563:3;14559:12;14552:30;14608:2;14603:3;14599:12;14592:19;;14393:224;;;:::o;14623:376::-;;14786:67;14850:2;14845:3;14786:67;:::i;:::-;14779:74;;14883:34;14879:1;14874:3;14870:11;14863:55;14949:14;14944:2;14939:3;14935:12;14928:36;14990:2;14985:3;14981:12;14974:19;;14769:230;;;:::o;15005:321::-;;15168:67;15232:2;15227:3;15168:67;:::i;:::-;15161:74;;15265:25;15261:1;15256:3;15252:11;15245:46;15317:2;15312:3;15308:12;15301:19;;15151:175;;;:::o;15332:388::-;;15495:67;15559:2;15554:3;15495:67;:::i;:::-;15488:74;;15592:34;15588:1;15583:3;15579:11;15572:55;15658:26;15653:2;15648:3;15644:12;15637:48;15711:2;15706:3;15702:12;15695:19;;15478:242;;;:::o;15726:374::-;;15889:67;15953:2;15948:3;15889:67;:::i;:::-;15882:74;;15986:34;15982:1;15977:3;15973:11;15966:55;16052:12;16047:2;16042:3;16038:12;16031:34;16091:2;16086:3;16082:12;16075:19;;15872:228;;;:::o;16106:373::-;;16269:67;16333:2;16328:3;16269:67;:::i;:::-;16262:74;;16366:34;16362:1;16357:3;16353:11;16346:55;16432:11;16427:2;16422:3;16418:12;16411:33;16470:2;16465:3;16461:12;16454:19;;16252:227;;;:::o;16485:330::-;;16648:67;16712:2;16707:3;16648:67;:::i;:::-;16641:74;;16745:34;16741:1;16736:3;16732:11;16725:55;16806:2;16801:3;16797:12;16790:19;;16631:184;;;:::o;16821:330::-;;16984:67;17048:2;17043:3;16984:67;:::i;:::-;16977:74;;17081:34;17077:1;17072:3;17068:11;17061:55;17142:2;17137:3;17133:12;17126:19;;16967:184;;;:::o;17157:376::-;;17320:67;17384:2;17379:3;17320:67;:::i;:::-;17313:74;;17417:34;17413:1;17408:3;17404:11;17397:55;17483:14;17478:2;17473:3;17469:12;17462:36;17524:2;17519:3;17515:12;17508:19;;17303:230;;;:::o;17539:330::-;;17702:67;17766:2;17761:3;17702:67;:::i;:::-;17695:74;;17799:34;17795:1;17790:3;17786:11;17779:55;17860:2;17855:3;17851:12;17844:19;;17685:184;;;:::o;17875:373::-;;18038:67;18102:2;18097:3;18038:67;:::i;:::-;18031:74;;18135:34;18131:1;18126:3;18122:11;18115:55;18201:11;18196:2;18191:3;18187:12;18180:33;18239:2;18234:3;18230:12;18223:19;;18021:227;;;:::o;18254:379::-;;18417:67;18481:2;18476:3;18417:67;:::i;:::-;18410:74;;18514:34;18510:1;18505:3;18501:11;18494:55;18580:17;18575:2;18570:3;18566:12;18559:39;18624:2;18619:3;18615:12;18608:19;;18400:233;;;:::o;18639:365::-;;18802:67;18866:2;18861:3;18802:67;:::i;:::-;18795:74;;18899:34;18895:1;18890:3;18886:11;18879:55;18965:3;18960:2;18955:3;18951:12;18944:25;18995:2;18990:3;18986:12;18979:19;;18785:219;;;:::o;19010:381::-;;19173:67;19237:2;19232:3;19173:67;:::i;:::-;19166:74;;19270:34;19266:1;19261:3;19257:11;19250:55;19336:19;19331:2;19326:3;19322:12;19315:41;19382:2;19377:3;19373:12;19366:19;;19156:235;;;:::o;19397:327::-;;19560:67;19624:2;19619:3;19560:67;:::i;:::-;19553:74;;19657:31;19653:1;19648:3;19644:11;19637:52;19715:2;19710:3;19706:12;19699:19;;19543:181;;;:::o;19730:376::-;;19893:67;19957:2;19952:3;19893:67;:::i;:::-;19886:74;;19990:34;19986:1;19981:3;19977:11;19970:55;20056:14;20051:2;20046:3;20042:12;20035:36;20097:2;20092:3;20088:12;20081:19;;19876:230;;;:::o;20112:374::-;;20275:67;20339:2;20334:3;20275:67;:::i;:::-;20268:74;;20372:34;20368:1;20363:3;20359:11;20352:55;20438:12;20433:2;20428:3;20424:12;20417:34;20477:2;20472:3;20468:12;20461:19;;20258:228;;;:::o;20492:321::-;;20655:67;20719:2;20714:3;20655:67;:::i;:::-;20648:74;;20752:25;20748:1;20743:3;20739:11;20732:46;20804:2;20799:3;20795:12;20788:19;;20638:175;;;:::o;20819:108::-;20896:24;20914:5;20896:24;:::i;:::-;20891:3;20884:37;20874:53;;:::o;20933:118::-;21020:24;21038:5;21020:24;:::i;:::-;21015:3;21008:37;20998:53;;:::o;21057:271::-;;21209:93;21298:3;21289:6;21209:93;:::i;:::-;21202:100;;21319:3;21312:10;;21191:137;;;;:::o;21334:589::-;;21581:95;21672:3;21663:6;21581:95;:::i;:::-;21574:102;;21693:95;21784:3;21775:6;21693:95;:::i;:::-;21686:102;;21805:92;21893:3;21884:6;21805:92;:::i;:::-;21798:99;;21914:3;21907:10;;21563:360;;;;;;:::o;21929:222::-;;22060:2;22049:9;22045:18;22037:26;;22073:71;22141:1;22130:9;22126:17;22117:6;22073:71;:::i;:::-;22027:124;;;;:::o;22157:640::-;;22390:3;22379:9;22375:19;22367:27;;22404:71;22472:1;22461:9;22457:17;22448:6;22404:71;:::i;:::-;22485:72;22553:2;22542:9;22538:18;22529:6;22485:72;:::i;:::-;22567;22635:2;22624:9;22620:18;22611:6;22567:72;:::i;:::-;22686:9;22680:4;22676:20;22671:2;22660:9;22656:18;22649:48;22714:76;22785:4;22776:6;22714:76;:::i;:::-;22706:84;;22357:440;;;;;;;:::o;22803:332::-;;22962:2;22951:9;22947:18;22939:26;;22975:71;23043:1;23032:9;23028:17;23019:6;22975:71;:::i;:::-;23056:72;23124:2;23113:9;23109:18;23100:6;23056:72;:::i;:::-;22929:206;;;;;:::o;23141:373::-;;23322:2;23311:9;23307:18;23299:26;;23371:9;23365:4;23361:20;23357:1;23346:9;23342:17;23335:47;23399:108;23502:4;23493:6;23399:108;:::i;:::-;23391:116;;23289:225;;;;:::o;23520:210::-;;23645:2;23634:9;23630:18;23622:26;;23658:65;23720:1;23709:9;23705:17;23696:6;23658:65;:::i;:::-;23612:118;;;;:::o;23736:313::-;;23887:2;23876:9;23872:18;23864:26;;23936:9;23930:4;23926:20;23922:1;23911:9;23907:17;23900:47;23964:78;24037:4;24028:6;23964:78;:::i;:::-;23956:86;;23854:195;;;;:::o;24055:419::-;;24259:2;24248:9;24244:18;24236:26;;24308:9;24302:4;24298:20;24294:1;24283:9;24279:17;24272:47;24336:131;24462:4;24336:131;:::i;:::-;24328:139;;24226:248;;;:::o;24480:419::-;;24684:2;24673:9;24669:18;24661:26;;24733:9;24727:4;24723:20;24719:1;24708:9;24704:17;24697:47;24761:131;24887:4;24761:131;:::i;:::-;24753:139;;24651:248;;;:::o;24905:419::-;;25109:2;25098:9;25094:18;25086:26;;25158:9;25152:4;25148:20;25144:1;25133:9;25129:17;25122:47;25186:131;25312:4;25186:131;:::i;:::-;25178:139;;25076:248;;;:::o;25330:419::-;;25534:2;25523:9;25519:18;25511:26;;25583:9;25577:4;25573:20;25569:1;25558:9;25554:17;25547:47;25611:131;25737:4;25611:131;:::i;:::-;25603:139;;25501:248;;;:::o;25755:419::-;;25959:2;25948:9;25944:18;25936:26;;26008:9;26002:4;25998:20;25994:1;25983:9;25979:17;25972:47;26036:131;26162:4;26036:131;:::i;:::-;26028:139;;25926:248;;;:::o;26180:419::-;;26384:2;26373:9;26369:18;26361:26;;26433:9;26427:4;26423:20;26419:1;26408:9;26404:17;26397:47;26461:131;26587:4;26461:131;:::i;:::-;26453:139;;26351:248;;;:::o;26605:419::-;;26809:2;26798:9;26794:18;26786:26;;26858:9;26852:4;26848:20;26844:1;26833:9;26829:17;26822:47;26886:131;27012:4;26886:131;:::i;:::-;26878:139;;26776:248;;;:::o;27030:419::-;;27234:2;27223:9;27219:18;27211:26;;27283:9;27277:4;27273:20;27269:1;27258:9;27254:17;27247:47;27311:131;27437:4;27311:131;:::i;:::-;27303:139;;27201:248;;;:::o;27455:419::-;;27659:2;27648:9;27644:18;27636:26;;27708:9;27702:4;27698:20;27694:1;27683:9;27679:17;27672:47;27736:131;27862:4;27736:131;:::i;:::-;27728:139;;27626:248;;;:::o;27880:419::-;;28084:2;28073:9;28069:18;28061:26;;28133:9;28127:4;28123:20;28119:1;28108:9;28104:17;28097:47;28161:131;28287:4;28161:131;:::i;:::-;28153:139;;28051:248;;;:::o;28305:419::-;;28509:2;28498:9;28494:18;28486:26;;28558:9;28552:4;28548:20;28544:1;28533:9;28529:17;28522:47;28586:131;28712:4;28586:131;:::i;:::-;28578:139;;28476:248;;;:::o;28730:419::-;;28934:2;28923:9;28919:18;28911:26;;28983:9;28977:4;28973:20;28969:1;28958:9;28954:17;28947:47;29011:131;29137:4;29011:131;:::i;:::-;29003:139;;28901:248;;;:::o;29155:419::-;;29359:2;29348:9;29344:18;29336:26;;29408:9;29402:4;29398:20;29394:1;29383:9;29379:17;29372:47;29436:131;29562:4;29436:131;:::i;:::-;29428:139;;29326:248;;;:::o;29580:419::-;;29784:2;29773:9;29769:18;29761:26;;29833:9;29827:4;29823:20;29819:1;29808:9;29804:17;29797:47;29861:131;29987:4;29861:131;:::i;:::-;29853:139;;29751:248;;;:::o;30005:419::-;;30209:2;30198:9;30194:18;30186:26;;30258:9;30252:4;30248:20;30244:1;30233:9;30229:17;30222:47;30286:131;30412:4;30286:131;:::i;:::-;30278:139;;30176:248;;;:::o;30430:419::-;;30634:2;30623:9;30619:18;30611:26;;30683:9;30677:4;30673:20;30669:1;30658:9;30654:17;30647:47;30711:131;30837:4;30711:131;:::i;:::-;30703:139;;30601:248;;;:::o;30855:419::-;;31059:2;31048:9;31044:18;31036:26;;31108:9;31102:4;31098:20;31094:1;31083:9;31079:17;31072:47;31136:131;31262:4;31136:131;:::i;:::-;31128:139;;31026:248;;;:::o;31280:419::-;;31484:2;31473:9;31469:18;31461:26;;31533:9;31527:4;31523:20;31519:1;31508:9;31504:17;31497:47;31561:131;31687:4;31561:131;:::i;:::-;31553:139;;31451:248;;;:::o;31705:419::-;;31909:2;31898:9;31894:18;31886:26;;31958:9;31952:4;31948:20;31944:1;31933:9;31929:17;31922:47;31986:131;32112:4;31986:131;:::i;:::-;31978:139;;31876:248;;;:::o;32130:419::-;;32334:2;32323:9;32319:18;32311:26;;32383:9;32377:4;32373:20;32369:1;32358:9;32354:17;32347:47;32411:131;32537:4;32411:131;:::i;:::-;32403:139;;32301:248;;;:::o;32555:419::-;;32759:2;32748:9;32744:18;32736:26;;32808:9;32802:4;32798:20;32794:1;32783:9;32779:17;32772:47;32836:131;32962:4;32836:131;:::i;:::-;32828:139;;32726:248;;;:::o;32980:419::-;;33184:2;33173:9;33169:18;33161:26;;33233:9;33227:4;33223:20;33219:1;33208:9;33204:17;33197:47;33261:131;33387:4;33261:131;:::i;:::-;33253:139;;33151:248;;;:::o;33405:419::-;;33609:2;33598:9;33594:18;33586:26;;33658:9;33652:4;33648:20;33644:1;33633:9;33629:17;33622:47;33686:131;33812:4;33686:131;:::i;:::-;33678:139;;33576:248;;;:::o;33830:419::-;;34034:2;34023:9;34019:18;34011:26;;34083:9;34077:4;34073:20;34069:1;34058:9;34054:17;34047:47;34111:131;34237:4;34111:131;:::i;:::-;34103:139;;34001:248;;;:::o;34255:222::-;;34386:2;34375:9;34371:18;34363:26;;34399:71;34467:1;34456:9;34452:17;34443:6;34399:71;:::i;:::-;34353:124;;;;:::o;34483:283::-;;34549:2;34543:9;34533:19;;34591:4;34583:6;34579:17;34698:6;34686:10;34683:22;34662:18;34650:10;34647:34;34644:62;34641:2;;;34709:18;;:::i;:::-;34641:2;34749:10;34745:2;34738:22;34523:243;;;;:::o;34772:331::-;;34923:18;34915:6;34912:30;34909:2;;;34945:18;;:::i;:::-;34909:2;35030:4;35026:9;35019:4;35011:6;35007:17;35003:33;34995:41;;35091:4;35085;35081:15;35073:23;;34838:265;;;:::o;35109:332::-;;35261:18;35253:6;35250:30;35247:2;;;35283:18;;:::i;:::-;35247:2;35368:4;35364:9;35357:4;35349:6;35345:17;35341:33;35333:41;;35429:4;35423;35419:15;35411:23;;35176:265;;;:::o;35447:132::-;;35537:3;35529:11;;35567:4;35562:3;35558:14;35550:22;;35519:60;;;:::o;35585:141::-;;35657:3;35649:11;;35680:3;35677:1;35670:14;35714:4;35711:1;35701:18;35693:26;;35639:87;;;:::o;35732:114::-;;35833:5;35827:12;35817:22;;35806:40;;;:::o;35852:98::-;;35937:5;35931:12;35921:22;;35910:40;;;:::o;35956:99::-;;36042:5;36036:12;36026:22;;36015:40;;;:::o;36061:113::-;;36163:4;36158:3;36154:14;36146:22;;36136:38;;;:::o;36180:184::-;;36313:6;36308:3;36301:19;36353:4;36348:3;36344:14;36329:29;;36291:73;;;;:::o;36370:168::-;;36487:6;36482:3;36475:19;36527:4;36522:3;36518:14;36503:29;;36465:73;;;;:::o;36544:147::-;;36682:3;36667:18;;36657:34;;;;:::o;36697:169::-;;36815:6;36810:3;36803:19;36855:4;36850:3;36846:14;36831:29;;36793:73;;;;:::o;36872:148::-;;37011:3;36996:18;;36986:34;;;;:::o;37026:305::-;;37085:20;37103:1;37085:20;:::i;:::-;37080:25;;37119:20;37137:1;37119:20;:::i;:::-;37114:25;;37273:1;37205:66;37201:74;37198:1;37195:81;37192:2;;;37279:18;;:::i;:::-;37192:2;37323:1;37320;37316:9;37309:16;;37070:261;;;;:::o;37337:185::-;;37394:20;37412:1;37394:20;:::i;:::-;37389:25;;37428:20;37446:1;37428:20;:::i;:::-;37423:25;;37467:1;37457:2;;37472:18;;:::i;:::-;37457:2;37514:1;37511;37507:9;37502:14;;37379:143;;;;:::o;37528:348::-;;37591:20;37609:1;37591:20;:::i;:::-;37586:25;;37625:20;37643:1;37625:20;:::i;:::-;37620:25;;37813:1;37745:66;37741:74;37738:1;37735:81;37730:1;37723:9;37716:17;37712:105;37709:2;;;37820:18;;:::i;:::-;37709:2;37868:1;37865;37861:9;37850:20;;37576:300;;;;:::o;37882:191::-;;37942:20;37960:1;37942:20;:::i;:::-;37937:25;;37976:20;37994:1;37976:20;:::i;:::-;37971:25;;38015:1;38012;38009:8;38006:2;;;38020:18;;:::i;:::-;38006:2;38065:1;38062;38058:9;38050:17;;37927:146;;;;:::o;38079:96::-;;38145:24;38163:5;38145:24;:::i;:::-;38134:35;;38124:51;;;:::o;38181:90::-;;38258:5;38251:13;38244:21;38233:32;;38223:48;;;:::o;38277:149::-;;38353:66;38346:5;38342:78;38331:89;;38321:105;;;:::o;38432:110::-;;38512:24;38530:5;38512:24;:::i;:::-;38501:35;;38491:51;;;:::o;38548:126::-;;38625:42;38618:5;38614:54;38603:65;;38593:81;;;:::o;38680:77::-;;38746:5;38735:16;;38725:32;;;:::o;38763:154::-;38847:6;38842:3;38837;38824:30;38909:1;38900:6;38895:3;38891:16;38884:27;38814:103;;;:::o;38923:307::-;38991:1;39001:113;39015:6;39012:1;39009:13;39001:113;;;39100:1;39095:3;39091:11;39085:18;39081:1;39076:3;39072:11;39065:39;39037:2;39034:1;39030:10;39025:15;;39001:113;;;39132:6;39129:1;39126:13;39123:2;;;39212:1;39203:6;39198:3;39194:16;39187:27;39123:2;38972:258;;;;:::o;39236:320::-;;39317:1;39311:4;39307:12;39297:22;;39364:1;39358:4;39354:12;39385:18;39375:2;;39441:4;39433:6;39429:17;39419:27;;39375:2;39503;39495:6;39492:14;39472:18;39469:38;39466:2;;;39522:18;;:::i;:::-;39466:2;39287:269;;;;:::o;39562:233::-;;39624:24;39642:5;39624:24;:::i;:::-;39615:33;;39670:66;39663:5;39660:77;39657:2;;;39740:18;;:::i;:::-;39657:2;39787:1;39780:5;39776:13;39769:20;;39605:190;;;:::o;39801:176::-;;39850:20;39868:1;39850:20;:::i;:::-;39845:25;;39884:20;39902:1;39884:20;:::i;:::-;39879:25;;39923:1;39913:2;;39928:18;;:::i;:::-;39913:2;39969:1;39966;39962:9;39957:14;;39835:142;;;;:::o;39983:180::-;40031:77;40028:1;40021:88;40128:4;40125:1;40118:15;40152:4;40149:1;40142:15;40169:180;40217:77;40214:1;40207:88;40314:4;40311:1;40304:15;40338:4;40335:1;40328:15;40355:180;40403:77;40400:1;40393:88;40500:4;40497:1;40490:15;40524:4;40521:1;40514:15;40541:180;40589:77;40586:1;40579:88;40686:4;40683:1;40676:15;40710:4;40707:1;40700:15;40727:102;;40819:2;40815:7;40810:2;40803:5;40799:14;40795:28;40785:38;;40775:54;;;:::o;40835:122::-;40908:24;40926:5;40908:24;:::i;:::-;40901:5;40898:35;40888:2;;40947:1;40944;40937:12;40888:2;40878:79;:::o;40963:116::-;41033:21;41048:5;41033:21;:::i;:::-;41026:5;41023:32;41013:2;;41069:1;41066;41059:12;41013:2;41003:76;:::o;41085:120::-;41157:23;41174:5;41157:23;:::i;:::-;41150:5;41147:34;41137:2;;41195:1;41192;41185:12;41137:2;41127:78;:::o;41211:150::-;41298:38;41330:5;41298:38;:::i;:::-;41291:5;41288:49;41278:2;;41351:1;41348;41341:12;41278:2;41268:93;:::o;41367:122::-;41440:24;41458:5;41440:24;:::i;:::-;41433:5;41430:35;41420:2;;41479:1;41476;41469:12;41420:2;41410:79;:::o
Swarm Source
ipfs://41b5b2560d4107c6fe9258c0b252c91b1e60e17f22d0528b9980e6a85a4acb5d
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.