Polygon Sponsored slots available. Book your slot here!
ERC-1155
Overview
Max Total Supply
0 MoonBSBL
Holders
122
Total Transfers
-
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
moontest_baseball
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-01-28 */ // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/[email protected]/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/[email protected]/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/[email protected]/utils/Address.sol // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/[email protected]/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/[email protected]/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/[email protected]/token/ERC1155/IERC1155Receiver.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** @dev Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. To accept the transfer, this must return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61, or its own function selector). @param operator The address which initiated the transfer (i.e. msg.sender) @param from The address which previously owned the token @param id The ID of the token being transferred @param value The amount of tokens being transferred @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** @dev Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81, or its own function selector). @param operator The address which initiated the batch transfer (i.e. msg.sender) @param from The address which previously owned the token @param ids An array containing ids of each token being transferred (order and length must match values array) @param values An array containing amounts of each token being transferred (order and length must match ids array) @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/[email protected]/token/ERC1155/IERC1155.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File: @openzeppelin/[email protected]/token/ERC1155/extensions/IERC1155MetadataURI.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol) pragma solidity ^0.8.0; /** * @dev Interface of the optional ERC1155MetadataExtension interface, as defined * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. * * _Available since v3.1._ */ interface IERC1155MetadataURI is IERC1155 { /** * @dev Returns the URI for token type `id`. * * If the `\{id\}` substring is present in the URI, it must be replaced by * clients with the actual token type ID. */ function uri(uint256 id) external view returns (string memory); } // File: @openzeppelin/[email protected]/token/ERC1155/ERC1155.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/ERC1155.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the basic standard multi-token. * See https://eips.ethereum.org/EIPS/eip-1155 * Originally based on code by Enjin: https://github.com/enjin/erc-1155 * * _Available since v3.1._ */ contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using Address for address; // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json string private _uri; /** * @dev See {_setURI}. */ constructor(string memory uri_) { _setURI(uri_); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155).interfaceId || interfaceId == type(IERC1155MetadataURI).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC1155MetadataURI-uri}. * * This implementation returns the same URI for *all* token types. It relies * on the token type ID substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * Clients calling this function must replace the `\{id\}` substring with the * actual token type ID. */ function uri(uint256) public view virtual override returns (string memory) { return _uri; } /** * @dev See {IERC1155-balanceOf}. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: balance query for the zero address"); return _balances[id][account]; } /** * @dev See {IERC1155-balanceOfBatch}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } /** * @dev See {IERC1155-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC1155-isApprovedForAll}. */ function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } /** * @dev See {IERC1155-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not owner nor approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: transfer caller is not owner nor approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); } /** * @dev Sets a new URI for all token types, by relying on the token type ID * substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * By this mechanism, any occurrence of the `\{id\}` substring in either the * URI or any of the amounts in the JSON file at said URI will be replaced by * clients with the token type ID. * * For example, the `https://token-cdn-domain/\{id\}.json` URI would be * interpreted by clients as * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json` * for token type ID 0x4cce0. * * See {uri}. * * Because these URIs cannot be meaningfully represented by the {URI} event, * this function emits no events. */ function _setURI(string memory newuri) internal virtual { _uri = newuri; } /** * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } /** * @dev Destroys `amount` tokens of token type `id` from `from` * * Requirements: * * - `from` cannot be the zero address. * - `from` must have at least `amount` tokens of token type `id`. */ function _burn( address from, uint256 id, uint256 amount ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. * * Requirements: * * - `ids` and `amounts` must have the same length. */ function _burnBatch( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Hook that is called before any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `id` and `amount` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns ( bytes4 response ) { if (response != IERC1155Receiver.onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } // File: moonshot-baseball-12343211.sol pragma solidity ^0.8.7; contract moontest_baseball is ERC1155, Ownable { // Contract name string public name = "Moonshot Baseball"; // Contract symbol string public symbol = "MoonBSBL"; uint256 public constant TOKEN_START = 1; uint256 j; constructor() public ERC1155("https://raw.githubusercontent.com/Melverk/bsbl-images/main/meta/{}.json") { for (j = TOKEN_START; j <= 270; j += 1) { //for loop example _mint(msg.sender, j, 100, ""); } } function uri(uint256 tokenID) override public view returns (string memory) { return( string(abi.encodePacked( "https://raw.githubusercontent.com/Melverk/bsbl-images/main/meta/", Strings.toString(tokenID), ".json" )) ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"TOKEN_START","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526040518060400160405280601181526020017f4d6f6f6e73686f74204261736562616c6c0000000000000000000000000000008152506004908051906020019062000051929190620006b2565b506040518060400160405280600881526020017f4d6f6f6e4253424c000000000000000000000000000000000000000000000000815250600590805190602001906200009f929190620006b2565b50348015620000ad57600080fd5b5060405180608001604052806047815260200162003cb660479139620000d9816200015d60201b60201c565b50620000fa620000ee6200017960201b60201c565b6200018160201b60201c565b60016006819055505b61010e60065411620001575762000135336006546064604051806020016040528060008152506200024760201b60201c565b6001600660008282546200014a919062000a21565b9250508190555062000103565b62000e37565b806002908051906020019062000175929190620006b2565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415620002ba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002b19062000990565b60405180910390fd5b6000620002cc6200017960201b60201c565b90506200030581600087620002e7886200040c60201b60201c565b620002f8886200040c60201b60201c565b876200048d60201b60201c565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000366919062000a21565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051620003e6929190620009b2565b60405180910390a462000405816000878787876200049560201b60201c565b5050505050565b60606000600167ffffffffffffffff8111156200042e576200042d62000c17565b5b6040519080825280602002602001820160405280156200045d5781602001602082028036833780820191505090505b509050828160008151811062000478576200047762000be8565b5b60200260200101818152505080915050919050565b505050505050565b620004c18473ffffffffffffffffffffffffffffffffffffffff166200069f60201b62000a7c1760201c565b1562000697578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016200050a959493929190620008c4565b602060405180830381600087803b1580156200052557600080fd5b505af19250505080156200055957506040513d601f19601f8201168201806040525081019062000556919062000779565b60015b6200060b576200056862000c46565b806308c379a01415620005cc57506200058062000d7b565b806200058d5750620005ce565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c3919062000928565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000602906200094c565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161462000695576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200068c906200096e565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054620006c09062000b1e565b90600052602060002090601f016020900481019282620006e4576000855562000730565b82601f10620006ff57805160ff191683800117855562000730565b8280016001018555821562000730579182015b828111156200072f57825182559160200191906001019062000712565b5b5090506200073f919062000743565b5090565b5b808211156200075e57600081600090555060010162000744565b5090565b600081519050620007738162000e1d565b92915050565b60006020828403121562000792576200079162000c6b565b5b6000620007a28482850162000762565b91505092915050565b620007b68162000a7e565b82525050565b6000620007c982620009e9565b620007d58185620009ff565b9350620007e781856020860162000ae8565b620007f28162000c70565b840191505092915050565b60006200080a82620009f4565b62000816818562000a10565b93506200082881856020860162000ae8565b620008338162000c70565b840191505092915050565b60006200084d60348362000a10565b91506200085a8262000c8e565b604082019050919050565b60006200087460288362000a10565b9150620008818262000cdd565b604082019050919050565b60006200089b60218362000a10565b9150620008a88262000d2c565b604082019050919050565b620008be8162000ade565b82525050565b600060a082019050620008db6000830188620007ab565b620008ea6020830187620007ab565b620008f96040830186620008b3565b620009086060830185620008b3565b81810360808301526200091c8184620007bc565b90509695505050505050565b60006020820190508181036000830152620009448184620007fd565b905092915050565b6000602082019050818103600083015262000967816200083e565b9050919050565b60006020820190508181036000830152620009898162000865565b9050919050565b60006020820190508181036000830152620009ab816200088c565b9050919050565b6000604082019050620009c96000830185620008b3565b620009d86020830184620008b3565b9392505050565b6000604051905090565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600062000a2e8262000ade565b915062000a3b8362000ade565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000a735762000a7262000b8a565b5b828201905092915050565b600062000a8b8262000abe565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000b0857808201518184015260208101905062000aeb565b8381111562000b18576000848401525b50505050565b6000600282049050600182168062000b3757607f821691505b6020821081141562000b4e5762000b4d62000bb9565b5b50919050565b62000b5f8262000c70565b810181811067ffffffffffffffff8211171562000b815762000b8062000c17565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111562000c685760046000803e62000c6560005162000c81565b90505b90565b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d101562000d8d5762000e1a565b62000d97620009df565b60043d036004823e80513d602482011167ffffffffffffffff8211171562000dc157505062000e1a565b808201805167ffffffffffffffff81111562000de1575050505062000e1a565b80602083010160043d03850181111562000e0057505050505062000e1a565b62000e118260200185018662000b54565b82955050505050505b90565b62000e288162000a92565b811462000e3457600080fd5b50565b612e6f8062000e476000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c80638da5cb5b1161008c578063be9ea71911610066578063be9ea7191461024a578063e985e9c514610268578063f242432a14610298578063f2fde38b146102b4576100e9565b80638da5cb5b146101f257806395d89b4114610210578063a22cb4651461022e576100e9565b80630e89341c116100c85780630e89341c1461016c5780632eb2c2d61461019c5780634e1273f4146101b8578063715018a6146101e8576100e9565b8062fdd58e146100ee57806301ffc9a71461011e57806306fdde031461014e575b600080fd5b61010860048036038101906101039190611ca3565b6102d0565b6040516101159190612441565b60405180910390f35b61013860048036038101906101339190611d5b565b610399565b6040516101459190612284565b60405180910390f35b61015661047b565b604051610163919061229f565b60405180910390f35b61018660048036038101906101819190611db5565b610509565b604051610193919061229f565b60405180910390f35b6101b660048036038101906101b19190611afd565b61053a565b005b6101d260048036038101906101cd9190611ce3565b6105db565b6040516101df919061222b565b60405180910390f35b6101f06106f4565b005b6101fa61077c565b604051610207919061214e565b60405180910390f35b6102186107a6565b604051610225919061229f565b60405180910390f35b61024860048036038101906102439190611c63565b610834565b005b61025261084a565b60405161025f9190612441565b60405180910390f35b610282600480360381019061027d9190611abd565b61084f565b60405161028f9190612284565b60405180910390f35b6102b260048036038101906102ad9190611bcc565b6108e3565b005b6102ce60048036038101906102c99190611a90565b610984565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033890612301565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061046457507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610474575061047382610a8f565b5b9050919050565b6004805461048890612720565b80601f01602080910402602001604051908101604052809291908181526020018280546104b490612720565b80156105015780601f106104d657610100808354040283529160200191610501565b820191906000526020600020905b8154815290600101906020018083116104e457829003601f168201915b505050505081565b606061051482610af9565b6040516020016105249190612121565b6040516020818303038152906040529050919050565b610542610c5a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610588575061058785610582610c5a565b61084f565b5b6105c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105be90612381565b60405180910390fd5b6105d48585858585610c62565b5050505050565b60608151835114610621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061890612401565b60405180910390fd5b6000835167ffffffffffffffff81111561063e5761063d6128b9565b5b60405190808252806020026020018201604052801561066c5781602001602082028036833780820191505090505b50905060005b84518110156106e9576106b98582815181106106915761069061288a565b5b60200260200101518583815181106106ac576106ab61288a565b5b60200260200101516102d0565b8282815181106106cc576106cb61288a565b5b602002602001018181525050806106e290612783565b9050610672565b508091505092915050565b6106fc610c5a565b73ffffffffffffffffffffffffffffffffffffffff1661071a61077c565b73ffffffffffffffffffffffffffffffffffffffff1614610770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610767906123c1565b60405180910390fd5b61077a6000610f76565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600580546107b390612720565b80601f01602080910402602001604051908101604052809291908181526020018280546107df90612720565b801561082c5780601f106108015761010080835404028352916020019161082c565b820191906000526020600020905b81548152906001019060200180831161080f57829003601f168201915b505050505081565b61084661083f610c5a565b838361103c565b5050565b600181565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6108eb610c5a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061093157506109308561092b610c5a565b61084f565b5b610970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096790612341565b60405180910390fd5b61097d85858585856111a9565b5050505050565b61098c610c5a565b73ffffffffffffffffffffffffffffffffffffffff166109aa61077c565b73ffffffffffffffffffffffffffffffffffffffff1614610a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f7906123c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6790612321565b60405180910390fd5b610a7981610f76565b50565b600080823b905060008111915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606000821415610b41576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610c55565b600082905060005b60008214610b73578080610b5c90612783565b915050600a82610b6c9190612605565b9150610b49565b60008167ffffffffffffffff811115610b8f57610b8e6128b9565b5b6040519080825280601f01601f191660200182016040528015610bc15781602001600182028036833780820191505090505b5090505b60008514610c4e57600182610bda9190612636565b9150600a85610be991906127cc565b6030610bf591906125af565b60f81b818381518110610c0b57610c0a61288a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85610c479190612605565b9450610bc5565b8093505050505b919050565b600033905090565b8151835114610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d90612421565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90612361565b60405180910390fd5b6000610d20610c5a565b9050610d3081878787878761142b565b60005b8451811015610ee1576000858281518110610d5157610d5061288a565b5b602002602001015190506000858381518110610d7057610d6f61288a565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e08906123a1565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec691906125af565b9250508190555050505080610eda90612783565b9050610d33565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610f5892919061224d565b60405180910390a4610f6e818787878787611433565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a2906123e1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161119c9190612284565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090612361565b60405180910390fd5b6000611223610c5a565b90506112438187876112348861161a565b61123d8861161a565b8761142b565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906123a1565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138f91906125af565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161140c92919061245c565b60405180910390a4611422828888888888611694565b50505050505050565b505050505050565b6114528473ffffffffffffffffffffffffffffffffffffffff16610a7c565b15611612578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611498959493929190612169565b602060405180830381600087803b1580156114b257600080fd5b505af19250505080156114e357506040513d601f19601f820116820180604052508101906114e09190611d88565b60015b611589576114ef6128e8565b806308c379a0141561154c5750611504612d47565b8061150f575061154e565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611543919061229f565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611580906122c1565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611610576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611607906122e1565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff811115611639576116386128b9565b5b6040519080825280602002602001820160405280156116675781602001602082028036833780820191505090505b509050828160008151811061167f5761167e61288a565b5b60200260200101818152505080915050919050565b6116b38473ffffffffffffffffffffffffffffffffffffffff16610a7c565b15611873578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016116f99594939291906121d1565b602060405180830381600087803b15801561171357600080fd5b505af192505050801561174457506040513d601f19601f820116820180604052508101906117419190611d88565b60015b6117ea576117506128e8565b806308c379a014156117ad5750611765612d47565b8061177057506117af565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a4919061229f565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e1906122c1565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611871576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611868906122e1565b60405180910390fd5b505b505050505050565b600061188e611889846124aa565b612485565b905080838252602082019050828560208602820111156118b1576118b061290f565b5b60005b858110156118e157816118c7888261199d565b8452602084019350602083019250506001810190506118b4565b5050509392505050565b60006118fe6118f9846124d6565b612485565b905080838252602082019050828560208602820111156119215761192061290f565b5b60005b8581101561195157816119378882611a7b565b845260208401935060208301925050600181019050611924565b5050509392505050565b600061196e61196984612502565b612485565b90508281526020810184848401111561198a57611989612914565b5b6119958482856126de565b509392505050565b6000813590506119ac81612ddd565b92915050565b600082601f8301126119c7576119c661290a565b5b81356119d784826020860161187b565b91505092915050565b600082601f8301126119f5576119f461290a565b5b8135611a058482602086016118eb565b91505092915050565b600081359050611a1d81612df4565b92915050565b600081359050611a3281612e0b565b92915050565b600081519050611a4781612e0b565b92915050565b600082601f830112611a6257611a6161290a565b5b8135611a7284826020860161195b565b91505092915050565b600081359050611a8a81612e22565b92915050565b600060208284031215611aa657611aa561291e565b5b6000611ab48482850161199d565b91505092915050565b60008060408385031215611ad457611ad361291e565b5b6000611ae28582860161199d565b9250506020611af38582860161199d565b9150509250929050565b600080600080600060a08688031215611b1957611b1861291e565b5b6000611b278882890161199d565b9550506020611b388882890161199d565b945050604086013567ffffffffffffffff811115611b5957611b58612919565b5b611b65888289016119e0565b935050606086013567ffffffffffffffff811115611b8657611b85612919565b5b611b92888289016119e0565b925050608086013567ffffffffffffffff811115611bb357611bb2612919565b5b611bbf88828901611a4d565b9150509295509295909350565b600080600080600060a08688031215611be857611be761291e565b5b6000611bf68882890161199d565b9550506020611c078882890161199d565b9450506040611c1888828901611a7b565b9350506060611c2988828901611a7b565b925050608086013567ffffffffffffffff811115611c4a57611c49612919565b5b611c5688828901611a4d565b9150509295509295909350565b60008060408385031215611c7a57611c7961291e565b5b6000611c888582860161199d565b9250506020611c9985828601611a0e565b9150509250929050565b60008060408385031215611cba57611cb961291e565b5b6000611cc88582860161199d565b9250506020611cd985828601611a7b565b9150509250929050565b60008060408385031215611cfa57611cf961291e565b5b600083013567ffffffffffffffff811115611d1857611d17612919565b5b611d24858286016119b2565b925050602083013567ffffffffffffffff811115611d4557611d44612919565b5b611d51858286016119e0565b9150509250929050565b600060208284031215611d7157611d7061291e565b5b6000611d7f84828501611a23565b91505092915050565b600060208284031215611d9e57611d9d61291e565b5b6000611dac84828501611a38565b91505092915050565b600060208284031215611dcb57611dca61291e565b5b6000611dd984828501611a7b565b91505092915050565b6000611dee8383612103565b60208301905092915050565b611e038161266a565b82525050565b6000611e1482612543565b611e1e8185612571565b9350611e2983612533565b8060005b83811015611e5a578151611e418882611de2565b9750611e4c83612564565b925050600181019050611e2d565b5085935050505092915050565b611e708161267c565b82525050565b6000611e818261254e565b611e8b8185612582565b9350611e9b8185602086016126ed565b611ea481612923565b840191505092915050565b6000611eba82612559565b611ec48185612593565b9350611ed48185602086016126ed565b611edd81612923565b840191505092915050565b6000611ef382612559565b611efd81856125a4565b9350611f0d8185602086016126ed565b80840191505092915050565b6000611f26603483612593565b9150611f3182612941565b604082019050919050565b6000611f49602883612593565b9150611f5482612990565b604082019050919050565b6000611f6c602b83612593565b9150611f77826129df565b604082019050919050565b6000611f8f602683612593565b9150611f9a82612a2e565b604082019050919050565b6000611fb2602983612593565b9150611fbd82612a7d565b604082019050919050565b6000611fd5602583612593565b9150611fe082612acc565b604082019050919050565b6000611ff8603283612593565b915061200382612b1b565b604082019050919050565b600061201b602a83612593565b915061202682612b6a565b604082019050919050565b600061203e6040836125a4565b915061204982612bb9565b604082019050919050565b60006120616005836125a4565b915061206c82612c08565b600582019050919050565b6000612084602083612593565b915061208f82612c31565b602082019050919050565b60006120a7602983612593565b91506120b282612c5a565b604082019050919050565b60006120ca602983612593565b91506120d582612ca9565b604082019050919050565b60006120ed602883612593565b91506120f882612cf8565b604082019050919050565b61210c816126d4565b82525050565b61211b816126d4565b82525050565b600061212c82612031565b91506121388284611ee8565b915061214382612054565b915081905092915050565b60006020820190506121636000830184611dfa565b92915050565b600060a08201905061217e6000830188611dfa565b61218b6020830187611dfa565b818103604083015261219d8186611e09565b905081810360608301526121b18185611e09565b905081810360808301526121c58184611e76565b90509695505050505050565b600060a0820190506121e66000830188611dfa565b6121f36020830187611dfa565b6122006040830186612112565b61220d6060830185612112565b818103608083015261221f8184611e76565b90509695505050505050565b600060208201905081810360008301526122458184611e09565b905092915050565b600060408201905081810360008301526122678185611e09565b9050818103602083015261227b8184611e09565b90509392505050565b60006020820190506122996000830184611e67565b92915050565b600060208201905081810360008301526122b98184611eaf565b905092915050565b600060208201905081810360008301526122da81611f19565b9050919050565b600060208201905081810360008301526122fa81611f3c565b9050919050565b6000602082019050818103600083015261231a81611f5f565b9050919050565b6000602082019050818103600083015261233a81611f82565b9050919050565b6000602082019050818103600083015261235a81611fa5565b9050919050565b6000602082019050818103600083015261237a81611fc8565b9050919050565b6000602082019050818103600083015261239a81611feb565b9050919050565b600060208201905081810360008301526123ba8161200e565b9050919050565b600060208201905081810360008301526123da81612077565b9050919050565b600060208201905081810360008301526123fa8161209a565b9050919050565b6000602082019050818103600083015261241a816120bd565b9050919050565b6000602082019050818103600083015261243a816120e0565b9050919050565b60006020820190506124566000830184612112565b92915050565b60006040820190506124716000830185612112565b61247e6020830184612112565b9392505050565b600061248f6124a0565b905061249b8282612752565b919050565b6000604051905090565b600067ffffffffffffffff8211156124c5576124c46128b9565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156124f1576124f06128b9565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561251d5761251c6128b9565b5b61252682612923565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006125ba826126d4565b91506125c5836126d4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156125fa576125f96127fd565b5b828201905092915050565b6000612610826126d4565b915061261b836126d4565b92508261262b5761262a61282c565b5b828204905092915050565b6000612641826126d4565b915061264c836126d4565b92508282101561265f5761265e6127fd565b5b828203905092915050565b6000612675826126b4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561270b5780820151818401526020810190506126f0565b8381111561271a576000848401525b50505050565b6000600282049050600182168061273857607f821691505b6020821081141561274c5761274b61285b565b5b50919050565b61275b82612923565b810181811067ffffffffffffffff8211171561277a576127796128b9565b5b80604052505050565b600061278e826126d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127c1576127c06127fd565b5b600182019050919050565b60006127d7826126d4565b91506127e2836126d4565b9250826127f2576127f161282c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156129075760046000803e612904600051612934565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f60008201527f6d2f4d656c7665726b2f6273626c2d696d616765732f6d61696e2f6d6574612f602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600060443d1015612d5757612dda565b612d5f6124a0565b60043d036004823e80513d602482011167ffffffffffffffff82111715612d87575050612dda565b808201805167ffffffffffffffff811115612da55750505050612dda565b80602083010160043d038501811115612dc2575050505050612dda565b612dd182602001850186612752565b82955050505050505b90565b612de68161266a565b8114612df157600080fd5b50565b612dfd8161267c565b8114612e0857600080fd5b50565b612e1481612688565b8114612e1f57600080fd5b50565b612e2b816126d4565b8114612e3657600080fd5b5056fea2646970667358221220d9cc9f82307ef52a7567a93e1eb79b7e7721445724b19e81195ad93e2a66a21564736f6c6343000807003368747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f4d656c7665726b2f6273626c2d696d616765732f6d61696e2f6d6574612f7b7d2e6a736f6e
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100e95760003560e01c80638da5cb5b1161008c578063be9ea71911610066578063be9ea7191461024a578063e985e9c514610268578063f242432a14610298578063f2fde38b146102b4576100e9565b80638da5cb5b146101f257806395d89b4114610210578063a22cb4651461022e576100e9565b80630e89341c116100c85780630e89341c1461016c5780632eb2c2d61461019c5780634e1273f4146101b8578063715018a6146101e8576100e9565b8062fdd58e146100ee57806301ffc9a71461011e57806306fdde031461014e575b600080fd5b61010860048036038101906101039190611ca3565b6102d0565b6040516101159190612441565b60405180910390f35b61013860048036038101906101339190611d5b565b610399565b6040516101459190612284565b60405180910390f35b61015661047b565b604051610163919061229f565b60405180910390f35b61018660048036038101906101819190611db5565b610509565b604051610193919061229f565b60405180910390f35b6101b660048036038101906101b19190611afd565b61053a565b005b6101d260048036038101906101cd9190611ce3565b6105db565b6040516101df919061222b565b60405180910390f35b6101f06106f4565b005b6101fa61077c565b604051610207919061214e565b60405180910390f35b6102186107a6565b604051610225919061229f565b60405180910390f35b61024860048036038101906102439190611c63565b610834565b005b61025261084a565b60405161025f9190612441565b60405180910390f35b610282600480360381019061027d9190611abd565b61084f565b60405161028f9190612284565b60405180910390f35b6102b260048036038101906102ad9190611bcc565b6108e3565b005b6102ce60048036038101906102c99190611a90565b610984565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033890612301565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061046457507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610474575061047382610a8f565b5b9050919050565b6004805461048890612720565b80601f01602080910402602001604051908101604052809291908181526020018280546104b490612720565b80156105015780601f106104d657610100808354040283529160200191610501565b820191906000526020600020905b8154815290600101906020018083116104e457829003601f168201915b505050505081565b606061051482610af9565b6040516020016105249190612121565b6040516020818303038152906040529050919050565b610542610c5a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610588575061058785610582610c5a565b61084f565b5b6105c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105be90612381565b60405180910390fd5b6105d48585858585610c62565b5050505050565b60608151835114610621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061890612401565b60405180910390fd5b6000835167ffffffffffffffff81111561063e5761063d6128b9565b5b60405190808252806020026020018201604052801561066c5781602001602082028036833780820191505090505b50905060005b84518110156106e9576106b98582815181106106915761069061288a565b5b60200260200101518583815181106106ac576106ab61288a565b5b60200260200101516102d0565b8282815181106106cc576106cb61288a565b5b602002602001018181525050806106e290612783565b9050610672565b508091505092915050565b6106fc610c5a565b73ffffffffffffffffffffffffffffffffffffffff1661071a61077c565b73ffffffffffffffffffffffffffffffffffffffff1614610770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610767906123c1565b60405180910390fd5b61077a6000610f76565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600580546107b390612720565b80601f01602080910402602001604051908101604052809291908181526020018280546107df90612720565b801561082c5780601f106108015761010080835404028352916020019161082c565b820191906000526020600020905b81548152906001019060200180831161080f57829003601f168201915b505050505081565b61084661083f610c5a565b838361103c565b5050565b600181565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6108eb610c5a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061093157506109308561092b610c5a565b61084f565b5b610970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096790612341565b60405180910390fd5b61097d85858585856111a9565b5050505050565b61098c610c5a565b73ffffffffffffffffffffffffffffffffffffffff166109aa61077c565b73ffffffffffffffffffffffffffffffffffffffff1614610a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f7906123c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6790612321565b60405180910390fd5b610a7981610f76565b50565b600080823b905060008111915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606000821415610b41576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610c55565b600082905060005b60008214610b73578080610b5c90612783565b915050600a82610b6c9190612605565b9150610b49565b60008167ffffffffffffffff811115610b8f57610b8e6128b9565b5b6040519080825280601f01601f191660200182016040528015610bc15781602001600182028036833780820191505090505b5090505b60008514610c4e57600182610bda9190612636565b9150600a85610be991906127cc565b6030610bf591906125af565b60f81b818381518110610c0b57610c0a61288a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85610c479190612605565b9450610bc5565b8093505050505b919050565b600033905090565b8151835114610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d90612421565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90612361565b60405180910390fd5b6000610d20610c5a565b9050610d3081878787878761142b565b60005b8451811015610ee1576000858281518110610d5157610d5061288a565b5b602002602001015190506000858381518110610d7057610d6f61288a565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e08906123a1565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec691906125af565b9250508190555050505080610eda90612783565b9050610d33565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610f5892919061224d565b60405180910390a4610f6e818787878787611433565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a2906123e1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161119c9190612284565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090612361565b60405180910390fd5b6000611223610c5a565b90506112438187876112348861161a565b61123d8861161a565b8761142b565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906123a1565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138f91906125af565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161140c92919061245c565b60405180910390a4611422828888888888611694565b50505050505050565b505050505050565b6114528473ffffffffffffffffffffffffffffffffffffffff16610a7c565b15611612578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611498959493929190612169565b602060405180830381600087803b1580156114b257600080fd5b505af19250505080156114e357506040513d601f19601f820116820180604052508101906114e09190611d88565b60015b611589576114ef6128e8565b806308c379a0141561154c5750611504612d47565b8061150f575061154e565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611543919061229f565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611580906122c1565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611610576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611607906122e1565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff811115611639576116386128b9565b5b6040519080825280602002602001820160405280156116675781602001602082028036833780820191505090505b509050828160008151811061167f5761167e61288a565b5b60200260200101818152505080915050919050565b6116b38473ffffffffffffffffffffffffffffffffffffffff16610a7c565b15611873578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016116f99594939291906121d1565b602060405180830381600087803b15801561171357600080fd5b505af192505050801561174457506040513d601f19601f820116820180604052508101906117419190611d88565b60015b6117ea576117506128e8565b806308c379a014156117ad5750611765612d47565b8061177057506117af565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a4919061229f565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e1906122c1565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611871576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611868906122e1565b60405180910390fd5b505b505050505050565b600061188e611889846124aa565b612485565b905080838252602082019050828560208602820111156118b1576118b061290f565b5b60005b858110156118e157816118c7888261199d565b8452602084019350602083019250506001810190506118b4565b5050509392505050565b60006118fe6118f9846124d6565b612485565b905080838252602082019050828560208602820111156119215761192061290f565b5b60005b8581101561195157816119378882611a7b565b845260208401935060208301925050600181019050611924565b5050509392505050565b600061196e61196984612502565b612485565b90508281526020810184848401111561198a57611989612914565b5b6119958482856126de565b509392505050565b6000813590506119ac81612ddd565b92915050565b600082601f8301126119c7576119c661290a565b5b81356119d784826020860161187b565b91505092915050565b600082601f8301126119f5576119f461290a565b5b8135611a058482602086016118eb565b91505092915050565b600081359050611a1d81612df4565b92915050565b600081359050611a3281612e0b565b92915050565b600081519050611a4781612e0b565b92915050565b600082601f830112611a6257611a6161290a565b5b8135611a7284826020860161195b565b91505092915050565b600081359050611a8a81612e22565b92915050565b600060208284031215611aa657611aa561291e565b5b6000611ab48482850161199d565b91505092915050565b60008060408385031215611ad457611ad361291e565b5b6000611ae28582860161199d565b9250506020611af38582860161199d565b9150509250929050565b600080600080600060a08688031215611b1957611b1861291e565b5b6000611b278882890161199d565b9550506020611b388882890161199d565b945050604086013567ffffffffffffffff811115611b5957611b58612919565b5b611b65888289016119e0565b935050606086013567ffffffffffffffff811115611b8657611b85612919565b5b611b92888289016119e0565b925050608086013567ffffffffffffffff811115611bb357611bb2612919565b5b611bbf88828901611a4d565b9150509295509295909350565b600080600080600060a08688031215611be857611be761291e565b5b6000611bf68882890161199d565b9550506020611c078882890161199d565b9450506040611c1888828901611a7b565b9350506060611c2988828901611a7b565b925050608086013567ffffffffffffffff811115611c4a57611c49612919565b5b611c5688828901611a4d565b9150509295509295909350565b60008060408385031215611c7a57611c7961291e565b5b6000611c888582860161199d565b9250506020611c9985828601611a0e565b9150509250929050565b60008060408385031215611cba57611cb961291e565b5b6000611cc88582860161199d565b9250506020611cd985828601611a7b565b9150509250929050565b60008060408385031215611cfa57611cf961291e565b5b600083013567ffffffffffffffff811115611d1857611d17612919565b5b611d24858286016119b2565b925050602083013567ffffffffffffffff811115611d4557611d44612919565b5b611d51858286016119e0565b9150509250929050565b600060208284031215611d7157611d7061291e565b5b6000611d7f84828501611a23565b91505092915050565b600060208284031215611d9e57611d9d61291e565b5b6000611dac84828501611a38565b91505092915050565b600060208284031215611dcb57611dca61291e565b5b6000611dd984828501611a7b565b91505092915050565b6000611dee8383612103565b60208301905092915050565b611e038161266a565b82525050565b6000611e1482612543565b611e1e8185612571565b9350611e2983612533565b8060005b83811015611e5a578151611e418882611de2565b9750611e4c83612564565b925050600181019050611e2d565b5085935050505092915050565b611e708161267c565b82525050565b6000611e818261254e565b611e8b8185612582565b9350611e9b8185602086016126ed565b611ea481612923565b840191505092915050565b6000611eba82612559565b611ec48185612593565b9350611ed48185602086016126ed565b611edd81612923565b840191505092915050565b6000611ef382612559565b611efd81856125a4565b9350611f0d8185602086016126ed565b80840191505092915050565b6000611f26603483612593565b9150611f3182612941565b604082019050919050565b6000611f49602883612593565b9150611f5482612990565b604082019050919050565b6000611f6c602b83612593565b9150611f77826129df565b604082019050919050565b6000611f8f602683612593565b9150611f9a82612a2e565b604082019050919050565b6000611fb2602983612593565b9150611fbd82612a7d565b604082019050919050565b6000611fd5602583612593565b9150611fe082612acc565b604082019050919050565b6000611ff8603283612593565b915061200382612b1b565b604082019050919050565b600061201b602a83612593565b915061202682612b6a565b604082019050919050565b600061203e6040836125a4565b915061204982612bb9565b604082019050919050565b60006120616005836125a4565b915061206c82612c08565b600582019050919050565b6000612084602083612593565b915061208f82612c31565b602082019050919050565b60006120a7602983612593565b91506120b282612c5a565b604082019050919050565b60006120ca602983612593565b91506120d582612ca9565b604082019050919050565b60006120ed602883612593565b91506120f882612cf8565b604082019050919050565b61210c816126d4565b82525050565b61211b816126d4565b82525050565b600061212c82612031565b91506121388284611ee8565b915061214382612054565b915081905092915050565b60006020820190506121636000830184611dfa565b92915050565b600060a08201905061217e6000830188611dfa565b61218b6020830187611dfa565b818103604083015261219d8186611e09565b905081810360608301526121b18185611e09565b905081810360808301526121c58184611e76565b90509695505050505050565b600060a0820190506121e66000830188611dfa565b6121f36020830187611dfa565b6122006040830186612112565b61220d6060830185612112565b818103608083015261221f8184611e76565b90509695505050505050565b600060208201905081810360008301526122458184611e09565b905092915050565b600060408201905081810360008301526122678185611e09565b9050818103602083015261227b8184611e09565b90509392505050565b60006020820190506122996000830184611e67565b92915050565b600060208201905081810360008301526122b98184611eaf565b905092915050565b600060208201905081810360008301526122da81611f19565b9050919050565b600060208201905081810360008301526122fa81611f3c565b9050919050565b6000602082019050818103600083015261231a81611f5f565b9050919050565b6000602082019050818103600083015261233a81611f82565b9050919050565b6000602082019050818103600083015261235a81611fa5565b9050919050565b6000602082019050818103600083015261237a81611fc8565b9050919050565b6000602082019050818103600083015261239a81611feb565b9050919050565b600060208201905081810360008301526123ba8161200e565b9050919050565b600060208201905081810360008301526123da81612077565b9050919050565b600060208201905081810360008301526123fa8161209a565b9050919050565b6000602082019050818103600083015261241a816120bd565b9050919050565b6000602082019050818103600083015261243a816120e0565b9050919050565b60006020820190506124566000830184612112565b92915050565b60006040820190506124716000830185612112565b61247e6020830184612112565b9392505050565b600061248f6124a0565b905061249b8282612752565b919050565b6000604051905090565b600067ffffffffffffffff8211156124c5576124c46128b9565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156124f1576124f06128b9565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561251d5761251c6128b9565b5b61252682612923565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006125ba826126d4565b91506125c5836126d4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156125fa576125f96127fd565b5b828201905092915050565b6000612610826126d4565b915061261b836126d4565b92508261262b5761262a61282c565b5b828204905092915050565b6000612641826126d4565b915061264c836126d4565b92508282101561265f5761265e6127fd565b5b828203905092915050565b6000612675826126b4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561270b5780820151818401526020810190506126f0565b8381111561271a576000848401525b50505050565b6000600282049050600182168061273857607f821691505b6020821081141561274c5761274b61285b565b5b50919050565b61275b82612923565b810181811067ffffffffffffffff8211171561277a576127796128b9565b5b80604052505050565b600061278e826126d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127c1576127c06127fd565b5b600182019050919050565b60006127d7826126d4565b91506127e2836126d4565b9250826127f2576127f161282c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156129075760046000803e612904600051612934565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f60008201527f6d2f4d656c7665726b2f6273626c2d696d616765732f6d61696e2f6d6574612f602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600060443d1015612d5757612dda565b612d5f6124a0565b60043d036004823e80513d602482011167ffffffffffffffff82111715612d87575050612dda565b808201805167ffffffffffffffff811115612da55750505050612dda565b80602083010160043d038501811115612dc2575050505050612dda565b612dd182602001850186612752565b82955050505050505b90565b612de68161266a565b8114612df157600080fd5b50565b612dfd8161267c565b8114612e0857600080fd5b50565b612e1481612688565b8114612e1f57600080fd5b50565b612e2b816126d4565b8114612e3657600080fd5b5056fea2646970667358221220d9cc9f82307ef52a7567a93e1eb79b7e7721445724b19e81195ad93e2a66a21564736f6c63430008070033
Deployed Bytecode Sourcemap
38737:845:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25156:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24179:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38815:40;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39259:320;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27095:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25553:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4742:103;;;:::i;:::-;;4091:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38886:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26150:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38928:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26377:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26617:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5000:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25156:231;25242:7;25289:1;25270:21;;:7;:21;;;;25262:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;25357:9;:13;25367:2;25357:13;;;;;;;;;;;:22;25371:7;25357:22;;;;;;;;;;;;;;;;25350:29;;25156:231;;;;:::o;24179:310::-;24281:4;24333:26;24318:41;;;:11;:41;;;;:110;;;;24391:37;24376:52;;;:11;:52;;;;24318:110;:163;;;;24445:36;24469:11;24445:23;:36::i;:::-;24318:163;24298:183;;24179:310;;;:::o;38815:40::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;39259:320::-;39319:13;39493:25;39510:7;39493:16;:25::i;:::-;39373:186;;;;;;;;:::i;:::-;;;;;;;;;;;;;39345:226;;39259:320;;;:::o;27095:442::-;27336:12;:10;:12::i;:::-;27328:20;;:4;:20;;;:60;;;;27352:36;27369:4;27375:12;:10;:12::i;:::-;27352:16;:36::i;:::-;27328:60;27306:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;27477:52;27500:4;27506:2;27510:3;27515:7;27524:4;27477:22;:52::i;:::-;27095:442;;;;;:::o;25553:524::-;25709:16;25770:3;:10;25751:8;:15;:29;25743:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;25839:30;25886:8;:15;25872:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25839:63;;25920:9;25915:122;25939:8;:15;25935:1;:19;25915:122;;;25995:30;26005:8;26014:1;26005:11;;;;;;;;:::i;:::-;;;;;;;;26018:3;26022:1;26018:6;;;;;;;;:::i;:::-;;;;;;;;25995:9;:30::i;:::-;25976:13;25990:1;25976:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;25956:3;;;;:::i;:::-;;;25915:122;;;;26056:13;26049:20;;;25553:524;;;;:::o;4742:103::-;4322:12;:10;:12::i;:::-;4311:23;;:7;:5;:7::i;:::-;:23;;;4303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4807:30:::1;4834:1;4807:18;:30::i;:::-;4742:103::o:0;4091:87::-;4137:7;4164:6;;;;;;;;;;;4157:13;;4091:87;:::o;38886:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26150:155::-;26245:52;26264:12;:10;:12::i;:::-;26278:8;26288;26245:18;:52::i;:::-;26150:155;;:::o;38928:39::-;38966:1;38928:39;:::o;26377:168::-;26476:4;26500:18;:27;26519:7;26500:27;;;;;;;;;;;;;;;:37;26528:8;26500:37;;;;;;;;;;;;;;;;;;;;;;;;;26493:44;;26377:168;;;;:::o;26617:401::-;26833:12;:10;:12::i;:::-;26825:20;;:4;:20;;;:60;;;;26849:36;26866:4;26872:12;:10;:12::i;:::-;26849:16;:36::i;:::-;26825:60;26803:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;26965:45;26983:4;26989:2;26993;26997:6;27005:4;26965:17;:45::i;:::-;26617:401;;;;;:::o;5000:201::-;4322:12;:10;:12::i;:::-;4311:23;;:7;:5;:7::i;:::-;:23;;;4303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5109:1:::1;5089:22;;:8;:22;;;;5081:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5165:28;5184:8;5165:18;:28::i;:::-;5000:201:::0;:::o;6385:387::-;6445:4;6653:12;6720:7;6708:20;6700:28;;6763:1;6756:4;:8;6749:15;;;6385:387;;;:::o;15510:157::-;15595:4;15634:25;15619:40;;;:11;:40;;;;15612:47;;15510:157;;;:::o;365:723::-;421:13;651:1;642:5;:10;638:53;;;669:10;;;;;;;;;;;;;;;;;;;;;638:53;701:12;716:5;701:20;;732:14;757:78;772:1;764:4;:9;757:78;;790:8;;;;;:::i;:::-;;;;821:2;813:10;;;;;:::i;:::-;;;757:78;;;845:19;877:6;867:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;845:39;;895:154;911:1;902:5;:10;895:154;;939:1;929:11;;;;;:::i;:::-;;;1006:2;998:5;:10;;;;:::i;:::-;985:2;:24;;;;:::i;:::-;972:39;;955:6;962;955:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1035:2;1026:11;;;;;:::i;:::-;;;895:154;;;1073:6;1059:21;;;;;365:723;;;;:::o;2809:98::-;2862:7;2889:10;2882:17;;2809:98;:::o;29179:1074::-;29406:7;:14;29392:3;:10;:28;29384:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;29498:1;29484:16;;:2;:16;;;;29476:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;29555:16;29574:12;:10;:12::i;:::-;29555:31;;29599:60;29620:8;29630:4;29636:2;29640:3;29645:7;29654:4;29599:20;:60::i;:::-;29677:9;29672:421;29696:3;:10;29692:1;:14;29672:421;;;29728:10;29741:3;29745:1;29741:6;;;;;;;;:::i;:::-;;;;;;;;29728:19;;29762:14;29779:7;29787:1;29779:10;;;;;;;;:::i;:::-;;;;;;;;29762:27;;29806:19;29828:9;:13;29838:2;29828:13;;;;;;;;;;;:19;29842:4;29828:19;;;;;;;;;;;;;;;;29806:41;;29885:6;29870:11;:21;;29862:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;30018:6;30004:11;:20;29982:9;:13;29992:2;29982:13;;;;;;;;;;;:19;29996:4;29982:19;;;;;;;;;;;;;;;:42;;;;30075:6;30054:9;:13;30064:2;30054:13;;;;;;;;;;;:17;30068:2;30054:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;29713:380;;;29708:3;;;;:::i;:::-;;;29672:421;;;;30140:2;30110:47;;30134:4;30110:47;;30124:8;30110:47;;;30144:3;30149:7;30110:47;;;;;;;:::i;:::-;;;;;;;;30170:75;30206:8;30216:4;30222:2;30226:3;30231:7;30240:4;30170:35;:75::i;:::-;29373:880;29179:1074;;;;;:::o;5361:191::-;5435:16;5454:6;;;;;;;;;;;5435:25;;5480:8;5471:6;;:17;;;;;;;;;;;;;;;;;;5535:8;5504:40;;5525:8;5504:40;;;;;;;;;;;;5424:128;5361:191;:::o;35365:331::-;35520:8;35511:17;;:5;:17;;;;35503:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;35623:8;35585:18;:25;35604:5;35585:25;;;;;;;;;;;;;;;:35;35611:8;35585:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35669:8;35647:41;;35662:5;35647:41;;;35679:8;35647:41;;;;;;:::i;:::-;;;;;;;;35365:331;;;:::o;28001:820::-;28203:1;28189:16;;:2;:16;;;;28181:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;28260:16;28279:12;:10;:12::i;:::-;28260:31;;28304:96;28325:8;28335:4;28341:2;28345:21;28363:2;28345:17;:21::i;:::-;28368:25;28386:6;28368:17;:25::i;:::-;28395:4;28304:20;:96::i;:::-;28413:19;28435:9;:13;28445:2;28435:13;;;;;;;;;;;:19;28449:4;28435:19;;;;;;;;;;;;;;;;28413:41;;28488:6;28473:11;:21;;28465:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;28613:6;28599:11;:20;28577:9;:13;28587:2;28577:13;;;;;;;;;;;:19;28591:4;28577:19;;;;;;;;;;;;;;;:42;;;;28662:6;28641:9;:13;28651:2;28641:13;;;;;;;;;;;:17;28655:2;28641:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;28717:2;28686:46;;28711:4;28686:46;;28701:8;28686:46;;;28721:2;28725:6;28686:46;;;;;;;:::i;:::-;;;;;;;;28745:68;28776:8;28786:4;28792:2;28796;28800:6;28808:4;28745:30;:68::i;:::-;28170:651;;28001:820;;;;;:::o;36652:221::-;;;;;;;:::o;37633:813::-;37873:15;:2;:13;;;:15::i;:::-;37869:570;;;37926:2;37909:43;;;37953:8;37963:4;37969:3;37974:7;37983:4;37909:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;37905:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;38301:6;38294:14;;;;;;;;;;;:::i;:::-;;;;;;;;37905:523;;;38350:62;;;;;;;;;;:::i;:::-;;;;;;;;37905:523;38082:48;;;38070:60;;;:8;:60;;;;38066:159;;38155:50;;;;;;;;;;:::i;:::-;;;;;;;;38066:159;37989:251;37869:570;37633:813;;;;;;:::o;38454:198::-;38520:16;38549:22;38588:1;38574:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38549:41;;38612:7;38601:5;38607:1;38601:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;38639:5;38632:12;;;38454:198;;;:::o;36881:744::-;37096:15;:2;:13;;;:15::i;:::-;37092:526;;;37149:2;37132:38;;;37171:8;37181:4;37187:2;37191:6;37199:4;37132:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;37128:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;37480:6;37473:14;;;;;;;;;;;:::i;:::-;;;;;;;;37128:479;;;37529:62;;;;;;;;;;:::i;:::-;;;;;;;;37128:479;37266:43;;;37254:55;;;:8;:55;;;;37250:154;;37334:50;;;;;;;;;;:::i;:::-;;;;;;;;37250:154;37205:214;37092:526;36881:744;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:139::-;1959:5;1997:6;1984:20;1975:29;;2013:33;2040:5;2013:33;:::i;:::-;1913:139;;;;:::o;2075:370::-;2146:5;2195:3;2188:4;2180:6;2176:17;2172:27;2162:122;;2203:79;;:::i;:::-;2162:122;2320:6;2307:20;2345:94;2435:3;2427:6;2420:4;2412:6;2408:17;2345:94;:::i;:::-;2336:103;;2152:293;2075:370;;;;:::o;2468:::-;2539:5;2588:3;2581:4;2573:6;2569:17;2565:27;2555:122;;2596:79;;:::i;:::-;2555:122;2713:6;2700:20;2738:94;2828:3;2820:6;2813:4;2805:6;2801:17;2738:94;:::i;:::-;2729:103;;2545:293;2468:370;;;;:::o;2844:133::-;2887:5;2925:6;2912:20;2903:29;;2941:30;2965:5;2941:30;:::i;:::-;2844:133;;;;:::o;2983:137::-;3028:5;3066:6;3053:20;3044:29;;3082:32;3108:5;3082:32;:::i;:::-;2983:137;;;;:::o;3126:141::-;3182:5;3213:6;3207:13;3198:22;;3229:32;3255:5;3229:32;:::i;:::-;3126:141;;;;:::o;3286:338::-;3341:5;3390:3;3383:4;3375:6;3371:17;3367:27;3357:122;;3398:79;;:::i;:::-;3357:122;3515:6;3502:20;3540:78;3614:3;3606:6;3599:4;3591:6;3587:17;3540:78;:::i;:::-;3531:87;;3347:277;3286:338;;;;:::o;3630:139::-;3676:5;3714:6;3701:20;3692:29;;3730:33;3757:5;3730:33;:::i;:::-;3630:139;;;;:::o;3775:329::-;3834:6;3883:2;3871:9;3862:7;3858:23;3854:32;3851:119;;;3889:79;;:::i;:::-;3851:119;4009:1;4034:53;4079:7;4070:6;4059:9;4055:22;4034:53;:::i;:::-;4024:63;;3980:117;3775:329;;;;:::o;4110:474::-;4178:6;4186;4235:2;4223:9;4214:7;4210:23;4206:32;4203:119;;;4241:79;;:::i;:::-;4203:119;4361:1;4386:53;4431:7;4422:6;4411:9;4407:22;4386:53;:::i;:::-;4376:63;;4332:117;4488:2;4514:53;4559:7;4550:6;4539:9;4535:22;4514:53;:::i;:::-;4504:63;;4459:118;4110:474;;;;;:::o;4590:1509::-;4744:6;4752;4760;4768;4776;4825:3;4813:9;4804:7;4800:23;4796:33;4793:120;;;4832:79;;:::i;:::-;4793:120;4952:1;4977:53;5022:7;5013:6;5002:9;4998:22;4977:53;:::i;:::-;4967:63;;4923:117;5079:2;5105:53;5150:7;5141:6;5130:9;5126:22;5105:53;:::i;:::-;5095:63;;5050:118;5235:2;5224:9;5220:18;5207:32;5266:18;5258:6;5255:30;5252:117;;;5288:79;;:::i;:::-;5252:117;5393:78;5463:7;5454:6;5443:9;5439:22;5393:78;:::i;:::-;5383:88;;5178:303;5548:2;5537:9;5533:18;5520:32;5579:18;5571:6;5568:30;5565:117;;;5601:79;;:::i;:::-;5565:117;5706:78;5776:7;5767:6;5756:9;5752:22;5706:78;:::i;:::-;5696:88;;5491:303;5861:3;5850:9;5846:19;5833:33;5893:18;5885:6;5882:30;5879:117;;;5915:79;;:::i;:::-;5879:117;6020:62;6074:7;6065:6;6054:9;6050:22;6020:62;:::i;:::-;6010:72;;5804:288;4590:1509;;;;;;;;:::o;6105:1089::-;6209:6;6217;6225;6233;6241;6290:3;6278:9;6269:7;6265:23;6261:33;6258:120;;;6297:79;;:::i;:::-;6258:120;6417:1;6442:53;6487:7;6478:6;6467:9;6463:22;6442:53;:::i;:::-;6432:63;;6388:117;6544:2;6570:53;6615:7;6606:6;6595:9;6591:22;6570:53;:::i;:::-;6560:63;;6515:118;6672:2;6698:53;6743:7;6734:6;6723:9;6719:22;6698:53;:::i;:::-;6688:63;;6643:118;6800:2;6826:53;6871:7;6862:6;6851:9;6847:22;6826:53;:::i;:::-;6816:63;;6771:118;6956:3;6945:9;6941:19;6928:33;6988:18;6980:6;6977:30;6974:117;;;7010:79;;:::i;:::-;6974:117;7115:62;7169:7;7160:6;7149:9;7145:22;7115:62;:::i;:::-;7105:72;;6899:288;6105:1089;;;;;;;;:::o;7200:468::-;7265:6;7273;7322:2;7310:9;7301:7;7297:23;7293:32;7290:119;;;7328:79;;:::i;:::-;7290:119;7448:1;7473:53;7518:7;7509:6;7498:9;7494:22;7473:53;:::i;:::-;7463:63;;7419:117;7575:2;7601:50;7643:7;7634:6;7623:9;7619:22;7601:50;:::i;:::-;7591:60;;7546:115;7200:468;;;;;:::o;7674:474::-;7742:6;7750;7799:2;7787:9;7778:7;7774:23;7770:32;7767:119;;;7805:79;;:::i;:::-;7767:119;7925:1;7950:53;7995:7;7986:6;7975:9;7971:22;7950:53;:::i;:::-;7940:63;;7896:117;8052:2;8078:53;8123:7;8114:6;8103:9;8099:22;8078:53;:::i;:::-;8068:63;;8023:118;7674:474;;;;;:::o;8154:894::-;8272:6;8280;8329:2;8317:9;8308:7;8304:23;8300:32;8297:119;;;8335:79;;:::i;:::-;8297:119;8483:1;8472:9;8468:17;8455:31;8513:18;8505:6;8502:30;8499:117;;;8535:79;;:::i;:::-;8499:117;8640:78;8710:7;8701:6;8690:9;8686:22;8640:78;:::i;:::-;8630:88;;8426:302;8795:2;8784:9;8780:18;8767:32;8826:18;8818:6;8815:30;8812:117;;;8848:79;;:::i;:::-;8812:117;8953:78;9023:7;9014:6;9003:9;8999:22;8953:78;:::i;:::-;8943:88;;8738:303;8154:894;;;;;:::o;9054:327::-;9112:6;9161:2;9149:9;9140:7;9136:23;9132:32;9129:119;;;9167:79;;:::i;:::-;9129:119;9287:1;9312:52;9356:7;9347:6;9336:9;9332:22;9312:52;:::i;:::-;9302:62;;9258:116;9054:327;;;;:::o;9387:349::-;9456:6;9505:2;9493:9;9484:7;9480:23;9476:32;9473:119;;;9511:79;;:::i;:::-;9473:119;9631:1;9656:63;9711:7;9702:6;9691:9;9687:22;9656:63;:::i;:::-;9646:73;;9602:127;9387:349;;;;:::o;9742:329::-;9801:6;9850:2;9838:9;9829:7;9825:23;9821:32;9818:119;;;9856:79;;:::i;:::-;9818:119;9976:1;10001:53;10046:7;10037:6;10026:9;10022:22;10001:53;:::i;:::-;9991:63;;9947:117;9742:329;;;;:::o;10077:179::-;10146:10;10167:46;10209:3;10201:6;10167:46;:::i;:::-;10245:4;10240:3;10236:14;10222:28;;10077:179;;;;:::o;10262:118::-;10349:24;10367:5;10349:24;:::i;:::-;10344:3;10337:37;10262:118;;:::o;10416:732::-;10535:3;10564:54;10612:5;10564:54;:::i;:::-;10634:86;10713:6;10708:3;10634:86;:::i;:::-;10627:93;;10744:56;10794:5;10744:56;:::i;:::-;10823:7;10854:1;10839:284;10864:6;10861:1;10858:13;10839:284;;;10940:6;10934:13;10967:63;11026:3;11011:13;10967:63;:::i;:::-;10960:70;;11053:60;11106:6;11053:60;:::i;:::-;11043:70;;10899:224;10886:1;10883;10879:9;10874:14;;10839:284;;;10843:14;11139:3;11132:10;;10540:608;;;10416:732;;;;:::o;11154:109::-;11235:21;11250:5;11235:21;:::i;:::-;11230:3;11223:34;11154:109;;:::o;11269:360::-;11355:3;11383:38;11415:5;11383:38;:::i;:::-;11437:70;11500:6;11495:3;11437:70;:::i;:::-;11430:77;;11516:52;11561:6;11556:3;11549:4;11542:5;11538:16;11516:52;:::i;:::-;11593:29;11615:6;11593:29;:::i;:::-;11588:3;11584:39;11577:46;;11359:270;11269:360;;;;:::o;11635:364::-;11723:3;11751:39;11784:5;11751:39;:::i;:::-;11806:71;11870:6;11865:3;11806:71;:::i;:::-;11799:78;;11886:52;11931:6;11926:3;11919:4;11912:5;11908:16;11886:52;:::i;:::-;11963:29;11985:6;11963:29;:::i;:::-;11958:3;11954:39;11947:46;;11727:272;11635:364;;;;:::o;12005:377::-;12111:3;12139:39;12172:5;12139:39;:::i;:::-;12194:89;12276:6;12271:3;12194:89;:::i;:::-;12187:96;;12292:52;12337:6;12332:3;12325:4;12318:5;12314:16;12292:52;:::i;:::-;12369:6;12364:3;12360:16;12353:23;;12115:267;12005:377;;;;:::o;12388:366::-;12530:3;12551:67;12615:2;12610:3;12551:67;:::i;:::-;12544:74;;12627:93;12716:3;12627:93;:::i;:::-;12745:2;12740:3;12736:12;12729:19;;12388:366;;;:::o;12760:::-;12902:3;12923:67;12987:2;12982:3;12923:67;:::i;:::-;12916:74;;12999:93;13088:3;12999:93;:::i;:::-;13117:2;13112:3;13108:12;13101:19;;12760:366;;;:::o;13132:::-;13274:3;13295:67;13359:2;13354:3;13295:67;:::i;:::-;13288:74;;13371:93;13460:3;13371:93;:::i;:::-;13489:2;13484:3;13480:12;13473:19;;13132:366;;;:::o;13504:::-;13646:3;13667:67;13731:2;13726:3;13667:67;:::i;:::-;13660:74;;13743:93;13832:3;13743:93;:::i;:::-;13861:2;13856:3;13852:12;13845:19;;13504:366;;;:::o;13876:::-;14018:3;14039:67;14103:2;14098:3;14039:67;:::i;:::-;14032:74;;14115:93;14204:3;14115:93;:::i;:::-;14233:2;14228:3;14224:12;14217:19;;13876:366;;;:::o;14248:::-;14390:3;14411:67;14475:2;14470:3;14411:67;:::i;:::-;14404:74;;14487:93;14576:3;14487:93;:::i;:::-;14605:2;14600:3;14596:12;14589:19;;14248:366;;;:::o;14620:::-;14762:3;14783:67;14847:2;14842:3;14783:67;:::i;:::-;14776:74;;14859:93;14948:3;14859:93;:::i;:::-;14977:2;14972:3;14968:12;14961:19;;14620:366;;;:::o;14992:::-;15134:3;15155:67;15219:2;15214:3;15155:67;:::i;:::-;15148:74;;15231:93;15320:3;15231:93;:::i;:::-;15349:2;15344:3;15340:12;15333:19;;14992:366;;;:::o;15364:402::-;15524:3;15545:85;15627:2;15622:3;15545:85;:::i;:::-;15538:92;;15639:93;15728:3;15639:93;:::i;:::-;15757:2;15752:3;15748:12;15741:19;;15364:402;;;:::o;15772:400::-;15932:3;15953:84;16035:1;16030:3;15953:84;:::i;:::-;15946:91;;16046:93;16135:3;16046:93;:::i;:::-;16164:1;16159:3;16155:11;16148:18;;15772:400;;;:::o;16178:366::-;16320:3;16341:67;16405:2;16400:3;16341:67;:::i;:::-;16334:74;;16417:93;16506:3;16417:93;:::i;:::-;16535:2;16530:3;16526:12;16519:19;;16178:366;;;:::o;16550:::-;16692:3;16713:67;16777:2;16772:3;16713:67;:::i;:::-;16706:74;;16789:93;16878:3;16789:93;:::i;:::-;16907:2;16902:3;16898:12;16891:19;;16550:366;;;:::o;16922:::-;17064:3;17085:67;17149:2;17144:3;17085:67;:::i;:::-;17078:74;;17161:93;17250:3;17161:93;:::i;:::-;17279:2;17274:3;17270:12;17263:19;;16922:366;;;:::o;17294:::-;17436:3;17457:67;17521:2;17516:3;17457:67;:::i;:::-;17450:74;;17533:93;17622:3;17533:93;:::i;:::-;17651:2;17646:3;17642:12;17635:19;;17294:366;;;:::o;17666:108::-;17743:24;17761:5;17743:24;:::i;:::-;17738:3;17731:37;17666:108;;:::o;17780:118::-;17867:24;17885:5;17867:24;:::i;:::-;17862:3;17855:37;17780:118;;:::o;17904:807::-;18238:3;18260:148;18404:3;18260:148;:::i;:::-;18253:155;;18425:95;18516:3;18507:6;18425:95;:::i;:::-;18418:102;;18537:148;18681:3;18537:148;:::i;:::-;18530:155;;18702:3;18695:10;;17904:807;;;;:::o;18717:222::-;18810:4;18848:2;18837:9;18833:18;18825:26;;18861:71;18929:1;18918:9;18914:17;18905:6;18861:71;:::i;:::-;18717:222;;;;:::o;18945:1053::-;19268:4;19306:3;19295:9;19291:19;19283:27;;19320:71;19388:1;19377:9;19373:17;19364:6;19320:71;:::i;:::-;19401:72;19469:2;19458:9;19454:18;19445:6;19401:72;:::i;:::-;19520:9;19514:4;19510:20;19505:2;19494:9;19490:18;19483:48;19548:108;19651:4;19642:6;19548:108;:::i;:::-;19540:116;;19703:9;19697:4;19693:20;19688:2;19677:9;19673:18;19666:48;19731:108;19834:4;19825:6;19731:108;:::i;:::-;19723:116;;19887:9;19881:4;19877:20;19871:3;19860:9;19856:19;19849:49;19915:76;19986:4;19977:6;19915:76;:::i;:::-;19907:84;;18945:1053;;;;;;;;:::o;20004:751::-;20227:4;20265:3;20254:9;20250:19;20242:27;;20279:71;20347:1;20336:9;20332:17;20323:6;20279:71;:::i;:::-;20360:72;20428:2;20417:9;20413:18;20404:6;20360:72;:::i;:::-;20442;20510:2;20499:9;20495:18;20486:6;20442:72;:::i;:::-;20524;20592:2;20581:9;20577:18;20568:6;20524:72;:::i;:::-;20644:9;20638:4;20634:20;20628:3;20617:9;20613:19;20606:49;20672:76;20743:4;20734:6;20672:76;:::i;:::-;20664:84;;20004:751;;;;;;;;:::o;20761:373::-;20904:4;20942:2;20931:9;20927:18;20919:26;;20991:9;20985:4;20981:20;20977:1;20966:9;20962:17;20955:47;21019:108;21122:4;21113:6;21019:108;:::i;:::-;21011:116;;20761:373;;;;:::o;21140:634::-;21361:4;21399:2;21388:9;21384:18;21376:26;;21448:9;21442:4;21438:20;21434:1;21423:9;21419:17;21412:47;21476:108;21579:4;21570:6;21476:108;:::i;:::-;21468:116;;21631:9;21625:4;21621:20;21616:2;21605:9;21601:18;21594:48;21659:108;21762:4;21753:6;21659:108;:::i;:::-;21651:116;;21140:634;;;;;:::o;21780:210::-;21867:4;21905:2;21894:9;21890:18;21882:26;;21918:65;21980:1;21969:9;21965:17;21956:6;21918:65;:::i;:::-;21780:210;;;;:::o;21996:313::-;22109:4;22147:2;22136:9;22132:18;22124:26;;22196:9;22190:4;22186:20;22182:1;22171:9;22167:17;22160:47;22224:78;22297:4;22288:6;22224:78;:::i;:::-;22216:86;;21996:313;;;;:::o;22315:419::-;22481:4;22519:2;22508:9;22504:18;22496:26;;22568:9;22562:4;22558:20;22554:1;22543:9;22539:17;22532:47;22596:131;22722:4;22596:131;:::i;:::-;22588:139;;22315:419;;;:::o;22740:::-;22906:4;22944:2;22933:9;22929:18;22921:26;;22993:9;22987:4;22983:20;22979:1;22968:9;22964:17;22957:47;23021:131;23147:4;23021:131;:::i;:::-;23013:139;;22740:419;;;:::o;23165:::-;23331:4;23369:2;23358:9;23354:18;23346:26;;23418:9;23412:4;23408:20;23404:1;23393:9;23389:17;23382:47;23446:131;23572:4;23446:131;:::i;:::-;23438:139;;23165:419;;;:::o;23590:::-;23756:4;23794:2;23783:9;23779:18;23771:26;;23843:9;23837:4;23833:20;23829:1;23818:9;23814:17;23807:47;23871:131;23997:4;23871:131;:::i;:::-;23863:139;;23590:419;;;:::o;24015:::-;24181:4;24219:2;24208:9;24204:18;24196:26;;24268:9;24262:4;24258:20;24254:1;24243:9;24239:17;24232:47;24296:131;24422:4;24296:131;:::i;:::-;24288:139;;24015:419;;;:::o;24440:::-;24606:4;24644:2;24633:9;24629:18;24621:26;;24693:9;24687:4;24683:20;24679:1;24668:9;24664:17;24657:47;24721:131;24847:4;24721:131;:::i;:::-;24713:139;;24440:419;;;:::o;24865:::-;25031:4;25069:2;25058:9;25054:18;25046:26;;25118:9;25112:4;25108:20;25104:1;25093:9;25089:17;25082:47;25146:131;25272:4;25146:131;:::i;:::-;25138:139;;24865:419;;;:::o;25290:::-;25456:4;25494:2;25483:9;25479:18;25471:26;;25543:9;25537:4;25533:20;25529:1;25518:9;25514:17;25507:47;25571:131;25697:4;25571:131;:::i;:::-;25563:139;;25290:419;;;:::o;25715:::-;25881:4;25919:2;25908:9;25904:18;25896:26;;25968:9;25962:4;25958:20;25954:1;25943:9;25939:17;25932:47;25996:131;26122:4;25996:131;:::i;:::-;25988:139;;25715:419;;;:::o;26140:::-;26306:4;26344:2;26333:9;26329:18;26321:26;;26393:9;26387:4;26383:20;26379:1;26368:9;26364:17;26357:47;26421:131;26547:4;26421:131;:::i;:::-;26413:139;;26140:419;;;:::o;26565:::-;26731:4;26769:2;26758:9;26754:18;26746:26;;26818:9;26812:4;26808:20;26804:1;26793:9;26789:17;26782:47;26846:131;26972:4;26846:131;:::i;:::-;26838:139;;26565:419;;;:::o;26990:::-;27156:4;27194:2;27183:9;27179:18;27171:26;;27243:9;27237:4;27233:20;27229:1;27218:9;27214:17;27207:47;27271:131;27397:4;27271:131;:::i;:::-;27263:139;;26990:419;;;:::o;27415:222::-;27508:4;27546:2;27535:9;27531:18;27523:26;;27559:71;27627:1;27616:9;27612:17;27603:6;27559:71;:::i;:::-;27415:222;;;;:::o;27643:332::-;27764:4;27802:2;27791:9;27787:18;27779:26;;27815:71;27883:1;27872:9;27868:17;27859:6;27815:71;:::i;:::-;27896:72;27964:2;27953:9;27949:18;27940:6;27896:72;:::i;:::-;27643:332;;;;;:::o;27981:129::-;28015:6;28042:20;;:::i;:::-;28032:30;;28071:33;28099:4;28091:6;28071:33;:::i;:::-;27981:129;;;:::o;28116:75::-;28149:6;28182:2;28176:9;28166:19;;28116:75;:::o;28197:311::-;28274:4;28364:18;28356:6;28353:30;28350:56;;;28386:18;;:::i;:::-;28350:56;28436:4;28428:6;28424:17;28416:25;;28496:4;28490;28486:15;28478:23;;28197:311;;;:::o;28514:::-;28591:4;28681:18;28673:6;28670:30;28667:56;;;28703:18;;:::i;:::-;28667:56;28753:4;28745:6;28741:17;28733:25;;28813:4;28807;28803:15;28795:23;;28514:311;;;:::o;28831:307::-;28892:4;28982:18;28974:6;28971:30;28968:56;;;29004:18;;:::i;:::-;28968:56;29042:29;29064:6;29042:29;:::i;:::-;29034:37;;29126:4;29120;29116:15;29108:23;;28831:307;;;:::o;29144:132::-;29211:4;29234:3;29226:11;;29264:4;29259:3;29255:14;29247:22;;29144:132;;;:::o;29282:114::-;29349:6;29383:5;29377:12;29367:22;;29282:114;;;:::o;29402:98::-;29453:6;29487:5;29481:12;29471:22;;29402:98;;;:::o;29506:99::-;29558:6;29592:5;29586:12;29576:22;;29506:99;;;:::o;29611:113::-;29681:4;29713;29708:3;29704:14;29696:22;;29611:113;;;:::o;29730:184::-;29829:11;29863:6;29858:3;29851:19;29903:4;29898:3;29894:14;29879:29;;29730:184;;;;:::o;29920:168::-;30003:11;30037:6;30032:3;30025:19;30077:4;30072:3;30068:14;30053:29;;29920:168;;;;:::o;30094:169::-;30178:11;30212:6;30207:3;30200:19;30252:4;30247:3;30243:14;30228:29;;30094:169;;;;:::o;30269:148::-;30371:11;30408:3;30393:18;;30269:148;;;;:::o;30423:305::-;30463:3;30482:20;30500:1;30482:20;:::i;:::-;30477:25;;30516:20;30534:1;30516:20;:::i;:::-;30511:25;;30670:1;30602:66;30598:74;30595:1;30592:81;30589:107;;;30676:18;;:::i;:::-;30589:107;30720:1;30717;30713:9;30706:16;;30423:305;;;;:::o;30734:185::-;30774:1;30791:20;30809:1;30791:20;:::i;:::-;30786:25;;30825:20;30843:1;30825:20;:::i;:::-;30820:25;;30864:1;30854:35;;30869:18;;:::i;:::-;30854:35;30911:1;30908;30904:9;30899:14;;30734:185;;;;:::o;30925:191::-;30965:4;30985:20;31003:1;30985:20;:::i;:::-;30980:25;;31019:20;31037:1;31019:20;:::i;:::-;31014:25;;31058:1;31055;31052:8;31049:34;;;31063:18;;:::i;:::-;31049:34;31108:1;31105;31101:9;31093:17;;30925:191;;;;:::o;31122:96::-;31159:7;31188:24;31206:5;31188:24;:::i;:::-;31177:35;;31122:96;;;:::o;31224:90::-;31258:7;31301:5;31294:13;31287:21;31276:32;;31224:90;;;:::o;31320:149::-;31356:7;31396:66;31389:5;31385:78;31374:89;;31320:149;;;:::o;31475:126::-;31512:7;31552:42;31545:5;31541:54;31530:65;;31475:126;;;:::o;31607:77::-;31644:7;31673:5;31662:16;;31607:77;;;:::o;31690:154::-;31774:6;31769:3;31764;31751:30;31836:1;31827:6;31822:3;31818:16;31811:27;31690:154;;;:::o;31850:307::-;31918:1;31928:113;31942:6;31939:1;31936:13;31928:113;;;32027:1;32022:3;32018:11;32012:18;32008:1;32003:3;31999:11;31992:39;31964:2;31961:1;31957:10;31952:15;;31928:113;;;32059:6;32056:1;32053:13;32050:101;;;32139:1;32130:6;32125:3;32121:16;32114:27;32050:101;31899:258;31850:307;;;:::o;32163:320::-;32207:6;32244:1;32238:4;32234:12;32224:22;;32291:1;32285:4;32281:12;32312:18;32302:81;;32368:4;32360:6;32356:17;32346:27;;32302:81;32430:2;32422:6;32419:14;32399:18;32396:38;32393:84;;;32449:18;;:::i;:::-;32393:84;32214:269;32163:320;;;:::o;32489:281::-;32572:27;32594:4;32572:27;:::i;:::-;32564:6;32560:40;32702:6;32690:10;32687:22;32666:18;32654:10;32651:34;32648:62;32645:88;;;32713:18;;:::i;:::-;32645:88;32753:10;32749:2;32742:22;32532:238;32489:281;;:::o;32776:233::-;32815:3;32838:24;32856:5;32838:24;:::i;:::-;32829:33;;32884:66;32877:5;32874:77;32871:103;;;32954:18;;:::i;:::-;32871:103;33001:1;32994:5;32990:13;32983:20;;32776:233;;;:::o;33015:176::-;33047:1;33064:20;33082:1;33064:20;:::i;:::-;33059:25;;33098:20;33116:1;33098:20;:::i;:::-;33093:25;;33137:1;33127:35;;33142:18;;:::i;:::-;33127:35;33183:1;33180;33176:9;33171:14;;33015:176;;;;:::o;33197:180::-;33245:77;33242:1;33235:88;33342:4;33339:1;33332:15;33366:4;33363:1;33356:15;33383:180;33431:77;33428:1;33421:88;33528:4;33525:1;33518:15;33552:4;33549:1;33542:15;33569:180;33617:77;33614:1;33607:88;33714:4;33711:1;33704:15;33738:4;33735:1;33728:15;33755:180;33803:77;33800:1;33793:88;33900:4;33897:1;33890:15;33924:4;33921:1;33914:15;33941:180;33989:77;33986:1;33979:88;34086:4;34083:1;34076:15;34110:4;34107:1;34100:15;34127:183;34162:3;34200:1;34182:16;34179:23;34176:128;;;34238:1;34235;34232;34217:23;34260:34;34291:1;34285:8;34260:34;:::i;:::-;34253:41;;34176:128;34127:183;:::o;34316:117::-;34425:1;34422;34415:12;34439:117;34548:1;34545;34538:12;34562:117;34671:1;34668;34661:12;34685:117;34794:1;34791;34784:12;34808:117;34917:1;34914;34907:12;34931:102;34972:6;35023:2;35019:7;35014:2;35007:5;35003:14;34999:28;34989:38;;34931:102;;;:::o;35039:106::-;35083:8;35132:5;35127:3;35123:15;35102:36;;35039:106;;;:::o;35151:239::-;35291:34;35287:1;35279:6;35275:14;35268:58;35360:22;35355:2;35347:6;35343:15;35336:47;35151:239;:::o;35396:227::-;35536:34;35532:1;35524:6;35520:14;35513:58;35605:10;35600:2;35592:6;35588:15;35581:35;35396:227;:::o;35629:230::-;35769:34;35765:1;35757:6;35753:14;35746:58;35838:13;35833:2;35825:6;35821:15;35814:38;35629:230;:::o;35865:225::-;36005:34;36001:1;35993:6;35989:14;35982:58;36074:8;36069:2;36061:6;36057:15;36050:33;35865:225;:::o;36096:228::-;36236:34;36232:1;36224:6;36220:14;36213:58;36305:11;36300:2;36292:6;36288:15;36281:36;36096:228;:::o;36330:224::-;36470:34;36466:1;36458:6;36454:14;36447:58;36539:7;36534:2;36526:6;36522:15;36515:32;36330:224;:::o;36560:237::-;36700:34;36696:1;36688:6;36684:14;36677:58;36769:20;36764:2;36756:6;36752:15;36745:45;36560:237;:::o;36803:229::-;36943:34;36939:1;36931:6;36927:14;36920:58;37012:12;37007:2;36999:6;36995:15;36988:37;36803:229;:::o;37038:259::-;37178:34;37174:1;37166:6;37162:14;37155:58;37251:34;37246:2;37238:6;37234:15;37227:59;37038:259;:::o;37307:163::-;37451:7;37447:1;37439:6;37435:14;37428:31;37307:163;:::o;37480:190::-;37624:34;37620:1;37612:6;37608:14;37601:58;37480:190;:::o;37680:240::-;37824:34;37820:1;37812:6;37808:14;37801:58;37897:11;37892:2;37884:6;37880:15;37873:36;37680:240;:::o;37930:::-;38074:34;38070:1;38062:6;38058:14;38051:58;38147:11;38142:2;38134:6;38130:15;38123:36;37930:240;:::o;38180:239::-;38324:34;38320:1;38312:6;38308:14;38301:58;38397:10;38392:2;38384:6;38380:15;38373:35;38180:239;:::o;38429:783::-;38468:3;38510:4;38492:16;38489:26;38486:39;;;38518:5;;38486:39;38551:20;;:::i;:::-;38630:1;38612:16;38608:24;38605:1;38599:4;38584:49;38667:4;38661:11;38778:16;38771:4;38763:6;38759:17;38756:39;38719:18;38711:6;38708:30;38688:125;38685:166;;;38832:5;;;;38685:166;38886:6;38880:4;38876:17;38926:3;38920:10;38957:18;38949:6;38946:30;38943:43;;;38979:5;;;;;;38943:43;39031:6;39024:4;39019:3;39015:14;39011:27;39094:1;39076:16;39072:24;39066:4;39062:35;39057:3;39054:44;39051:57;;;39101:5;;;;;;;39051:57;39122;39170:6;39164:4;39160:17;39152:6;39148:30;39142:4;39122:57;:::i;:::-;39199:3;39192:10;;38472:740;;;;;38429:783;;:::o;39222:130::-;39299:24;39317:5;39299:24;:::i;:::-;39292:5;39289:35;39279:63;;39338:1;39335;39328:12;39279:63;39222:130;:::o;39362:124::-;39436:21;39451:5;39436:21;:::i;:::-;39429:5;39426:32;39416:60;;39472:1;39469;39462:12;39416:60;39362:124;:::o;39496:128::-;39572:23;39589:5;39572:23;:::i;:::-;39565:5;39562:34;39552:62;;39610:1;39607;39600:12;39552:62;39496:128;:::o;39634:130::-;39711:24;39729:5;39711:24;:::i;:::-;39704:5;39701:35;39691:63;;39750:1;39747;39740:12;39691:63;39634:130;:::o
Swarm Source
ipfs://d9cc9f82307ef52a7567a93e1eb79b7e7721445724b19e81195ad93e2a66a215
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.