Contract Overview
Balance:
34.607883625631065531 MATIC
MATIC Value:
$38.21 (@ $1.10/MATIC)
[ Download CSV Export ]
Latest 3 internal transactions
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xfd5f30f8a679ec847701346f035223ebf1b8d0ad8db7dec01575c9f3ef9eb898 | 37939274 | 74 days 1 hr ago | 0x4554d44e307fef9739c5f4bf23f97f9e71f73953 | 0xad4c6147d83766d6263ff77a598ba7ec140d0c97 | 0.000000000009930037 MATIC | ||
0x70e37023ced5d6f8411e34d25f9d3f8a76a38eeadb9ed0863b3dec6dcb42a351 | 37911698 | 74 days 17 hrs ago | 0x4554d44e307fef9739c5f4bf23f97f9e71f73953 | 0xad4c6147d83766d6263ff77a598ba7ec140d0c97 | 0.000000000009930036 MATIC | ||
0x1a9fa6fbb0ffda84db7118f7a09a287ab12ec1bfceda1b350da4ccb823fd2df7 | 36741829 | 103 days 22 hrs ago | 0x4554d44e307fef9739c5f4bf23f97f9e71f73953 | 0x84f33e797364bdfc4511bf5ab35b0372aa96ba69 | 0.000000000009931514 MATIC |
[ Download CSV Export ]
Contract Name:
SendStar
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-12-11 */ // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @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); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts (last updated v4.6.0) (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 `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * 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; /** * @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 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 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 the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol // OpenZeppelin Contracts (last updated v4.5.0) (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); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.7.0) (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: address zero is not a valid owner"); 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: invalid token ID"); 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) { _requireMinted(tokenId); 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 overridden 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 token owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { _requireMinted(tokenId); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token 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: caller is not token 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) { address owner = ERC721.ownerOf(tokenId); return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == 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); _afterTokenTransfer(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); _afterTokenTransfer(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 from incorrect owner"); 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); _afterTokenTransfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits an {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits an {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Reverts if the `tokenId` has not been minted yet. */ function _requireMinted(uint256 tokenId) internal view virtual { require(_exists(tokenId), "ERC721: invalid token ID"); } /** * @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 { /// @solidity memory-safe-assembly 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 {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // File: NftContract.sol pragma solidity ^0.8.6; interface IERC20 { function totalSupply() external view returns (uint _totalSupply); function balanceOf(address _owner) external view returns (uint balance); function transfer(address _to, uint _value) external returns (bool success); function transferFrom(address _from, address _to, uint _value) external returns (bool success); function approve(address _spender, uint _value) external returns (bool success); function allowance(address _owner, address _spender) external view returns (uint remaining); event Transfer(address indexed _from, address indexed _to, uint _value); event Approval(address indexed _owner, address indexed _spender, uint _value); } interface IRouter { function WETH() external pure returns (address); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); } contract SendStar is ERC721, ERC721Enumerable, Ownable { bool public saleIsActive = false; bool public isAllowListActive = false; string private _baseURIextended; uint256 public MAX_SUPPLY = 1000; uint256 public MAX_WL_SUPPLY = 50; uint256 public MAX_TX_MINT = 5; uint256 public MAX_PER_WALLET = 5; uint256 public PRICE_PER_TOKEN_PUBLIC_SALE = 0.03 ether; uint256 public PRICE_PER_TOKEN_PRE_SALE = 0.4 ether; address public buyToken; address public receptorWallet; address public routerAddress; mapping(address => bool) private _allowList; mapping(uint => uint) public priceCategories; mapping(uint => uint) public qtyCategories; event Mint(address indexed minter, uint256 categoryId, uint256 numberOfTokens); constructor(address _buyToken, address _receptorWallet, address _routerAddress) ERC721("SendStart NFT", "SendStar") { buyToken = _buyToken; receptorWallet = _receptorWallet; routerAddress = _routerAddress; priceCategories[0] = 100000000000000000; // TEST qtyCategories[0] = 999; // Test } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal override(ERC721, ERC721Enumerable) { super._beforeTokenTransfer(from, to, tokenId); } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, ERC721Enumerable) returns (bool) { return super.supportsInterface(interfaceId); } function setBaseURI(string memory baseURI_) external onlyOwner() { _baseURIextended = baseURI_; } function _baseURI() internal view virtual override returns (string memory) { return _baseURIextended; } function reserve(uint256 n) public onlyOwner { uint supply = totalSupply(); uint i; for (i = 0; i < n; i++) { _safeMint(msg.sender, supply + i); } } function setSaleState(bool newState) public onlyOwner { saleIsActive = newState; } function setPrices(uint256 pPublic, uint256 pPresale) public onlyOwner { require(pPublic >= 0 && pPresale >= 0, "Prices should be higher or equal than zero."); PRICE_PER_TOKEN_PUBLIC_SALE = pPublic; PRICE_PER_TOKEN_PRE_SALE = pPresale; } function setLimit(uint256 mTx) public onlyOwner { require(mTx >= 0, "MAX_TX_MINT should be higher or equal than zero."); MAX_TX_MINT = mTx; } function getPrice(uint _value) public view returns (uint) { address weth = IRouter(routerAddress).WETH(); address[] memory path = new address[](2); path[0] = weth; path[1] = buyToken; uint amount = IRouter(routerAddress).getAmountsOut(_value, path)[1]; return amount; } function mint(uint numberOfTokens, uint categoryId, bool payWithToken) public payable { uint256 ts = totalSupply(); require(saleIsActive, "La venta aun no esta activa"); require(numberOfTokens <= MAX_TX_MINT, "Excede el numero de compras por tx"); require(ts + numberOfTokens <= MAX_SUPPLY, "No hay tantos en stock"); require(balanceOf(msg.sender) + numberOfTokens <= MAX_PER_WALLET, "Excede el numero de compras por wallet"); require(qtyCategories[categoryId] >= numberOfTokens, "No hay tantos en stock de esa categoria"); if (payWithToken) { require(priceCategories[categoryId] * numberOfTokens <= IERC20(buyToken).balanceOf(msg.sender), "No tienes suficientes tokens"); uint tokensToSend = priceCategories[categoryId] * numberOfTokens; bool sent = IERC20(buyToken).transferFrom(msg.sender, receptorWallet, tokensToSend); require(sent, "No se pudieron enviar tokens a la wallet receptora"); } else { uint amount = getPrice(msg.value); uint amountCommission = amount * 105; // Esto es fino, pero el router, te quita 3% de comision, entonces tengo que sumarselo para hacer el chequero require(priceCategories[categoryId] * numberOfTokens <= amountCommission / 100, "El monto de Matic no cubre el costo"); bool success; (success,) = receptorWallet.call{value: amount}(""); require(success, "No se pudieron enviar matic a la wallet receptora"); } for (uint256 i = 0; i < numberOfTokens; i++) { _safeMint(msg.sender, ts + i); } qtyCategories[categoryId] = qtyCategories[categoryId] - numberOfTokens; emit Mint(msg.sender, categoryId, numberOfTokens); } function withdraw() public onlyOwner { uint balance = address(this).balance; payable(msg.sender).transfer(balance); } function setPriceCategory(uint categoryId, uint price) public onlyOwner { priceCategories[categoryId] = price; } function setQtyCategory(uint categoryId, uint _qty) public onlyOwner { qtyCategories[categoryId] = _qty; } function setNewCategory(uint categoryId, uint _qty, uint _price) public onlyOwner { priceCategories[categoryId] = _price; qtyCategories[categoryId] = _qty; } function setBuyToken(address _buyToken) public onlyOwner { buyToken = _buyToken; } function setReceptorWallet(address _receptorWallet) public onlyOwner { receptorWallet = _receptorWallet; } function setRouterAddress(address _routerAddress) public onlyOwner { routerAddress = _routerAddress; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_buyToken","type":"address"},{"internalType":"address","name":"_receptorWallet","type":"address"},{"internalType":"address","name":"_routerAddress","type":"address"}],"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":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"categoryId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"Mint","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":[],"name":"MAX_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TX_MINT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_WL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_PER_TOKEN_PRE_SALE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_PER_TOKEN_PUBLIC_SALE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAllowListActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"},{"internalType":"uint256","name":"categoryId","type":"uint256"},{"internalType":"bool","name":"payWithToken","type":"bool"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"priceCategories","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"qtyCategories","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receptorWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"reserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_buyToken","type":"address"}],"name":"setBuyToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mTx","type":"uint256"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"categoryId","type":"uint256"},{"internalType":"uint256","name":"_qty","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setNewCategory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"categoryId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setPriceCategory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pPublic","type":"uint256"},{"internalType":"uint256","name":"pPresale","type":"uint256"}],"name":"setPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"categoryId","type":"uint256"},{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"setQtyCategory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receptorWallet","type":"address"}],"name":"setReceptorWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_routerAddress","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newState","type":"bool"}],"name":"setSaleState","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":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600a60146101000a81548160ff0219169083151502179055506000600a60156101000a81548160ff0219169083151502179055506103e8600c556032600d556005600e556005600f55666a94d74f43000060105567058d15e1762800006011553480156200007357600080fd5b506040516200554f3803806200554f8339818101604052810190620000999190620003f4565b6040518060400160405280600d81526020017f53656e645374617274204e4654000000000000000000000000000000000000008152506040518060400160405280600881526020017f53656e645374617200000000000000000000000000000000000000000000000081525081600090805190602001906200011d9291906200032d565b508060019080519060200190620001369291906200032d565b505050620001596200014d6200025f60201b60201c565b6200026760201b60201c565b82601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555067016345785d8a000060166000808152602001908152602001600020819055506103e7601760008081526020019081526020016000208190555050505062000508565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200033b9062000484565b90600052602060002090601f0160209004810192826200035f5760008555620003ab565b82601f106200037a57805160ff1916838001178555620003ab565b82800160010185558215620003ab579182015b82811115620003aa5782518255916020019190600101906200038d565b5b509050620003ba9190620003be565b5090565b5b80821115620003d9576000816000905550600101620003bf565b5090565b600081519050620003ee81620004ee565b92915050565b60008060006060848603121562000410576200040f620004e9565b5b60006200042086828701620003dd565b93505060206200043386828701620003dd565b92505060406200044686828701620003dd565b9150509250925092565b60006200045d8262000464565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200049d57607f821691505b60208210811415620004b457620004b3620004ba565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620004f98162000450565b81146200050557600080fd5b50565b61503780620005186000396000f3fe60806040526004361061027d5760003560e01c8063715018a61161014f578063a4821719116100c1578063da6fb7691161007a578063da6fb76914610973578063e0d8fdf21461099e578063e7572230146109db578063e985e9c514610a18578063eb8d244414610a55578063f2fde38b14610a805761027d565b8063a482171914610865578063ac6ceda914610890578063b88d4fde146108b9578063c4e37095146108e2578063c56acc8f1461090b578063c87b56dd146109365761027d565b80638a1165b3116101135780638a1165b31461076b5780638da5cb5b1461079457806393262a1e146107bf57806395d89b41146107e857806399cd9afa14610813578063a22cb4651461083c5761027d565b8063715018a6146106985780637467f6d5146106af57806378153ac6146106da578063819b25ba1461071757806384fd2dde146107405761027d565b80632f745c59116101f357806342842e0e116101ac57806342842e0e146105735780634f6ccce71461059c57806355f804b3146105d95780635f4bb80b146106025780636352211e1461061e57806370a082311461065b5761027d565b80632f745c59146104775780633268cc56146104b457806332cb6b0c146104df57806333d9ce351461050a5780633ccfd60b1461053357806341cb87fc1461054a5761027d565b80630f2cdd6c116102455780630f2cdd6c1461037957806318160ddd146103a457806323b872dd146103cf57806326619bb9146103f857806327ea6f2b1461042357806329fc6bae1461044c5761027d565b806301ffc9a71461028257806305fefda7146102bf57806306fdde03146102e8578063081812fc14610313578063095ea7b314610350575b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a491906137f5565b610aa9565b6040516102b69190613fb5565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e191906138f2565b610abb565b005b3480156102f457600080fd5b506102fd610b26565b60405161030a9190613fd0565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190613898565b610bb8565b6040516103479190613f17565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190613712565b610bfe565b005b34801561038557600080fd5b5061038e610d16565b60405161039b9190614332565b60405180910390f35b3480156103b057600080fd5b506103b9610d1c565b6040516103c69190614332565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f191906135fc565b610d29565b005b34801561040457600080fd5b5061040d610d89565b60405161041a9190614332565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190613898565b610d8f565b005b34801561045857600080fd5b50610461610de5565b60405161046e9190613fb5565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190613712565b610df8565b6040516104ab9190614332565b60405180910390f35b3480156104c057600080fd5b506104c9610e9d565b6040516104d69190613f17565b60405180910390f35b3480156104eb57600080fd5b506104f4610ec3565b6040516105019190614332565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c9190613985565b610ec9565b005b34801561053f57600080fd5b50610548610f06565b005b34801561055657600080fd5b50610571600480360381019061056c9190613562565b610f5d565b005b34801561057f57600080fd5b5061059a600480360381019061059591906135fc565b610fa9565b005b3480156105a857600080fd5b506105c360048036038101906105be9190613898565b610fc9565b6040516105d09190614332565b60405180910390f35b3480156105e557600080fd5b5061060060048036038101906105fb919061384f565b61103a565b005b61061c60048036038101906106179190613932565b61105c565b005b34801561062a57600080fd5b5061064560048036038101906106409190613898565b61166b565b6040516106529190613f17565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190613562565b61171d565b60405161068f9190614332565b60405180910390f35b3480156106a457600080fd5b506106ad6117d5565b005b3480156106bb57600080fd5b506106c46117e9565b6040516106d19190614332565b60405180910390f35b3480156106e657600080fd5b5061070160048036038101906106fc9190613898565b6117ef565b60405161070e9190614332565b60405180910390f35b34801561072357600080fd5b5061073e60048036038101906107399190613898565b611807565b005b34801561074c57600080fd5b50610755611853565b6040516107629190614332565b60405180910390f35b34801561077757600080fd5b50610792600480360381019061078d9190613562565b611859565b005b3480156107a057600080fd5b506107a96118a5565b6040516107b69190613f17565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e191906138f2565b6118cf565b005b3480156107f457600080fd5b506107fd6118f3565b60405161080a9190613fd0565b60405180910390f35b34801561081f57600080fd5b5061083a600480360381019061083591906138f2565b611985565b005b34801561084857600080fd5b50610863600480360381019061085e91906136d2565b6119a9565b005b34801561087157600080fd5b5061087a6119bf565b6040516108879190613f17565b60405180910390f35b34801561089c57600080fd5b506108b760048036038101906108b29190613562565b6119e5565b005b3480156108c557600080fd5b506108e060048036038101906108db919061364f565b611a31565b005b3480156108ee57600080fd5b506109096004803603810190610904919061379b565b611a93565b005b34801561091757600080fd5b50610920611ab8565b60405161092d9190614332565b60405180910390f35b34801561094257600080fd5b5061095d60048036038101906109589190613898565b611abe565b60405161096a9190613fd0565b60405180910390f35b34801561097f57600080fd5b50610988611b26565b6040516109959190613f17565b60405180910390f35b3480156109aa57600080fd5b506109c560048036038101906109c09190613898565b611b4c565b6040516109d29190614332565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd9190613898565b611b64565b604051610a0f9190614332565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a91906135bc565b611df3565b604051610a4c9190613fb5565b60405180910390f35b348015610a6157600080fd5b50610a6a611e87565b604051610a779190613fb5565b60405180910390f35b348015610a8c57600080fd5b50610aa76004803603810190610aa29190613562565b611e9a565b005b6000610ab482611f1e565b9050919050565b610ac3611f98565b60008210158015610ad5575060008110155b610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b90613ff2565b60405180910390fd5b81601081905550806011819055505050565b606060008054610b35906146ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610b61906146ab565b8015610bae5780601f10610b8357610100808354040283529160200191610bae565b820191906000526020600020905b815481529060010190602001808311610b9157829003601f168201915b5050505050905090565b6000610bc382612016565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c098261166b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7190614292565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c99612061565b73ffffffffffffffffffffffffffffffffffffffff161480610cc85750610cc781610cc2612061565b611df3565b5b610d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfe906141d2565b60405180910390fd5b610d118383612069565b505050565b600f5481565b6000600880549050905090565b610d3a610d34612061565b82612122565b610d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7090614312565b60405180910390fd5b610d848383836121b7565b505050565b60105481565b610d97611f98565b6000811015610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290614132565b60405180910390fd5b80600e8190555050565b600a60159054906101000a900460ff1681565b6000610e038361171d565b8210610e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3b90614032565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b610ed1611f98565b806016600085815260200190815260200160002081905550816017600085815260200190815260200160002081905550505050565b610f0e611f98565b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f59573d6000803e3d6000fd5b5050565b610f65611f98565b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610fc483838360405180602001604052806000815250611a31565b505050565b6000610fd3610d1c565b8210611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b906142d2565b60405180910390fd5b6008828154811061102857611027614844565b5b90600052602060002001549050919050565b611042611f98565b80600b9080519060200190611058929190613299565b5050565b6000611066610d1c565b9050600a60149054906101000a900460ff166110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae90614212565b60405180910390fd5b600e548411156110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f390614012565b60405180910390fd5b600c54848261110b91906144e0565b111561114c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611143906142f2565b60405180910390fd5b600f54846111593361171d565b61116391906144e0565b11156111a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119b90614112565b60405180910390fd5b83601760008581526020019081526020016000205410156111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f190614152565b60405180910390fd5b811561144c57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161125b9190613f17565b60206040518083038186803b15801561127357600080fd5b505afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab91906138c5565b8460166000868152602001908152602001600020546112ca9190614567565b111561130b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130290614252565b60405180910390fd5b600084601660008681526020019081526020016000205461132c9190614567565b90506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b81526004016113b193929190613f32565b602060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140391906137c8565b905080611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c906142b2565b60405180910390fd5b50506115ab565b600061145734611b64565b905060006069826114689190614567565b90506064816114779190614536565b8660166000888152602001908152602001600020546114969190614567565b11156114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce90614192565b60405180910390fd5b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161151f90613f02565b60006040518083038185875af1925050503d806000811461155c576040519150601f19603f3d011682016040523d82523d6000602084013e611561565b606091505b505080915050806115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e906141b2565b60405180910390fd5b5050505b60005b848110156115de576115cb3382846115c691906144e0565b61241e565b80806115d69061470e565b9150506115ae565b508360176000858152602001908152602001600020546115fe91906145c1565b60176000858152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f848660405161165d92919061437d565b60405180910390a250505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b90614272565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590614172565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117dd611f98565b6117e7600061243c565b565b600e5481565b60166020528060005260406000206000915090505481565b61180f611f98565b6000611819610d1c565b905060005b8281101561184e5761183b33828461183691906144e0565b61241e565b80806118469061470e565b91505061181e565b505050565b60115481565b611861611f98565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118d7611f98565b8060166000848152602001908152602001600020819055505050565b606060018054611902906146ab565b80601f016020809104026020016040519081016040528092919081815260200182805461192e906146ab565b801561197b5780601f106119505761010080835404028352916020019161197b565b820191906000526020600020905b81548152906001019060200180831161195e57829003601f168201915b5050505050905090565b61198d611f98565b8060176000848152602001908152602001600020819055505050565b6119bb6119b4612061565b8383612502565b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119ed611f98565b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a42611a3c612061565b83612122565b611a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7890614312565b60405180910390fd5b611a8d8484848461266f565b50505050565b611a9b611f98565b80600a60146101000a81548160ff02191690831515021790555050565b600d5481565b6060611ac982612016565b6000611ad36126cb565b90506000815111611af35760405180602001604052806000815250611b1e565b80611afd8461275d565b604051602001611b0e929190613ede565b6040516020818303038152906040525b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60176020528060005260406000206000915090505481565b600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c07919061358f565b90506000600267ffffffffffffffff811115611c2657611c25614873565b5b604051908082528060200260200182016040528015611c545781602001602082028036833780820191505090505b5090508181600081518110611c6c57611c6b614844565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611cdd57611cdc614844565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f86846040518363ffffffff1660e01b8152600401611d7692919061434d565b60006040518083038186803b158015611d8e57600080fd5b505afa158015611da2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611dcb9190613752565b600181518110611dde57611ddd614844565b5b60200260200101519050809350505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600a60149054906101000a900460ff1681565b611ea2611f98565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0990614072565b60405180910390fd5b611f1b8161243c565b50565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f915750611f90826128be565b5b9050919050565b611fa0612061565b73ffffffffffffffffffffffffffffffffffffffff16611fbe6118a5565b73ffffffffffffffffffffffffffffffffffffffff1614612014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200b90614232565b60405180910390fd5b565b61201f816129a0565b61205e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205590614272565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166120dc8361166b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061212e8361166b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612170575061216f8185611df3565b5b806121ae57508373ffffffffffffffffffffffffffffffffffffffff1661219684610bb8565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166121d78261166b565b73ffffffffffffffffffffffffffffffffffffffff161461222d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222490614092565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561229d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612294906140d2565b60405180910390fd5b6122a8838383612a0c565b6122b3600082612069565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461230391906145c1565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461235a91906144e0565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612419838383612a1c565b505050565b612438828260405180602001604052806000815250612a21565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612571576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612568906140f2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516126629190613fb5565b60405180910390a3505050565b61267a8484846121b7565b61268684848484612a7c565b6126c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bc90614052565b60405180910390fd5b50505050565b6060600b80546126da906146ab565b80601f0160208091040260200160405190810160405280929190818152602001828054612706906146ab565b80156127535780601f1061272857610100808354040283529160200191612753565b820191906000526020600020905b81548152906001019060200180831161273657829003601f168201915b5050505050905090565b606060008214156127a5576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506128b9565b600082905060005b600082146127d75780806127c09061470e565b915050600a826127d09190614536565b91506127ad565b60008167ffffffffffffffff8111156127f3576127f2614873565b5b6040519080825280601f01601f1916602001820160405280156128255781602001600182028036833780820191505090505b5090505b600085146128b25760018261283e91906145c1565b9150600a8561284d9190614757565b603061285991906144e0565b60f81b81838151811061286f5761286e614844565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856128ab9190614536565b9450612829565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061298957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612999575061299882612c13565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b612a17838383612c7d565b505050565b505050565b612a2b8383612d91565b612a386000848484612a7c565b612a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6e90614052565b60405180910390fd5b505050565b6000612a9d8473ffffffffffffffffffffffffffffffffffffffff16612f6b565b15612c06578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612ac6612061565b8786866040518563ffffffff1660e01b8152600401612ae89493929190613f69565b602060405180830381600087803b158015612b0257600080fd5b505af1925050508015612b3357506040513d601f19601f82011682018060405250810190612b309190613822565b60015b612bb6573d8060008114612b63576040519150601f19603f3d011682016040523d82523d6000602084013e612b68565b606091505b50600081511415612bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba590614052565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c0b565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612c88838383612f8e565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ccb57612cc681612f93565b612d0a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612d0957612d088382612fdc565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d4d57612d4881613149565b612d8c565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612d8b57612d8a828261321a565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df8906141f2565b60405180910390fd5b612e0a816129a0565b15612e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e41906140b2565b60405180910390fd5b612e5660008383612a0c565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ea691906144e0565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f6760008383612a1c565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612fe98461171d565b612ff391906145c1565b90506000600760008481526020019081526020016000205490508181146130d8576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061315d91906145c1565b905060006009600084815260200190815260200160002054905060006008838154811061318d5761318c614844565b5b9060005260206000200154905080600883815481106131af576131ae614844565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806131fe576131fd614815565b5b6001900381819060005260206000200160009055905550505050565b60006132258361171d565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b8280546132a5906146ab565b90600052602060002090601f0160209004810192826132c7576000855561330e565b82601f106132e057805160ff191683800117855561330e565b8280016001018555821561330e579182015b8281111561330d5782518255916020019190600101906132f2565b5b50905061331b919061331f565b5090565b5b80821115613338576000816000905550600101613320565b5090565b600061334f61334a846143cb565b6143a6565b90508083825260208201905082856020860282011115613372576133716148a7565b5b60005b858110156133a25781613388888261354d565b845260208401935060208301925050600181019050613375565b5050509392505050565b60006133bf6133ba846143f7565b6143a6565b9050828152602081018484840111156133db576133da6148ac565b5b6133e6848285614669565b509392505050565b60006134016133fc84614428565b6143a6565b90508281526020810184848401111561341d5761341c6148ac565b5b613428848285614669565b509392505050565b60008135905061343f81614fa5565b92915050565b60008151905061345481614fa5565b92915050565b600082601f83011261346f5761346e6148a2565b5b815161347f84826020860161333c565b91505092915050565b60008135905061349781614fbc565b92915050565b6000815190506134ac81614fbc565b92915050565b6000813590506134c181614fd3565b92915050565b6000815190506134d681614fd3565b92915050565b600082601f8301126134f1576134f06148a2565b5b81356135018482602086016133ac565b91505092915050565b600082601f83011261351f5761351e6148a2565b5b813561352f8482602086016133ee565b91505092915050565b60008135905061354781614fea565b92915050565b60008151905061355c81614fea565b92915050565b600060208284031215613578576135776148b6565b5b600061358684828501613430565b91505092915050565b6000602082840312156135a5576135a46148b6565b5b60006135b384828501613445565b91505092915050565b600080604083850312156135d3576135d26148b6565b5b60006135e185828601613430565b92505060206135f285828601613430565b9150509250929050565b600080600060608486031215613615576136146148b6565b5b600061362386828701613430565b935050602061363486828701613430565b925050604061364586828701613538565b9150509250925092565b60008060008060808587031215613669576136686148b6565b5b600061367787828801613430565b945050602061368887828801613430565b935050604061369987828801613538565b925050606085013567ffffffffffffffff8111156136ba576136b96148b1565b5b6136c6878288016134dc565b91505092959194509250565b600080604083850312156136e9576136e86148b6565b5b60006136f785828601613430565b925050602061370885828601613488565b9150509250929050565b60008060408385031215613729576137286148b6565b5b600061373785828601613430565b925050602061374885828601613538565b9150509250929050565b600060208284031215613768576137676148b6565b5b600082015167ffffffffffffffff811115613786576137856148b1565b5b6137928482850161345a565b91505092915050565b6000602082840312156137b1576137b06148b6565b5b60006137bf84828501613488565b91505092915050565b6000602082840312156137de576137dd6148b6565b5b60006137ec8482850161349d565b91505092915050565b60006020828403121561380b5761380a6148b6565b5b6000613819848285016134b2565b91505092915050565b600060208284031215613838576138376148b6565b5b6000613846848285016134c7565b91505092915050565b600060208284031215613865576138646148b6565b5b600082013567ffffffffffffffff811115613883576138826148b1565b5b61388f8482850161350a565b91505092915050565b6000602082840312156138ae576138ad6148b6565b5b60006138bc84828501613538565b91505092915050565b6000602082840312156138db576138da6148b6565b5b60006138e98482850161354d565b91505092915050565b60008060408385031215613909576139086148b6565b5b600061391785828601613538565b925050602061392885828601613538565b9150509250929050565b60008060006060848603121561394b5761394a6148b6565b5b600061395986828701613538565b935050602061396a86828701613538565b925050604061397b86828701613488565b9150509250925092565b60008060006060848603121561399e5761399d6148b6565b5b60006139ac86828701613538565b93505060206139bd86828701613538565b92505060406139ce86828701613538565b9150509250925092565b60006139e483836139f0565b60208301905092915050565b6139f9816145f5565b82525050565b613a08816145f5565b82525050565b6000613a1982614469565b613a238185614497565b9350613a2e83614459565b8060005b83811015613a5f578151613a4688826139d8565b9750613a518361448a565b925050600181019050613a32565b5085935050505092915050565b613a7581614607565b82525050565b6000613a8682614474565b613a9081856144a8565b9350613aa0818560208601614678565b613aa9816148bb565b840191505092915050565b6000613abf8261447f565b613ac981856144c4565b9350613ad9818560208601614678565b613ae2816148bb565b840191505092915050565b6000613af88261447f565b613b0281856144d5565b9350613b12818560208601614678565b80840191505092915050565b6000613b2b602b836144c4565b9150613b36826148cc565b604082019050919050565b6000613b4e6022836144c4565b9150613b598261491b565b604082019050919050565b6000613b71602b836144c4565b9150613b7c8261496a565b604082019050919050565b6000613b946032836144c4565b9150613b9f826149b9565b604082019050919050565b6000613bb76026836144c4565b9150613bc282614a08565b604082019050919050565b6000613bda6025836144c4565b9150613be582614a57565b604082019050919050565b6000613bfd601c836144c4565b9150613c0882614aa6565b602082019050919050565b6000613c206024836144c4565b9150613c2b82614acf565b604082019050919050565b6000613c436019836144c4565b9150613c4e82614b1e565b602082019050919050565b6000613c666026836144c4565b9150613c7182614b47565b604082019050919050565b6000613c896030836144c4565b9150613c9482614b96565b604082019050919050565b6000613cac6027836144c4565b9150613cb782614be5565b604082019050919050565b6000613ccf6029836144c4565b9150613cda82614c34565b604082019050919050565b6000613cf26023836144c4565b9150613cfd82614c83565b604082019050919050565b6000613d156031836144c4565b9150613d2082614cd2565b604082019050919050565b6000613d38603e836144c4565b9150613d4382614d21565b604082019050919050565b6000613d5b6020836144c4565b9150613d6682614d70565b602082019050919050565b6000613d7e601b836144c4565b9150613d8982614d99565b602082019050919050565b6000613da16020836144c4565b9150613dac82614dc2565b602082019050919050565b6000613dc4601c836144c4565b9150613dcf82614deb565b602082019050919050565b6000613de76018836144c4565b9150613df282614e14565b602082019050919050565b6000613e0a6021836144c4565b9150613e1582614e3d565b604082019050919050565b6000613e2d6000836144b9565b9150613e3882614e8c565b600082019050919050565b6000613e506032836144c4565b9150613e5b82614e8f565b604082019050919050565b6000613e73602c836144c4565b9150613e7e82614ede565b604082019050919050565b6000613e966016836144c4565b9150613ea182614f2d565b602082019050919050565b6000613eb9602e836144c4565b9150613ec482614f56565b604082019050919050565b613ed88161465f565b82525050565b6000613eea8285613aed565b9150613ef68284613aed565b91508190509392505050565b6000613f0d82613e20565b9150819050919050565b6000602082019050613f2c60008301846139ff565b92915050565b6000606082019050613f4760008301866139ff565b613f5460208301856139ff565b613f616040830184613ecf565b949350505050565b6000608082019050613f7e60008301876139ff565b613f8b60208301866139ff565b613f986040830185613ecf565b8181036060830152613faa8184613a7b565b905095945050505050565b6000602082019050613fca6000830184613a6c565b92915050565b60006020820190508181036000830152613fea8184613ab4565b905092915050565b6000602082019050818103600083015261400b81613b1e565b9050919050565b6000602082019050818103600083015261402b81613b41565b9050919050565b6000602082019050818103600083015261404b81613b64565b9050919050565b6000602082019050818103600083015261406b81613b87565b9050919050565b6000602082019050818103600083015261408b81613baa565b9050919050565b600060208201905081810360008301526140ab81613bcd565b9050919050565b600060208201905081810360008301526140cb81613bf0565b9050919050565b600060208201905081810360008301526140eb81613c13565b9050919050565b6000602082019050818103600083015261410b81613c36565b9050919050565b6000602082019050818103600083015261412b81613c59565b9050919050565b6000602082019050818103600083015261414b81613c7c565b9050919050565b6000602082019050818103600083015261416b81613c9f565b9050919050565b6000602082019050818103600083015261418b81613cc2565b9050919050565b600060208201905081810360008301526141ab81613ce5565b9050919050565b600060208201905081810360008301526141cb81613d08565b9050919050565b600060208201905081810360008301526141eb81613d2b565b9050919050565b6000602082019050818103600083015261420b81613d4e565b9050919050565b6000602082019050818103600083015261422b81613d71565b9050919050565b6000602082019050818103600083015261424b81613d94565b9050919050565b6000602082019050818103600083015261426b81613db7565b9050919050565b6000602082019050818103600083015261428b81613dda565b9050919050565b600060208201905081810360008301526142ab81613dfd565b9050919050565b600060208201905081810360008301526142cb81613e43565b9050919050565b600060208201905081810360008301526142eb81613e66565b9050919050565b6000602082019050818103600083015261430b81613e89565b9050919050565b6000602082019050818103600083015261432b81613eac565b9050919050565b60006020820190506143476000830184613ecf565b92915050565b60006040820190506143626000830185613ecf565b81810360208301526143748184613a0e565b90509392505050565b60006040820190506143926000830185613ecf565b61439f6020830184613ecf565b9392505050565b60006143b06143c1565b90506143bc82826146dd565b919050565b6000604051905090565b600067ffffffffffffffff8211156143e6576143e5614873565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561441257614411614873565b5b61441b826148bb565b9050602081019050919050565b600067ffffffffffffffff82111561444357614442614873565b5b61444c826148bb565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006144eb8261465f565b91506144f68361465f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561452b5761452a614788565b5b828201905092915050565b60006145418261465f565b915061454c8361465f565b92508261455c5761455b6147b7565b5b828204905092915050565b60006145728261465f565b915061457d8361465f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145b6576145b5614788565b5b828202905092915050565b60006145cc8261465f565b91506145d78361465f565b9250828210156145ea576145e9614788565b5b828203905092915050565b60006146008261463f565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561469657808201518184015260208101905061467b565b838111156146a5576000848401525b50505050565b600060028204905060018216806146c357607f821691505b602082108114156146d7576146d66147e6565b5b50919050565b6146e6826148bb565b810181811067ffffffffffffffff8211171561470557614704614873565b5b80604052505050565b60006147198261465f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561474c5761474b614788565b5b600182019050919050565b60006147628261465f565b915061476d8361465f565b92508261477d5761477c6147b7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5072696365732073686f756c6420626520686967686572206f7220657175616c60008201527f207468616e207a65726f2e000000000000000000000000000000000000000000602082015250565b7f45786365646520656c206e756d65726f20646520636f6d7072617320706f722060008201527f7478000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f45786365646520656c206e756d65726f20646520636f6d7072617320706f722060008201527f77616c6c65740000000000000000000000000000000000000000000000000000602082015250565b7f4d41585f54585f4d494e542073686f756c6420626520686967686572206f722060008201527f657175616c207468616e207a65726f2e00000000000000000000000000000000602082015250565b7f4e6f206861792074616e746f7320656e2073746f636b2064652065736120636160008201527f7465676f72696100000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f456c206d6f6e746f206465204d61746963206e6f20637562726520656c20636f60008201527f73746f0000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f207365207075646965726f6e20656e76696172206d617469632061206c6160008201527f2077616c6c6574207265636570746f7261000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4c612076656e74612061756e206e6f2065737461206163746976610000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f207469656e657320737566696369656e74657320746f6b656e7300000000600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4e6f207365207075646965726f6e20656e7669617220746f6b656e732061206c60008201527f612077616c6c6574207265636570746f72610000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4e6f206861792074616e746f7320656e2073746f636b00000000000000000000600082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b614fae816145f5565b8114614fb957600080fd5b50565b614fc581614607565b8114614fd057600080fd5b50565b614fdc81614613565b8114614fe757600080fd5b50565b614ff38161465f565b8114614ffe57600080fd5b5056fea2646970667358221220b8d99ac8cdc636c9f75ca4a24c116cd7aa7b23991d87cc8d275b283f01077f8b64736f6c634300080600330000000000000000000000002791bca1f2de4661ed88a30c99a7a9449aa8417400000000000000000000000084f33e797364bdfc4511bf5ab35b0372aa96ba69000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002791bca1f2de4661ed88a30c99a7a9449aa8417400000000000000000000000084f33e797364bdfc4511bf5ab35b0372aa96ba69000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
-----Decoded View---------------
Arg [0] : _buyToken (address): 0x2791bca1f2de4661ed88a30c99a7a9449aa84174
Arg [1] : _receptorWallet (address): 0x84f33e797364bdfc4511bf5ab35b0372aa96ba69
Arg [2] : _routerAddress (address): 0xa5e0829caced8ffdd4de3c43696c57f7d7a678ff
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000002791bca1f2de4661ed88a30c99a7a9449aa84174
Arg [1] : 00000000000000000000000084f33e797364bdfc4511bf5ab35b0372aa96ba69
Arg [2] : 000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
Deployed ByteCode Sourcemap
47115:5650:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48451:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49186:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26744:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28257:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27774:417;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47414:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40650:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28957:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47454:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49463:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47216:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40318:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47640:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47298:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52226:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51816:140;;;;;;;;;;;;;:::i;:::-;;52646:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29364:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40840:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48638:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49971:1837;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26455:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26186:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5273:103;;;;;;;;;;;;;:::i;:::-;;47377:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47727:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48882:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47516:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52414:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4625:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51964:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26913:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52098:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28500:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47574:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52518:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29620:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49082:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47337:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27088:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47604:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47778:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49635:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28726:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47177:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5531:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48451:179;48562:4;48586:36;48610:11;48586:23;:36::i;:::-;48579:43;;48451:179;;;:::o;49186:269::-;4511:13;:11;:13::i;:::-;49287:1:::1;49276:7;:12;;:29;;;;;49304:1;49292:8;:13;;49276:29;49268:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;49394:7;49364:27;:37;;;;49439:8;49412:24;:35;;;;49186:269:::0;;:::o;26744:100::-;26798:13;26831:5;26824:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26744:100;:::o;28257:171::-;28333:7;28353:23;28368:7;28353:14;:23::i;:::-;28396:15;:24;28412:7;28396:24;;;;;;;;;;;;;;;;;;;;;28389:31;;28257:171;;;:::o;27774:417::-;27855:13;27871:23;27886:7;27871:14;:23::i;:::-;27855:39;;27919:5;27913:11;;:2;:11;;;;27905:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;28013:5;27997:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;28022:37;28039:5;28046:12;:10;:12::i;:::-;28022:16;:37::i;:::-;27997:62;27975:174;;;;;;;;;;;;:::i;:::-;;;;;;;;;28162:21;28171:2;28175:7;28162:8;:21::i;:::-;27844:347;27774:417;;:::o;47414:33::-;;;;:::o;40650:113::-;40711:7;40738:10;:17;;;;40731:24;;40650:113;:::o;28957:336::-;29152:41;29171:12;:10;:12::i;:::-;29185:7;29152:18;:41::i;:::-;29144:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;29257:28;29267:4;29273:2;29277:7;29257:9;:28::i;:::-;28957:336;;;:::o;47454:55::-;;;;:::o;49463:164::-;4511:13;:11;:13::i;:::-;49537:1:::1;49530:3;:8;;49522:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;49616:3;49602:11;:17;;;;49463:164:::0;:::o;47216:37::-;;;;;;;;;;;;;:::o;40318:256::-;40415:7;40451:23;40468:5;40451:16;:23::i;:::-;40443:5;:31;40435:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;40540:12;:19;40553:5;40540:19;;;;;;;;;;;;;;;:26;40560:5;40540:26;;;;;;;;;;;;40533:33;;40318:256;;;;:::o;47640:28::-;;;;;;;;;;;;;:::o;47298:32::-;;;;:::o;52226:180::-;4511:13;:11;:13::i;:::-;52349:6:::1;52319:15;:27;52335:10;52319:27;;;;;;;;;;;:36;;;;52394:4;52366:13;:25;52380:10;52366:25;;;;;;;;;;;:32;;;;52226:180:::0;;;:::o;51816:140::-;4511:13;:11;:13::i;:::-;51864:12:::1;51879:21;51864:36;;51919:10;51911:28;;:37;51940:7;51911:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;51853:103;51816:140::o:0;52646:116::-;4511:13;:11;:13::i;:::-;52740:14:::1;52724:13;;:30;;;;;;;;;;;;;;;;;;52646:116:::0;:::o;29364:185::-;29502:39;29519:4;29525:2;29529:7;29502:39;;;;;;;;;;;;:16;:39::i;:::-;29364:185;;;:::o;40840:233::-;40915:7;40951:30;:28;:30::i;:::-;40943:5;:38;40935:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;41048:10;41059:5;41048:17;;;;;;;;:::i;:::-;;;;;;;;;;41041:24;;40840:233;;;:::o;48638:111::-;4511:13;:11;:13::i;:::-;48733:8:::1;48714:16;:27;;;;;;;;;;;;:::i;:::-;;48638:111:::0;:::o;49971:1837::-;50068:10;50081:13;:11;:13::i;:::-;50068:26;;50113:12;;;;;;;;;;;50105:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;50194:11;;50176:14;:29;;50168:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;50286:10;;50268:14;50263:2;:19;;;;:::i;:::-;:33;;50255:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50384:14;;50366;50342:21;50352:10;50342:9;:21::i;:::-;:38;;;;:::i;:::-;:56;;50334:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;50489:14;50460:13;:25;50474:10;50460:25;;;;;;;;;;;;:43;;50452:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;50562:12;50558:985;;;50654:8;;;;;;;;;;;50647:26;;;50674:10;50647:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50629:14;50599:15;:27;50615:10;50599:27;;;;;;;;;;;;:44;;;;:::i;:::-;:86;;50591:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;50733:17;50783:14;50753:15;:27;50769:10;50753:27;;;;;;;;;;;;:44;;;;:::i;:::-;50733:64;;50814:9;50833:8;;;;;;;;;;;50826:29;;;50856:10;50868:14;;;;;;;;;;;50884:12;50826:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50814:83;;50920:4;50912:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;50576:415;;50558:985;;;51012:11;51026:19;51035:9;51026:8;:19::i;:::-;51012:33;;51060:21;51093:3;51084:6;:12;;;;:::i;:::-;51060:36;;51311:3;51292:16;:22;;;;:::i;:::-;51274:14;51244:15;:27;51260:10;51244:27;;;;;;;;;;;;:44;;;;:::i;:::-;:70;;51236:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;51369:12;51409:14;;;;;;;;;;;:19;;51436:6;51409:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51396:51;;;;;51470:7;51462:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;50997:546;;;50558:985;51560:9;51555:101;51579:14;51575:1;:18;51555:101;;;51615:29;51625:10;51642:1;51637:2;:6;;;;:::i;:::-;51615:9;:29::i;:::-;51595:3;;;;;:::i;:::-;;;;51555:101;;;;51724:14;51696:13;:25;51710:10;51696:25;;;;;;;;;;;;:42;;;;:::i;:::-;51668:13;:25;51682:10;51668:25;;;;;;;;;;;:70;;;;51761:10;51756:44;;;51773:10;51785:14;51756:44;;;;;;;:::i;:::-;;;;;;;;50057:1751;49971:1837;;;:::o;26455:222::-;26527:7;26547:13;26563:7;:16;26571:7;26563:16;;;;;;;;;;;;;;;;;;;;;26547:32;;26615:1;26598:19;;:5;:19;;;;26590:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;26664:5;26657:12;;;26455:222;;;:::o;26186:207::-;26258:7;26303:1;26286:19;;:5;:19;;;;26278:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26369:9;:16;26379:5;26369:16;;;;;;;;;;;;;;;;26362:23;;26186:207;;;:::o;5273:103::-;4511:13;:11;:13::i;:::-;5338:30:::1;5365:1;5338:18;:30::i;:::-;5273:103::o:0;47377:30::-;;;;:::o;47727:44::-;;;;;;;;;;;;;;;;;:::o;48882:192::-;4511:13;:11;:13::i;:::-;48936:11:::1;48950:13;:11;:13::i;:::-;48936:27;;48972:6;48987:80;49003:1;48999;:5;48987:80;;;49024:33;49034:10;49055:1;49046:6;:10;;;;:::i;:::-;49024:9;:33::i;:::-;49006:3;;;;;:::i;:::-;;;;48987:80;;;48927:147;;48882:192:::0;:::o;47516:51::-;;;;:::o;52414:96::-;4511:13;:11;:13::i;:::-;52493:9:::1;52482:8;;:20;;;;;;;;;;;;;;;;;;52414:96:::0;:::o;4625:87::-;4671:7;4698:6;;;;;;;;;;;4691:13;;4625:87;:::o;51964:126::-;4511:13;:11;:13::i;:::-;52077:5:::1;52047:15;:27;52063:10;52047:27;;;;;;;;;;;:35;;;;51964:126:::0;;:::o;26913:104::-;26969:13;27002:7;26995:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26913:104;:::o;52098:120::-;4511:13;:11;:13::i;:::-;52206:4:::1;52178:13;:25;52192:10;52178:25;;;;;;;;;;;:32;;;;52098:120:::0;;:::o;28500:155::-;28595:52;28614:12;:10;:12::i;:::-;28628:8;28638;28595:18;:52::i;:::-;28500:155;;:::o;47574:23::-;;;;;;;;;;;;;:::o;52518:120::-;4511:13;:11;:13::i;:::-;52615:15:::1;52598:14;;:32;;;;;;;;;;;;;;;;;;52518:120:::0;:::o;29620:323::-;29794:41;29813:12;:10;:12::i;:::-;29827:7;29794:18;:41::i;:::-;29786:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;29897:38;29911:4;29917:2;29921:7;29930:4;29897:13;:38::i;:::-;29620:323;;;;:::o;49082:96::-;4511:13;:11;:13::i;:::-;49162:8:::1;49147:12;;:23;;;;;;;;;;;;;;;;;;49082:96:::0;:::o;47337:33::-;;;;:::o;27088:281::-;27161:13;27187:23;27202:7;27187:14;:23::i;:::-;27223:21;27247:10;:8;:10::i;:::-;27223:34;;27299:1;27281:7;27275:21;:25;:86;;;;;;;;;;;;;;;;;27327:7;27336:18;:7;:16;:18::i;:::-;27310:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27275:86;27268:93;;;27088:281;;;:::o;47604:29::-;;;;;;;;;;;;;:::o;47778:42::-;;;;;;;;;;;;;;;;;:::o;49635:328::-;49687:4;49704:12;49727:13;;;;;;;;;;;49719:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49704:44;;49759:21;49797:1;49783:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49759:40;;49820:4;49810;49815:1;49810:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;49845:8;;;;;;;;;;;49835:4;49840:1;49835:7;;;;;;;;:::i;:::-;;;;;;;:18;;;;;;;;;;;49864:11;49886:13;;;;;;;;;;;49878:36;;;49915:6;49923:4;49878:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49929:1;49878:53;;;;;;;;:::i;:::-;;;;;;;;49864:67;;49949:6;49942:13;;;;;49635:328;;;:::o;28726:164::-;28823:4;28847:18;:25;28866:5;28847:25;;;;;;;;;;;;;;;:35;28873:8;28847:35;;;;;;;;;;;;;;;;;;;;;;;;;28840:42;;28726:164;;;;:::o;47177:32::-;;;;;;;;;;;;;:::o;5531:201::-;4511:13;:11;:13::i;:::-;5640:1:::1;5620:22;;:8;:22;;;;5612:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5696:28;5715:8;5696:18;:28::i;:::-;5531:201:::0;:::o;40010:224::-;40112:4;40151:35;40136:50;;;:11;:50;;;;:90;;;;40190:36;40214:11;40190:23;:36::i;:::-;40136:90;40129:97;;40010:224;;;:::o;4790:132::-;4865:12;:10;:12::i;:::-;4854:23;;:7;:5;:7::i;:::-;:23;;;4846:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4790:132::o;36232:135::-;36314:16;36322:7;36314;:16::i;:::-;36306:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;36232:135;:::o;3176:98::-;3229:7;3256:10;3249:17;;3176:98;:::o;35511:174::-;35613:2;35586:15;:24;35602:7;35586:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;35669:7;35665:2;35631:46;;35640:23;35655:7;35640:14;:23::i;:::-;35631:46;;;;;;;;;;;;35511:174;;:::o;31744:264::-;31837:4;31854:13;31870:23;31885:7;31870:14;:23::i;:::-;31854:39;;31923:5;31912:16;;:7;:16;;;:52;;;;31932:32;31949:5;31956:7;31932:16;:32::i;:::-;31912:52;:87;;;;31992:7;31968:31;;:20;31980:7;31968:11;:20::i;:::-;:31;;;31912:87;31904:96;;;31744:264;;;;:::o;34767:625::-;34926:4;34899:31;;:23;34914:7;34899:14;:23::i;:::-;:31;;;34891:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;35005:1;34991:16;;:2;:16;;;;34983:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;35061:39;35082:4;35088:2;35092:7;35061:20;:39::i;:::-;35165:29;35182:1;35186:7;35165:8;:29::i;:::-;35226:1;35207:9;:15;35217:4;35207:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;35255:1;35238:9;:13;35248:2;35238:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;35286:2;35267:7;:16;35275:7;35267:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;35325:7;35321:2;35306:27;;35315:4;35306:27;;;;;;;;;;;;35346:38;35366:4;35372:2;35376:7;35346:19;:38::i;:::-;34767:625;;;:::o;32350:110::-;32426:26;32436:2;32440:7;32426:26;;;;;;;;;;;;:9;:26::i;:::-;32350:110;;:::o;5892:191::-;5966:16;5985:6;;;;;;;;;;;5966:25;;6011:8;6002:6;;:17;;;;;;;;;;;;;;;;;;6066:8;6035:40;;6056:8;6035:40;;;;;;;;;;;;5955:128;5892:191;:::o;35828:315::-;35983:8;35974:17;;:5;:17;;;;35966:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;36070:8;36032:18;:25;36051:5;36032:25;;;;;;;;;;;;;;;:35;36058:8;36032:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36116:8;36094:41;;36109:5;36094:41;;;36126:8;36094:41;;;;;;:::i;:::-;;;;;;;;35828:315;;;:::o;30824:313::-;30980:28;30990:4;30996:2;31000:7;30980:9;:28::i;:::-;31027:47;31050:4;31056:2;31060:7;31069:4;31027:22;:47::i;:::-;31019:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;30824:313;;;;:::o;48757:117::-;48817:13;48850:16;48843:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48757:117;:::o;430:723::-;486:13;716:1;707:5;:10;703:53;;;734:10;;;;;;;;;;;;;;;;;;;;;703:53;766:12;781:5;766:20;;797:14;822:78;837:1;829:4;:9;822:78;;855:8;;;;;:::i;:::-;;;;886:2;878:10;;;;;:::i;:::-;;;822:78;;;910:19;942:6;932:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;910:39;;960:154;976:1;967:5;:10;960:154;;1004:1;994:11;;;;;:::i;:::-;;;1071:2;1063:5;:10;;;;:::i;:::-;1050:2;:24;;;;:::i;:::-;1037:39;;1020:6;1027;1020:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1100:2;1091:11;;;;;:::i;:::-;;;960:154;;;1138:6;1124:21;;;;;430:723;;;;:::o;25817:305::-;25919:4;25971:25;25956:40;;;:11;:40;;;;:105;;;;26028:33;26013:48;;;:11;:48;;;;25956:105;:158;;;;26078:36;26102:11;26078:23;:36::i;:::-;25956:158;25936:178;;25817:305;;;:::o;31450:127::-;31515:4;31567:1;31539:30;;:7;:16;31547:7;31539:16;;;;;;;;;;;;;;;;;;;;;:30;;;;31532:37;;31450:127;;;:::o;48262:181::-;48390:45;48417:4;48423:2;48427:7;48390:26;:45::i;:::-;48262:181;;;:::o;38867:125::-;;;;:::o;32687:319::-;32816:18;32822:2;32826:7;32816:5;:18::i;:::-;32867:53;32898:1;32902:2;32906:7;32915:4;32867:22;:53::i;:::-;32845:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;32687:319;;;:::o;36931:853::-;37085:4;37106:15;:2;:13;;;:15::i;:::-;37102:675;;;37158:2;37142:36;;;37179:12;:10;:12::i;:::-;37193:4;37199:7;37208:4;37142:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;37138:584;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37400:1;37383:6;:13;:18;37379:328;;;37426:60;;;;;;;;;;:::i;:::-;;;;;;;;37379:328;37657:6;37651:13;37642:6;37638:2;37634:15;37627:38;37138:584;37274:41;;;37264:51;;;:6;:51;;;;37257:58;;;;;37102:675;37761:4;37754:11;;36931:853;;;;;;;:::o;17479:157::-;17564:4;17603:25;17588:40;;;:11;:40;;;;17581:47;;17479:157;;;:::o;41686:589::-;41830:45;41857:4;41863:2;41867:7;41830:26;:45::i;:::-;41908:1;41892:18;;:4;:18;;;41888:187;;;41927:40;41959:7;41927:31;:40::i;:::-;41888:187;;;41997:2;41989:10;;:4;:10;;;41985:90;;42016:47;42049:4;42055:7;42016:32;:47::i;:::-;41985:90;41888:187;42103:1;42089:16;;:2;:16;;;42085:183;;;42122:45;42159:7;42122:36;:45::i;:::-;42085:183;;;42195:4;42189:10;;:2;:10;;;42185:83;;42216:40;42244:2;42248:7;42216:27;:40::i;:::-;42185:83;42085:183;41686:589;;;:::o;33342:439::-;33436:1;33422:16;;:2;:16;;;;33414:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;33495:16;33503:7;33495;:16::i;:::-;33494:17;33486:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;33557:45;33586:1;33590:2;33594:7;33557:20;:45::i;:::-;33632:1;33615:9;:13;33625:2;33615:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;33663:2;33644:7;:16;33652:7;33644:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;33708:7;33704:2;33683:33;;33700:1;33683:33;;;;;;;;;;;;33729:44;33757:1;33761:2;33765:7;33729:19;:44::i;:::-;33342:439;;:::o;7323:326::-;7383:4;7640:1;7618:7;:19;;;:23;7611:30;;7323:326;;;:::o;38356:126::-;;;;:::o;42998:164::-;43102:10;:17;;;;43075:15;:24;43091:7;43075:24;;;;;;;;;;;:44;;;;43130:10;43146:7;43130:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42998:164;:::o;43789:988::-;44055:22;44105:1;44080:22;44097:4;44080:16;:22::i;:::-;:26;;;;:::i;:::-;44055:51;;44117:18;44138:17;:26;44156:7;44138:26;;;;;;;;;;;;44117:47;;44285:14;44271:10;:28;44267:328;;44316:19;44338:12;:18;44351:4;44338:18;;;;;;;;;;;;;;;:34;44357:14;44338:34;;;;;;;;;;;;44316:56;;44422:11;44389:12;:18;44402:4;44389:18;;;;;;;;;;;;;;;:30;44408:10;44389:30;;;;;;;;;;;:44;;;;44539:10;44506:17;:30;44524:11;44506:30;;;;;;;;;;;:43;;;;44301:294;44267:328;44691:17;:26;44709:7;44691:26;;;;;;;;;;;44684:33;;;44735:12;:18;44748:4;44735:18;;;;;;;;;;;;;;;:34;44754:14;44735:34;;;;;;;;;;;44728:41;;;43870:907;;43789:988;;:::o;45072:1079::-;45325:22;45370:1;45350:10;:17;;;;:21;;;;:::i;:::-;45325:46;;45382:18;45403:15;:24;45419:7;45403:24;;;;;;;;;;;;45382:45;;45754:19;45776:10;45787:14;45776:26;;;;;;;;:::i;:::-;;;;;;;;;;45754:48;;45840:11;45815:10;45826;45815:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;45951:10;45920:15;:28;45936:11;45920:28;;;;;;;;;;;:41;;;;46092:15;:24;46108:7;46092:24;;;;;;;;;;;46085:31;;;46127:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;45143:1008;;;45072:1079;:::o;42576:221::-;42661:14;42678:20;42695:2;42678:16;:20::i;:::-;42661:37;;42736:7;42709:12;:16;42722:2;42709:16;;;;;;;;;;;;;;;:24;42726:6;42709:24;;;;;;;;;;;:34;;;;42783:6;42754:17;:26;42772:7;42754:26;;;;;;;;;;;:35;;;;42650:147;42576:221;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:744:1:-;131:5;156:81;172:64;229:6;172:64;:::i;:::-;156:81;:::i;:::-;147:90;;257:5;286:6;279:5;272:21;320:4;313:5;309:16;302:23;;346:6;396:3;388:4;380:6;376:17;371:3;367:27;364:36;361:2;;;415:79;;:::i;:::-;361:2;528:1;513:249;538:6;535:1;532:13;513:249;;;606:3;635:48;679:3;667:10;635:48;:::i;:::-;630:3;623:61;713:4;708:3;704:14;697:21;;747:4;742:3;738:14;731:21;;573:189;560:1;557;553:9;548:14;;513:249;;;517:14;137:631;;;;;;;:::o;774:410::-;851:5;876:65;892:48;933:6;892:48;:::i;:::-;876:65;:::i;:::-;867:74;;964:6;957:5;950:21;1002:4;995:5;991:16;1040:3;1031:6;1026:3;1022:16;1019:25;1016:2;;;1047:79;;:::i;:::-;1016:2;1137:41;1171:6;1166:3;1161;1137:41;:::i;:::-;857:327;;;;;;:::o;1190:412::-;1268:5;1293:66;1309:49;1351:6;1309:49;:::i;:::-;1293:66;:::i;:::-;1284:75;;1382:6;1375:5;1368:21;1420:4;1413:5;1409:16;1458:3;1449:6;1444:3;1440:16;1437:25;1434:2;;;1465:79;;:::i;:::-;1434:2;1555:41;1589:6;1584:3;1579;1555:41;:::i;:::-;1274:328;;;;;;:::o;1608:139::-;1654:5;1692:6;1679:20;1670:29;;1708:33;1735:5;1708:33;:::i;:::-;1660:87;;;;:::o;1753:143::-;1810:5;1841:6;1835:13;1826:22;;1857:33;1884:5;1857:33;:::i;:::-;1816:80;;;;:::o;1919:385::-;2001:5;2050:3;2043:4;2035:6;2031:17;2027:27;2017:2;;2058:79;;:::i;:::-;2017:2;2168:6;2162:13;2193:105;2294:3;2286:6;2279:4;2271:6;2267:17;2193:105;:::i;:::-;2184:114;;2007:297;;;;;:::o;2310:133::-;2353:5;2391:6;2378:20;2369:29;;2407:30;2431:5;2407:30;:::i;:::-;2359:84;;;;:::o;2449:137::-;2503:5;2534:6;2528:13;2519:22;;2550:30;2574:5;2550:30;:::i;:::-;2509:77;;;;:::o;2592:137::-;2637:5;2675:6;2662:20;2653:29;;2691:32;2717:5;2691:32;:::i;:::-;2643:86;;;;:::o;2735:141::-;2791:5;2822:6;2816:13;2807:22;;2838:32;2864:5;2838:32;:::i;:::-;2797:79;;;;:::o;2895:338::-;2950:5;2999:3;2992:4;2984:6;2980:17;2976:27;2966:2;;3007:79;;:::i;:::-;2966:2;3124:6;3111:20;3149:78;3223:3;3215:6;3208:4;3200:6;3196:17;3149:78;:::i;:::-;3140:87;;2956:277;;;;;:::o;3253:340::-;3309:5;3358:3;3351:4;3343:6;3339:17;3335:27;3325:2;;3366:79;;:::i;:::-;3325:2;3483:6;3470:20;3508:79;3583:3;3575:6;3568:4;3560:6;3556:17;3508:79;:::i;:::-;3499:88;;3315:278;;;;;:::o;3599:139::-;3645:5;3683:6;3670:20;3661:29;;3699:33;3726:5;3699:33;:::i;:::-;3651:87;;;;:::o;3744:143::-;3801:5;3832:6;3826:13;3817:22;;3848:33;3875:5;3848:33;:::i;:::-;3807:80;;;;:::o;3893:329::-;3952:6;4001:2;3989:9;3980:7;3976:23;3972:32;3969:2;;;4007:79;;:::i;:::-;3969:2;4127:1;4152:53;4197:7;4188:6;4177:9;4173:22;4152:53;:::i;:::-;4142:63;;4098:117;3959:263;;;;:::o;4228:351::-;4298:6;4347:2;4335:9;4326:7;4322:23;4318:32;4315:2;;;4353:79;;:::i;:::-;4315:2;4473:1;4498:64;4554:7;4545:6;4534:9;4530:22;4498:64;:::i;:::-;4488:74;;4444:128;4305:274;;;;:::o;4585:474::-;4653:6;4661;4710:2;4698:9;4689:7;4685:23;4681:32;4678:2;;;4716:79;;:::i;:::-;4678:2;4836:1;4861:53;4906:7;4897:6;4886:9;4882:22;4861:53;:::i;:::-;4851:63;;4807:117;4963:2;4989:53;5034:7;5025:6;5014:9;5010:22;4989:53;:::i;:::-;4979:63;;4934:118;4668:391;;;;;:::o;5065:619::-;5142:6;5150;5158;5207:2;5195:9;5186:7;5182:23;5178:32;5175:2;;;5213:79;;:::i;:::-;5175:2;5333:1;5358:53;5403:7;5394:6;5383:9;5379:22;5358:53;:::i;:::-;5348:63;;5304:117;5460:2;5486:53;5531:7;5522:6;5511:9;5507:22;5486:53;:::i;:::-;5476:63;;5431:118;5588:2;5614:53;5659:7;5650:6;5639:9;5635:22;5614:53;:::i;:::-;5604:63;;5559:118;5165:519;;;;;:::o;5690:943::-;5785:6;5793;5801;5809;5858:3;5846:9;5837:7;5833:23;5829:33;5826:2;;;5865:79;;:::i;:::-;5826:2;5985:1;6010:53;6055:7;6046:6;6035:9;6031:22;6010:53;:::i;:::-;6000:63;;5956:117;6112:2;6138:53;6183:7;6174:6;6163:9;6159:22;6138:53;:::i;:::-;6128:63;;6083:118;6240:2;6266:53;6311:7;6302:6;6291:9;6287:22;6266:53;:::i;:::-;6256:63;;6211:118;6396:2;6385:9;6381:18;6368:32;6427:18;6419:6;6416:30;6413:2;;;6449:79;;:::i;:::-;6413:2;6554:62;6608:7;6599:6;6588:9;6584:22;6554:62;:::i;:::-;6544:72;;6339:287;5816:817;;;;;;;:::o;6639:468::-;6704:6;6712;6761:2;6749:9;6740:7;6736:23;6732:32;6729:2;;;6767:79;;:::i;:::-;6729:2;6887:1;6912:53;6957:7;6948:6;6937:9;6933:22;6912:53;:::i;:::-;6902:63;;6858:117;7014:2;7040:50;7082:7;7073:6;7062:9;7058:22;7040:50;:::i;:::-;7030:60;;6985:115;6719:388;;;;;:::o;7113:474::-;7181:6;7189;7238:2;7226:9;7217:7;7213:23;7209:32;7206:2;;;7244:79;;:::i;:::-;7206:2;7364:1;7389:53;7434:7;7425:6;7414:9;7410:22;7389:53;:::i;:::-;7379:63;;7335:117;7491:2;7517:53;7562:7;7553:6;7542:9;7538:22;7517:53;:::i;:::-;7507:63;;7462:118;7196:391;;;;;:::o;7593:554::-;7688:6;7737:2;7725:9;7716:7;7712:23;7708:32;7705:2;;;7743:79;;:::i;:::-;7705:2;7884:1;7873:9;7869:17;7863:24;7914:18;7906:6;7903:30;7900:2;;;7936:79;;:::i;:::-;7900:2;8041:89;8122:7;8113:6;8102:9;8098:22;8041:89;:::i;:::-;8031:99;;7834:306;7695:452;;;;:::o;8153:323::-;8209:6;8258:2;8246:9;8237:7;8233:23;8229:32;8226:2;;;8264:79;;:::i;:::-;8226:2;8384:1;8409:50;8451:7;8442:6;8431:9;8427:22;8409:50;:::i;:::-;8399:60;;8355:114;8216:260;;;;:::o;8482:345::-;8549:6;8598:2;8586:9;8577:7;8573:23;8569:32;8566:2;;;8604:79;;:::i;:::-;8566:2;8724:1;8749:61;8802:7;8793:6;8782:9;8778:22;8749:61;:::i;:::-;8739:71;;8695:125;8556:271;;;;:::o;8833:327::-;8891:6;8940:2;8928:9;8919:7;8915:23;8911:32;8908:2;;;8946:79;;:::i;:::-;8908:2;9066:1;9091:52;9135:7;9126:6;9115:9;9111:22;9091:52;:::i;:::-;9081:62;;9037:116;8898:262;;;;:::o;9166:349::-;9235:6;9284:2;9272:9;9263:7;9259:23;9255:32;9252:2;;;9290:79;;:::i;:::-;9252:2;9410:1;9435:63;9490:7;9481:6;9470:9;9466:22;9435:63;:::i;:::-;9425:73;;9381:127;9242:273;;;;:::o;9521:509::-;9590:6;9639:2;9627:9;9618:7;9614:23;9610:32;9607:2;;;9645:79;;:::i;:::-;9607:2;9793:1;9782:9;9778:17;9765:31;9823:18;9815:6;9812:30;9809:2;;;9845:79;;:::i;:::-;9809:2;9950:63;10005:7;9996:6;9985:9;9981:22;9950:63;:::i;:::-;9940:73;;9736:287;9597:433;;;;:::o;10036:329::-;10095:6;10144:2;10132:9;10123:7;10119:23;10115:32;10112:2;;;10150:79;;:::i;:::-;10112:2;10270:1;10295:53;10340:7;10331:6;10320:9;10316:22;10295:53;:::i;:::-;10285:63;;10241:117;10102:263;;;;:::o;10371:351::-;10441:6;10490:2;10478:9;10469:7;10465:23;10461:32;10458:2;;;10496:79;;:::i;:::-;10458:2;10616:1;10641:64;10697:7;10688:6;10677:9;10673:22;10641:64;:::i;:::-;10631:74;;10587:128;10448:274;;;;:::o;10728:474::-;10796:6;10804;10853:2;10841:9;10832:7;10828:23;10824:32;10821:2;;;10859:79;;:::i;:::-;10821:2;10979:1;11004:53;11049:7;11040:6;11029:9;11025:22;11004:53;:::i;:::-;10994:63;;10950:117;11106:2;11132:53;11177:7;11168:6;11157:9;11153:22;11132:53;:::i;:::-;11122:63;;11077:118;10811:391;;;;;:::o;11208:613::-;11282:6;11290;11298;11347:2;11335:9;11326:7;11322:23;11318:32;11315:2;;;11353:79;;:::i;:::-;11315:2;11473:1;11498:53;11543:7;11534:6;11523:9;11519:22;11498:53;:::i;:::-;11488:63;;11444:117;11600:2;11626:53;11671:7;11662:6;11651:9;11647:22;11626:53;:::i;:::-;11616:63;;11571:118;11728:2;11754:50;11796:7;11787:6;11776:9;11772:22;11754:50;:::i;:::-;11744:60;;11699:115;11305:516;;;;;:::o;11827:619::-;11904:6;11912;11920;11969:2;11957:9;11948:7;11944:23;11940:32;11937:2;;;11975:79;;:::i;:::-;11937:2;12095:1;12120:53;12165:7;12156:6;12145:9;12141:22;12120:53;:::i;:::-;12110:63;;12066:117;12222:2;12248:53;12293:7;12284:6;12273:9;12269:22;12248:53;:::i;:::-;12238:63;;12193:118;12350:2;12376:53;12421:7;12412:6;12401:9;12397:22;12376:53;:::i;:::-;12366:63;;12321:118;11927:519;;;;;:::o;12452:179::-;12521:10;12542:46;12584:3;12576:6;12542:46;:::i;:::-;12620:4;12615:3;12611:14;12597:28;;12532:99;;;;:::o;12637:108::-;12714:24;12732:5;12714:24;:::i;:::-;12709:3;12702:37;12692:53;;:::o;12751:118::-;12838:24;12856:5;12838:24;:::i;:::-;12833:3;12826:37;12816:53;;:::o;12905:732::-;13024:3;13053:54;13101:5;13053:54;:::i;:::-;13123:86;13202:6;13197:3;13123:86;:::i;:::-;13116:93;;13233:56;13283:5;13233:56;:::i;:::-;13312:7;13343:1;13328:284;13353:6;13350:1;13347:13;13328:284;;;13429:6;13423:13;13456:63;13515:3;13500:13;13456:63;:::i;:::-;13449:70;;13542:60;13595:6;13542:60;:::i;:::-;13532:70;;13388:224;13375:1;13372;13368:9;13363:14;;13328:284;;;13332:14;13628:3;13621:10;;13029:608;;;;;;;:::o;13643:109::-;13724:21;13739:5;13724:21;:::i;:::-;13719:3;13712:34;13702:50;;:::o;13758:360::-;13844:3;13872:38;13904:5;13872:38;:::i;:::-;13926:70;13989:6;13984:3;13926:70;:::i;:::-;13919:77;;14005:52;14050:6;14045:3;14038:4;14031:5;14027:16;14005:52;:::i;:::-;14082:29;14104:6;14082:29;:::i;:::-;14077:3;14073:39;14066:46;;13848:270;;;;;:::o;14124:364::-;14212:3;14240:39;14273:5;14240:39;:::i;:::-;14295:71;14359:6;14354:3;14295:71;:::i;:::-;14288:78;;14375:52;14420:6;14415:3;14408:4;14401:5;14397:16;14375:52;:::i;:::-;14452:29;14474:6;14452:29;:::i;:::-;14447:3;14443:39;14436:46;;14216:272;;;;;:::o;14494:377::-;14600:3;14628:39;14661:5;14628:39;:::i;:::-;14683:89;14765:6;14760:3;14683:89;:::i;:::-;14676:96;;14781:52;14826:6;14821:3;14814:4;14807:5;14803:16;14781:52;:::i;:::-;14858:6;14853:3;14849:16;14842:23;;14604:267;;;;;:::o;14877:366::-;15019:3;15040:67;15104:2;15099:3;15040:67;:::i;:::-;15033:74;;15116:93;15205:3;15116:93;:::i;:::-;15234:2;15229:3;15225:12;15218:19;;15023:220;;;:::o;15249:366::-;15391:3;15412:67;15476:2;15471:3;15412:67;:::i;:::-;15405:74;;15488:93;15577:3;15488:93;:::i;:::-;15606:2;15601:3;15597:12;15590:19;;15395:220;;;:::o;15621:366::-;15763:3;15784:67;15848:2;15843:3;15784:67;:::i;:::-;15777:74;;15860:93;15949:3;15860:93;:::i;:::-;15978:2;15973:3;15969:12;15962:19;;15767:220;;;:::o;15993:366::-;16135:3;16156:67;16220:2;16215:3;16156:67;:::i;:::-;16149:74;;16232:93;16321:3;16232:93;:::i;:::-;16350:2;16345:3;16341:12;16334:19;;16139:220;;;:::o;16365:366::-;16507:3;16528:67;16592:2;16587:3;16528:67;:::i;:::-;16521:74;;16604:93;16693:3;16604:93;:::i;:::-;16722:2;16717:3;16713:12;16706:19;;16511:220;;;:::o;16737:366::-;16879:3;16900:67;16964:2;16959:3;16900:67;:::i;:::-;16893:74;;16976:93;17065:3;16976:93;:::i;:::-;17094:2;17089:3;17085:12;17078:19;;16883:220;;;:::o;17109:366::-;17251:3;17272:67;17336:2;17331:3;17272:67;:::i;:::-;17265:74;;17348:93;17437:3;17348:93;:::i;:::-;17466:2;17461:3;17457:12;17450:19;;17255:220;;;:::o;17481:366::-;17623:3;17644:67;17708:2;17703:3;17644:67;:::i;:::-;17637:74;;17720:93;17809:3;17720:93;:::i;:::-;17838:2;17833:3;17829:12;17822:19;;17627:220;;;:::o;17853:366::-;17995:3;18016:67;18080:2;18075:3;18016:67;:::i;:::-;18009:74;;18092:93;18181:3;18092:93;:::i;:::-;18210:2;18205:3;18201:12;18194:19;;17999:220;;;:::o;18225:366::-;18367:3;18388:67;18452:2;18447:3;18388:67;:::i;:::-;18381:74;;18464:93;18553:3;18464:93;:::i;:::-;18582:2;18577:3;18573:12;18566:19;;18371:220;;;:::o;18597:366::-;18739:3;18760:67;18824:2;18819:3;18760:67;:::i;:::-;18753:74;;18836:93;18925:3;18836:93;:::i;:::-;18954:2;18949:3;18945:12;18938:19;;18743:220;;;:::o;18969:366::-;19111:3;19132:67;19196:2;19191:3;19132:67;:::i;:::-;19125:74;;19208:93;19297:3;19208:93;:::i;:::-;19326:2;19321:3;19317:12;19310:19;;19115:220;;;:::o;19341:366::-;19483:3;19504:67;19568:2;19563:3;19504:67;:::i;:::-;19497:74;;19580:93;19669:3;19580:93;:::i;:::-;19698:2;19693:3;19689:12;19682:19;;19487:220;;;:::o;19713:366::-;19855:3;19876:67;19940:2;19935:3;19876:67;:::i;:::-;19869:74;;19952:93;20041:3;19952:93;:::i;:::-;20070:2;20065:3;20061:12;20054:19;;19859:220;;;:::o;20085:366::-;20227:3;20248:67;20312:2;20307:3;20248:67;:::i;:::-;20241:74;;20324:93;20413:3;20324:93;:::i;:::-;20442:2;20437:3;20433:12;20426:19;;20231:220;;;:::o;20457:366::-;20599:3;20620:67;20684:2;20679:3;20620:67;:::i;:::-;20613:74;;20696:93;20785:3;20696:93;:::i;:::-;20814:2;20809:3;20805:12;20798:19;;20603:220;;;:::o;20829:366::-;20971:3;20992:67;21056:2;21051:3;20992:67;:::i;:::-;20985:74;;21068:93;21157:3;21068:93;:::i;:::-;21186:2;21181:3;21177:12;21170:19;;20975:220;;;:::o;21201:366::-;21343:3;21364:67;21428:2;21423:3;21364:67;:::i;:::-;21357:74;;21440:93;21529:3;21440:93;:::i;:::-;21558:2;21553:3;21549:12;21542:19;;21347:220;;;:::o;21573:366::-;21715:3;21736:67;21800:2;21795:3;21736:67;:::i;:::-;21729:74;;21812:93;21901:3;21812:93;:::i;:::-;21930:2;21925:3;21921:12;21914:19;;21719:220;;;:::o;21945:366::-;22087:3;22108:67;22172:2;22167:3;22108:67;:::i;:::-;22101:74;;22184:93;22273:3;22184:93;:::i;:::-;22302:2;22297:3;22293:12;22286:19;;22091:220;;;:::o;22317:366::-;22459:3;22480:67;22544:2;22539:3;22480:67;:::i;:::-;22473:74;;22556:93;22645:3;22556:93;:::i;:::-;22674:2;22669:3;22665:12;22658:19;;22463:220;;;:::o;22689:366::-;22831:3;22852:67;22916:2;22911:3;22852:67;:::i;:::-;22845:74;;22928:93;23017:3;22928:93;:::i;:::-;23046:2;23041:3;23037:12;23030:19;;22835:220;;;:::o;23061:398::-;23220:3;23241:83;23322:1;23317:3;23241:83;:::i;:::-;23234:90;;23333:93;23422:3;23333:93;:::i;:::-;23451:1;23446:3;23442:11;23435:18;;23224:235;;;:::o;23465:366::-;23607:3;23628:67;23692:2;23687:3;23628:67;:::i;:::-;23621:74;;23704:93;23793:3;23704:93;:::i;:::-;23822:2;23817:3;23813:12;23806:19;;23611:220;;;:::o;23837:366::-;23979:3;24000:67;24064:2;24059:3;24000:67;:::i;:::-;23993:74;;24076:93;24165:3;24076:93;:::i;:::-;24194:2;24189:3;24185:12;24178:19;;23983:220;;;:::o;24209:366::-;24351:3;24372:67;24436:2;24431:3;24372:67;:::i;:::-;24365:74;;24448:93;24537:3;24448:93;:::i;:::-;24566:2;24561:3;24557:12;24550:19;;24355:220;;;:::o;24581:366::-;24723:3;24744:67;24808:2;24803:3;24744:67;:::i;:::-;24737:74;;24820:93;24909:3;24820:93;:::i;:::-;24938:2;24933:3;24929:12;24922:19;;24727:220;;;:::o;24953:118::-;25040:24;25058:5;25040:24;:::i;:::-;25035:3;25028:37;25018:53;;:::o;25077:435::-;25257:3;25279:95;25370:3;25361:6;25279:95;:::i;:::-;25272:102;;25391:95;25482:3;25473:6;25391:95;:::i;:::-;25384:102;;25503:3;25496:10;;25261:251;;;;;:::o;25518:379::-;25702:3;25724:147;25867:3;25724:147;:::i;:::-;25717:154;;25888:3;25881:10;;25706:191;;;:::o;25903:222::-;25996:4;26034:2;26023:9;26019:18;26011:26;;26047:71;26115:1;26104:9;26100:17;26091:6;26047:71;:::i;:::-;26001:124;;;;:::o;26131:442::-;26280:4;26318:2;26307:9;26303:18;26295:26;;26331:71;26399:1;26388:9;26384:17;26375:6;26331:71;:::i;:::-;26412:72;26480:2;26469:9;26465:18;26456:6;26412:72;:::i;:::-;26494;26562:2;26551:9;26547:18;26538:6;26494:72;:::i;:::-;26285:288;;;;;;:::o;26579:640::-;26774:4;26812:3;26801:9;26797:19;26789:27;;26826:71;26894:1;26883:9;26879:17;26870:6;26826:71;:::i;:::-;26907:72;26975:2;26964:9;26960:18;26951:6;26907:72;:::i;:::-;26989;27057:2;27046:9;27042:18;27033:6;26989:72;:::i;:::-;27108:9;27102:4;27098:20;27093:2;27082:9;27078:18;27071:48;27136:76;27207:4;27198:6;27136:76;:::i;:::-;27128:84;;26779:440;;;;;;;:::o;27225:210::-;27312:4;27350:2;27339:9;27335:18;27327:26;;27363:65;27425:1;27414:9;27410:17;27401:6;27363:65;:::i;:::-;27317:118;;;;:::o;27441:313::-;27554:4;27592:2;27581:9;27577:18;27569:26;;27641:9;27635:4;27631:20;27627:1;27616:9;27612:17;27605:47;27669:78;27742:4;27733:6;27669:78;:::i;:::-;27661:86;;27559:195;;;;:::o;27760:419::-;27926:4;27964:2;27953:9;27949:18;27941:26;;28013:9;28007:4;28003:20;27999:1;27988:9;27984:17;27977:47;28041:131;28167:4;28041:131;:::i;:::-;28033:139;;27931:248;;;:::o;28185:419::-;28351:4;28389:2;28378:9;28374:18;28366:26;;28438:9;28432:4;28428:20;28424:1;28413:9;28409:17;28402:47;28466:131;28592:4;28466:131;:::i;:::-;28458:139;;28356:248;;;:::o;28610:419::-;28776:4;28814:2;28803:9;28799:18;28791:26;;28863:9;28857:4;28853:20;28849:1;28838:9;28834:17;28827:47;28891:131;29017:4;28891:131;:::i;:::-;28883:139;;28781:248;;;:::o;29035:419::-;29201:4;29239:2;29228:9;29224:18;29216:26;;29288:9;29282:4;29278:20;29274:1;29263:9;29259:17;29252:47;29316:131;29442:4;29316:131;:::i;:::-;29308:139;;29206:248;;;:::o;29460:419::-;29626:4;29664:2;29653:9;29649:18;29641:26;;29713:9;29707:4;29703:20;29699:1;29688:9;29684:17;29677:47;29741:131;29867:4;29741:131;:::i;:::-;29733:139;;29631:248;;;:::o;29885:419::-;30051:4;30089:2;30078:9;30074:18;30066:26;;30138:9;30132:4;30128:20;30124:1;30113:9;30109:17;30102:47;30166:131;30292:4;30166:131;:::i;:::-;30158:139;;30056:248;;;:::o;30310:419::-;30476:4;30514:2;30503:9;30499:18;30491:26;;30563:9;30557:4;30553:20;30549:1;30538:9;30534:17;30527:47;30591:131;30717:4;30591:131;:::i;:::-;30583:139;;30481:248;;;:::o;30735:419::-;30901:4;30939:2;30928:9;30924:18;30916:26;;30988:9;30982:4;30978:20;30974:1;30963:9;30959:17;30952:47;31016:131;31142:4;31016:131;:::i;:::-;31008:139;;30906:248;;;:::o;31160:419::-;31326:4;31364:2;31353:9;31349:18;31341:26;;31413:9;31407:4;31403:20;31399:1;31388:9;31384:17;31377:47;31441:131;31567:4;31441:131;:::i;:::-;31433:139;;31331:248;;;:::o;31585:419::-;31751:4;31789:2;31778:9;31774:18;31766:26;;31838:9;31832:4;31828:20;31824:1;31813:9;31809:17;31802:47;31866:131;31992:4;31866:131;:::i;:::-;31858:139;;31756:248;;;:::o;32010:419::-;32176:4;32214:2;32203:9;32199:18;32191:26;;32263:9;32257:4;32253:20;32249:1;32238:9;32234:17;32227:47;32291:131;32417:4;32291:131;:::i;:::-;32283:139;;32181:248;;;:::o;32435:419::-;32601:4;32639:2;32628:9;32624:18;32616:26;;32688:9;32682:4;32678:20;32674:1;32663:9;32659:17;32652:47;32716:131;32842:4;32716:131;:::i;:::-;32708:139;;32606:248;;;:::o;32860:419::-;33026:4;33064:2;33053:9;33049:18;33041:26;;33113:9;33107:4;33103:20;33099:1;33088:9;33084:17;33077:47;33141:131;33267:4;33141:131;:::i;:::-;33133:139;;33031:248;;;:::o;33285:419::-;33451:4;33489:2;33478:9;33474:18;33466:26;;33538:9;33532:4;33528:20;33524:1;33513:9;33509:17;33502:47;33566:131;33692:4;33566:131;:::i;:::-;33558:139;;33456:248;;;:::o;33710:419::-;33876:4;33914:2;33903:9;33899:18;33891:26;;33963:9;33957:4;33953:20;33949:1;33938:9;33934:17;33927:47;33991:131;34117:4;33991:131;:::i;:::-;33983:139;;33881:248;;;:::o;34135:419::-;34301:4;34339:2;34328:9;34324:18;34316:26;;34388:9;34382:4;34378:20;34374:1;34363:9;34359:17;34352:47;34416:131;34542:4;34416:131;:::i;:::-;34408:139;;34306:248;;;:::o;34560:419::-;34726:4;34764:2;34753:9;34749:18;34741:26;;34813:9;34807:4;34803:20;34799:1;34788:9;34784:17;34777:47;34841:131;34967:4;34841:131;:::i;:::-;34833:139;;34731:248;;;:::o;34985:419::-;35151:4;35189:2;35178:9;35174:18;35166:26;;35238:9;35232:4;35228:20;35224:1;35213:9;35209:17;35202:47;35266:131;35392:4;35266:131;:::i;:::-;35258:139;;35156:248;;;:::o;35410:419::-;35576:4;35614:2;35603:9;35599:18;35591:26;;35663:9;35657:4;35653:20;35649:1;35638:9;35634:17;35627:47;35691:131;35817:4;35691:131;:::i;:::-;35683:139;;35581:248;;;:::o;35835:419::-;36001:4;36039:2;36028:9;36024:18;36016:26;;36088:9;36082:4;36078:20;36074:1;36063:9;36059:17;36052:47;36116:131;36242:4;36116:131;:::i;:::-;36108:139;;36006:248;;;:::o;36260:419::-;36426:4;36464:2;36453:9;36449:18;36441:26;;36513:9;36507:4;36503:20;36499:1;36488:9;36484:17;36477:47;36541:131;36667:4;36541:131;:::i;:::-;36533:139;;36431:248;;;:::o;36685:419::-;36851:4;36889:2;36878:9;36874:18;36866:26;;36938:9;36932:4;36928:20;36924:1;36913:9;36909:17;36902:47;36966:131;37092:4;36966:131;:::i;:::-;36958:139;;36856:248;;;:::o;37110:419::-;37276:4;37314:2;37303:9;37299:18;37291:26;;37363:9;37357:4;37353:20;37349:1;37338:9;37334:17;37327:47;37391:131;37517:4;37391:131;:::i;:::-;37383:139;;37281:248;;;:::o;37535:419::-;37701:4;37739:2;37728:9;37724:18;37716:26;;37788:9;37782:4;37778:20;37774:1;37763:9;37759:17;37752:47;37816:131;37942:4;37816:131;:::i;:::-;37808:139;;37706:248;;;:::o;37960:419::-;38126:4;38164:2;38153:9;38149:18;38141:26;;38213:9;38207:4;38203:20;38199:1;38188:9;38184:17;38177:47;38241:131;38367:4;38241:131;:::i;:::-;38233:139;;38131:248;;;:::o;38385:419::-;38551:4;38589:2;38578:9;38574:18;38566:26;;38638:9;38632:4;38628:20;38624:1;38613:9;38609:17;38602:47;38666:131;38792:4;38666:131;:::i;:::-;38658:139;;38556:248;;;:::o;38810:222::-;38903:4;38941:2;38930:9;38926:18;38918:26;;38954:71;39022:1;39011:9;39007:17;38998:6;38954:71;:::i;:::-;38908:124;;;;:::o;39038:483::-;39209:4;39247:2;39236:9;39232:18;39224:26;;39260:71;39328:1;39317:9;39313:17;39304:6;39260:71;:::i;:::-;39378:9;39372:4;39368:20;39363:2;39352:9;39348:18;39341:48;39406:108;39509:4;39500:6;39406:108;:::i;:::-;39398:116;;39214:307;;;;;:::o;39527:332::-;39648:4;39686:2;39675:9;39671:18;39663:26;;39699:71;39767:1;39756:9;39752:17;39743:6;39699:71;:::i;:::-;39780:72;39848:2;39837:9;39833:18;39824:6;39780:72;:::i;:::-;39653:206;;;;;:::o;39865:129::-;39899:6;39926:20;;:::i;:::-;39916:30;;39955:33;39983:4;39975:6;39955:33;:::i;:::-;39906:88;;;:::o;40000:75::-;40033:6;40066:2;40060:9;40050:19;;40040:35;:::o;40081:311::-;40158:4;40248:18;40240:6;40237:30;40234:2;;;40270:18;;:::i;:::-;40234:2;40320:4;40312:6;40308:17;40300:25;;40380:4;40374;40370:15;40362:23;;40163:229;;;:::o;40398:307::-;40459:4;40549:18;40541:6;40538:30;40535:2;;;40571:18;;:::i;:::-;40535:2;40609:29;40631:6;40609:29;:::i;:::-;40601:37;;40693:4;40687;40683:15;40675:23;;40464:241;;;:::o;40711:308::-;40773:4;40863:18;40855:6;40852:30;40849:2;;;40885:18;;:::i;:::-;40849:2;40923:29;40945:6;40923:29;:::i;:::-;40915:37;;41007:4;41001;40997:15;40989:23;;40778:241;;;:::o;41025:132::-;41092:4;41115:3;41107:11;;41145:4;41140:3;41136:14;41128:22;;41097:60;;;:::o;41163:114::-;41230:6;41264:5;41258:12;41248:22;;41237:40;;;:::o;41283:98::-;41334:6;41368:5;41362:12;41352:22;;41341:40;;;:::o;41387:99::-;41439:6;41473:5;41467:12;41457:22;;41446:40;;;:::o;41492:113::-;41562:4;41594;41589:3;41585:14;41577:22;;41567:38;;;:::o;41611:184::-;41710:11;41744:6;41739:3;41732:19;41784:4;41779:3;41775:14;41760:29;;41722:73;;;;:::o;41801:168::-;41884:11;41918:6;41913:3;41906:19;41958:4;41953:3;41949:14;41934:29;;41896:73;;;;:::o;41975:147::-;42076:11;42113:3;42098:18;;42088:34;;;;:::o;42128:169::-;42212:11;42246:6;42241:3;42234:19;42286:4;42281:3;42277:14;42262:29;;42224:73;;;;:::o;42303:148::-;42405:11;42442:3;42427:18;;42417:34;;;;:::o;42457:305::-;42497:3;42516:20;42534:1;42516:20;:::i;:::-;42511:25;;42550:20;42568:1;42550:20;:::i;:::-;42545:25;;42704:1;42636:66;42632:74;42629:1;42626:81;42623:2;;;42710:18;;:::i;:::-;42623:2;42754:1;42751;42747:9;42740:16;;42501:261;;;;:::o;42768:185::-;42808:1;42825:20;42843:1;42825:20;:::i;:::-;42820:25;;42859:20;42877:1;42859:20;:::i;:::-;42854:25;;42898:1;42888:2;;42903:18;;:::i;:::-;42888:2;42945:1;42942;42938:9;42933:14;;42810:143;;;;:::o;42959:348::-;42999:7;43022:20;43040:1;43022:20;:::i;:::-;43017:25;;43056:20;43074:1;43056:20;:::i;:::-;43051:25;;43244:1;43176:66;43172:74;43169:1;43166:81;43161:1;43154:9;43147:17;43143:105;43140:2;;;43251:18;;:::i;:::-;43140:2;43299:1;43296;43292:9;43281:20;;43007:300;;;;:::o;43313:191::-;43353:4;43373:20;43391:1;43373:20;:::i;:::-;43368:25;;43407:20;43425:1;43407:20;:::i;:::-;43402:25;;43446:1;43443;43440:8;43437:2;;;43451:18;;:::i;:::-;43437:2;43496:1;43493;43489:9;43481:17;;43358:146;;;;:::o;43510:96::-;43547:7;43576:24;43594:5;43576:24;:::i;:::-;43565:35;;43555:51;;;:::o;43612:90::-;43646:7;43689:5;43682:13;43675:21;43664:32;;43654:48;;;:::o;43708:149::-;43744:7;43784:66;43777:5;43773:78;43762:89;;43752:105;;;:::o;43863:126::-;43900:7;43940:42;43933:5;43929:54;43918:65;;43908:81;;;:::o;43995:77::-;44032:7;44061:5;44050:16;;44040:32;;;:::o;44078:154::-;44162:6;44157:3;44152;44139:30;44224:1;44215:6;44210:3;44206:16;44199:27;44129:103;;;:::o;44238:307::-;44306:1;44316:113;44330:6;44327:1;44324:13;44316:113;;;44415:1;44410:3;44406:11;44400:18;44396:1;44391:3;44387:11;44380:39;44352:2;44349:1;44345:10;44340:15;;44316:113;;;44447:6;44444:1;44441:13;44438:2;;;44527:1;44518:6;44513:3;44509:16;44502:27;44438:2;44287:258;;;;:::o;44551:320::-;44595:6;44632:1;44626:4;44622:12;44612:22;;44679:1;44673:4;44669:12;44700:18;44690:2;;44756:4;44748:6;44744:17;44734:27;;44690:2;44818;44810:6;44807:14;44787:18;44784:38;44781:2;;;44837:18;;:::i;:::-;44781:2;44602:269;;;;:::o;44877:281::-;44960:27;44982:4;44960:27;:::i;:::-;44952:6;44948:40;45090:6;45078:10;45075:22;45054:18;45042:10;45039:34;45036:62;45033:2;;;45101:18;;:::i;:::-;45033:2;45141:10;45137:2;45130:22;44920:238;;;:::o;45164:233::-;45203:3;45226:24;45244:5;45226:24;:::i;:::-;45217:33;;45272:66;45265:5;45262:77;45259:2;;;45342:18;;:::i;:::-;45259:2;45389:1;45382:5;45378:13;45371:20;;45207:190;;;:::o;45403:176::-;45435:1;45452:20;45470:1;45452:20;:::i;:::-;45447:25;;45486:20;45504:1;45486:20;:::i;:::-;45481:25;;45525:1;45515:2;;45530:18;;:::i;:::-;45515:2;45571:1;45568;45564:9;45559:14;;45437:142;;;;:::o;45585:180::-;45633:77;45630:1;45623:88;45730:4;45727:1;45720:15;45754:4;45751:1;45744:15;45771:180;45819:77;45816:1;45809:88;45916:4;45913:1;45906:15;45940:4;45937:1;45930:15;45957:180;46005:77;46002:1;45995:88;46102:4;46099:1;46092:15;46126:4;46123:1;46116:15;46143:180;46191:77;46188:1;46181:88;46288:4;46285:1;46278:15;46312:4;46309:1;46302:15;46329:180;46377:77;46374:1;46367:88;46474:4;46471:1;46464:15;46498:4;46495:1;46488:15;46515:180;46563:77;46560:1;46553:88;46660:4;46657:1;46650:15;46684:4;46681:1;46674:15;46701:117;46810:1;46807;46800:12;46824:117;46933:1;46930;46923:12;46947:117;47056:1;47053;47046:12;47070:117;47179:1;47176;47169:12;47193:117;47302:1;47299;47292:12;47316:102;47357:6;47408:2;47404:7;47399:2;47392:5;47388:14;47384:28;47374:38;;47364:54;;;:::o;47424:230::-;47564:34;47560:1;47552:6;47548:14;47541:58;47633:13;47628:2;47620:6;47616:15;47609:38;47530:124;:::o;47660:221::-;47800:34;47796:1;47788:6;47784:14;47777:58;47869:4;47864:2;47856:6;47852:15;47845:29;47766:115;:::o;47887:230::-;48027:34;48023:1;48015:6;48011:14;48004:58;48096:13;48091:2;48083:6;48079:15;48072:38;47993:124;:::o;48123:237::-;48263:34;48259:1;48251:6;48247:14;48240:58;48332:20;48327:2;48319:6;48315:15;48308:45;48229:131;:::o;48366:225::-;48506:34;48502:1;48494:6;48490:14;48483:58;48575:8;48570:2;48562:6;48558:15;48551:33;48472:119;:::o;48597:224::-;48737:34;48733:1;48725:6;48721:14;48714:58;48806:7;48801:2;48793:6;48789:15;48782:32;48703:118;:::o;48827:178::-;48967:30;48963:1;48955:6;48951:14;48944:54;48933:72;:::o;49011:223::-;49151:34;49147:1;49139:6;49135:14;49128:58;49220:6;49215:2;49207:6;49203:15;49196:31;49117:117;:::o;49240:175::-;49380:27;49376:1;49368:6;49364:14;49357:51;49346:69;:::o;49421:225::-;49561:34;49557:1;49549:6;49545:14;49538:58;49630:8;49625:2;49617:6;49613:15;49606:33;49527:119;:::o;49652:235::-;49792:34;49788:1;49780:6;49776:14;49769:58;49861:18;49856:2;49848:6;49844:15;49837:43;49758:129;:::o;49893:226::-;50033:34;50029:1;50021:6;50017:14;50010:58;50102:9;50097:2;50089:6;50085:15;50078:34;49999:120;:::o;50125:228::-;50265:34;50261:1;50253:6;50249:14;50242:58;50334:11;50329:2;50321:6;50317:15;50310:36;50231:122;:::o;50359:222::-;50499:34;50495:1;50487:6;50483:14;50476:58;50568:5;50563:2;50555:6;50551:15;50544:30;50465:116;:::o;50587:236::-;50727:34;50723:1;50715:6;50711:14;50704:58;50796:19;50791:2;50783:6;50779:15;50772:44;50693:130;:::o;50829:249::-;50969:34;50965:1;50957:6;50953:14;50946:58;51038:32;51033:2;51025:6;51021:15;51014:57;50935:143;:::o;51084:182::-;51224:34;51220:1;51212:6;51208:14;51201:58;51190:76;:::o;51272:177::-;51412:29;51408:1;51400:6;51396:14;51389:53;51378:71;:::o;51455:182::-;51595:34;51591:1;51583:6;51579:14;51572:58;51561:76;:::o;51643:178::-;51783:30;51779:1;51771:6;51767:14;51760:54;51749:72;:::o;51827:174::-;51967:26;51963:1;51955:6;51951:14;51944:50;51933:68;:::o;52007:220::-;52147:34;52143:1;52135:6;52131:14;52124:58;52216:3;52211:2;52203:6;52199:15;52192:28;52113:114;:::o;52233:::-;52339:8;:::o;52353:237::-;52493:34;52489:1;52481:6;52477:14;52470:58;52562:20;52557:2;52549:6;52545:15;52538:45;52459:131;:::o;52596:231::-;52736:34;52732:1;52724:6;52720:14;52713:58;52805:14;52800:2;52792:6;52788:15;52781:39;52702:125;:::o;52833:172::-;52973:24;52969:1;52961:6;52957:14;52950:48;52939:66;:::o;53011:233::-;53151:34;53147:1;53139:6;53135:14;53128:58;53220:16;53215:2;53207:6;53203:15;53196:41;53117:127;:::o;53250:122::-;53323:24;53341:5;53323:24;:::i;:::-;53316:5;53313:35;53303:2;;53362:1;53359;53352:12;53303:2;53293:79;:::o;53378:116::-;53448:21;53463:5;53448:21;:::i;:::-;53441:5;53438:32;53428:2;;53484:1;53481;53474:12;53428:2;53418:76;:::o;53500:120::-;53572:23;53589:5;53572:23;:::i;:::-;53565:5;53562:34;53552:2;;53610:1;53607;53600:12;53552:2;53542:78;:::o;53626:122::-;53699:24;53717:5;53699:24;:::i;:::-;53692:5;53689:35;53679:2;;53738:1;53735;53728:12;53679:2;53669:79;:::o
Swarm Source
ipfs://b8d99ac8cdc636c9f75ca4a24c116cd7aa7b23991d87cc8d275b283f01077f8b
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.