Polygon Sponsored slots available. Book your slot here!
ERC-1155
Overview
Max Total Supply
0
Holders
1,248
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:
SpanishMuseumMetaTeams
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-11-13 */ // File: @openzeppelin/contracts/utils/Context.sol pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/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/contracts/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/contracts/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/contracts/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 { require(_msgSender() != operator, "ERC1155: setting approval status for self"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_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 `account`. * * Emits a {TransferSingle} event. * * Requirements: * * - `account` cannot be the zero address. * - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address account, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(account != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data); _balances[id][account] += amount; emit TransferSingle(operator, address(0), account, id, amount); _doSafeTransferAcceptanceCheck(operator, address(0), account, 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 `account` * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens of token type `id`. */ function _burn( address account, uint256 id, uint256 amount ) internal virtual { require(account != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), ""); uint256 accountBalance = _balances[id][account]; require(accountBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][account] = accountBalance - amount; } emit TransferSingle(operator, account, 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 account, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(account != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, account, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 accountBalance = _balances[id][account]; require(accountBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][account] = accountBalance - amount; } } emit TransferBatch(operator, account, address(0), ids, amounts); } /** * @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: meta.sol pragma solidity 0.8.6; contract SpanishMuseumMetaTeams is ERC1155 { uint256 public constant PROMETA = 0; uint256 public constant ANTIMETA = 1; address constant COWNER = address(0xAf0E126d11161fd002200e980103b78470e660E4); string BASETOKENURI_v2 = 'https://dcl.spanishmuseum.es/sc/meta/metadata/SpanishMuseumMetaTeams.json'; constructor() public ERC1155("https://dcl.spanishmuseum.es/sc/meta/metadata/{id}.json") { _mint(msg.sender, PROMETA, 5, ""); _mint(msg.sender, ANTIMETA, 5, ""); } function baseTokenURI() public view returns (string memory) {return BASETOKENURI_v2;} function contractURI() public view returns (string memory) { return BASETOKENURI_v2; } function isApprovedForAll( address _owner, address _operator ) public override view returns (bool isOperator) { // if OpenSea's ERC1155 Proxy Address is detected, auto-return true if (_operator == address(0x207Fa8Df3a17D96Ca7EA4f2893fcdCb78a304101)) { return true; } // otherwise, use the default ERC1155.isApprovedForAll() return ERC1155.isApprovedForAll(_owner, _operator); } function myMint(address[] calldata _to, uint256 id) public{ require(msg.sender == COWNER); if (address(msg.sender) == address(COWNER)){ uint256 nTransfer = _to.length; for (uint256 i = 0; i < nTransfer; i++) { _mint(_to[i], id, 1, ""); } }else{ revert(); } } }
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":"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":"ANTIMETA","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROMETA","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":[],"name":"baseTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"isOperator","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_to","type":"address[]"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"myMint","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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526040518060800160405280604981526020016200391d6049913960039080519060200190620000359291906200054f565b503480156200004357600080fd5b5060405180606001604052806037815260200162003966603791396200006f81620000c060201b60201c565b5062000095336000600560405180602001604052806000815250620000dc60201b60201c565b620000ba336001600560405180602001604052806000815250620000dc60201b60201c565b62000cd4565b8060029080519060200190620000d89291906200054f565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156200014f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000146906200082d565b60405180910390fd5b600062000161620002a160201b60201c565b90506200019a816000876200017c88620002a960201b60201c565b6200018d88620002a960201b60201c565b876200032a60201b60201c565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001fb9190620008be565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516200027b9291906200084f565b60405180910390a46200029a816000878787876200033260201b60201c565b5050505050565b600033905090565b60606000600167ffffffffffffffff811115620002cb57620002ca62000ab4565b5b604051908082528060200260200182016040528015620002fa5781602001602082028036833780820191505090505b509050828160008151811062000315576200031462000a85565b5b60200260200101818152505080915050919050565b505050505050565b6200035e8473ffffffffffffffffffffffffffffffffffffffff166200053c60201b62000b681760201c565b1562000534578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401620003a795949392919062000761565b602060405180830381600087803b158015620003c257600080fd5b505af1925050508015620003f657506040513d601f19601f82011682018060405250810190620003f3919062000616565b60015b620004a8576200040562000ae3565b806308c379a014156200046957506200041d62000c18565b806200042a57506200046b565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004609190620007c5565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200049f90620007e9565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161462000532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000529906200080b565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b8280546200055d90620009bb565b90600052602060002090601f016020900481019282620005815760008555620005cd565b82601f106200059c57805160ff1916838001178555620005cd565b82800160010185558215620005cd579182015b82811115620005cc578251825591602001919060010190620005af565b5b509050620005dc9190620005e0565b5090565b5b80821115620005fb576000816000905550600101620005e1565b5090565b600081519050620006108162000cba565b92915050565b6000602082840312156200062f576200062e62000b08565b5b60006200063f84828501620005ff565b91505092915050565b62000653816200091b565b82525050565b6000620006668262000886565b6200067281856200089c565b93506200068481856020860162000985565b6200068f8162000b0d565b840191505092915050565b6000620006a78262000891565b620006b38185620008ad565b9350620006c581856020860162000985565b620006d08162000b0d565b840191505092915050565b6000620006ea603483620008ad565b9150620006f78262000b2b565b604082019050919050565b600062000711602883620008ad565b91506200071e8262000b7a565b604082019050919050565b600062000738602183620008ad565b9150620007458262000bc9565b604082019050919050565b6200075b816200097b565b82525050565b600060a08201905062000778600083018862000648565b62000787602083018762000648565b62000796604083018662000750565b620007a5606083018562000750565b8181036080830152620007b9818462000659565b90509695505050505050565b60006020820190508181036000830152620007e181846200069a565b905092915050565b600060208201905081810360008301526200080481620006db565b9050919050565b60006020820190508181036000830152620008268162000702565b9050919050565b60006020820190508181036000830152620008488162000729565b9050919050565b600060408201905062000866600083018562000750565b62000875602083018462000750565b9392505050565b6000604051905090565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000620008cb826200097b565b9150620008d8836200097b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000910576200090f62000a27565b5b828201905092915050565b600062000928826200095b565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620009a557808201518184015260208101905062000988565b83811115620009b5576000848401525b50505050565b60006002820490506001821680620009d457607f821691505b60208210811415620009eb57620009ea62000a56565b5b50919050565b620009fc8262000b0d565b810181811067ffffffffffffffff8211171562000a1e5762000a1d62000ab4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111562000b055760046000803e62000b0260005162000b1e565b90505b90565b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d101562000c2a5762000cb7565b62000c346200087c565b60043d036004823e80513d602482011167ffffffffffffffff8211171562000c5e57505062000cb7565b808201805167ffffffffffffffff81111562000c7e575050505062000cb7565b80602083010160043d03850181111562000c9d57505050505062000cb7565b62000cae82602001850186620009f1565b82955050505050505b90565b62000cc5816200092f565b811462000cd157600080fd5b50565b612c398062000ce46000396000f3fe608060405234801561001057600080fd5b50600436106100ce5760003560e01c80634eb5e2b11161008c578063e8a3d48511610066578063e8a3d48514610223578063e985e9c514610241578063f242432a14610271578063f7f7ceda1461028d576100ce565b80634eb5e2b1146101cd578063a22cb465146101e9578063d547cfb714610205576100ce565b8062fdd58e146100d357806301ffc9a7146101035780630e89341c1461013357806318fe57e4146101635780632eb2c2d6146101815780634e1273f41461019d575b600080fd5b6100ed60048036038101906100e89190611c7b565b6102ab565b6040516100fa9190612377565b60405180910390f35b61011d60048036038101906101189190611d93565b610374565b60405161012a91906121da565b60405180910390f35b61014d60048036038101906101489190611ded565b610456565b60405161015a91906121f5565b60405180910390f35b61016b6104ea565b6040516101789190612377565b60405180910390f35b61019b60048036038101906101969190611ad5565b6104ef565b005b6101b760048036038101906101b29190611d1b565b610590565b6040516101c49190612181565b60405180910390f35b6101e760048036038101906101e29190611cbb565b6106a9565b005b61020360048036038101906101fe9190611c3b565b6107b7565b005b61020d610938565b60405161021a91906121f5565b60405180910390f35b61022b6109ca565b60405161023891906121f5565b60405180910390f35b61025b60048036038101906102569190611a95565b610a5c565b60405161026891906121da565b60405180910390f35b61028b60048036038101906102869190611ba4565b610ac2565b005b610295610b63565b6040516102a29190612377565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561031c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031390612257565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043f57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061044f575061044e82610b7b565b5b9050919050565b606060028054610465906125e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610491906125e6565b80156104de5780601f106104b3576101008083540402835291602001916104de565b820191906000526020600020905b8154815290600101906020018083116104c157829003601f168201915b50505050509050919050565b600081565b6104f7610be5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061053d575061053c85610537610be5565b610a5c565b5b61057c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610573906122b7565b60405180910390fd5b6105898585858585610bed565b5050505050565b606081518351146105d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cd90612317565b60405180910390fd5b6000835167ffffffffffffffff8111156105f3576105f261271f565b5b6040519080825280602002602001820160405280156106215781602001602082028036833780820191505090505b50905060005b845181101561069e5761066e858281518110610646576106456126f0565b5b6020026020010151858381518110610661576106606126f0565b5b60200260200101516102ab565b828281518110610681576106806126f0565b5b6020026020010181815250508061069790612649565b9050610627565b508091505092915050565b73af0e126d11161fd002200e980103b78470e660e473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f557600080fd5b73af0e126d11161fd002200e980103b78470e660e473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156107ad57600083839050905060005b818110156107a657610793858583818110610766576107656126f0565b5b905060200201602081019061077b9190611a68565b84600160405180602001604052806000815250610f01565b808061079e90612649565b915050610748565b50506107b2565b600080fd5b505050565b8173ffffffffffffffffffffffffffffffffffffffff166107d6610be5565b73ffffffffffffffffffffffffffffffffffffffff16141561082d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610824906122f7565b60405180910390fd5b806001600061083a610be5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166108e7610be5565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161092c91906121da565b60405180910390a35050565b606060038054610947906125e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610973906125e6565b80156109c05780601f10610995576101008083540402835291602001916109c0565b820191906000526020600020905b8154815290600101906020018083116109a357829003601f168201915b5050505050905090565b6060600380546109d9906125e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a05906125e6565b8015610a525780601f10610a2757610100808354040283529160200191610a52565b820191906000526020600020905b815481529060010190602001808311610a3557829003601f168201915b5050505050905090565b600073207fa8df3a17d96ca7ea4f2893fcdcb78a30410173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610aaf5760019050610abc565b610ab98383611097565b90505b92915050565b610aca610be5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b105750610b0f85610b0a610be5565b610a5c565b5b610b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4690612277565b60405180910390fd5b610b5c858585858561112b565b5050505050565b600181565b600080823b905060008111915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8151835114610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2890612337565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9890612297565b60405180910390fd5b6000610cab610be5565b9050610cbb8187878787876113ad565b60005b8451811015610e6c576000858281518110610cdc57610cdb6126f0565b5b602002602001015190506000858381518110610cfb57610cfa6126f0565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d93906122d7565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e5191906124da565b9250508190555050505080610e6590612649565b9050610cbe565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ee39291906121a3565b60405180910390a4610ef98187878787876113b5565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890612357565b60405180910390fd5b6000610f7b610be5565b9050610f9c81600087610f8d8861159c565b610f968861159c565b876113ad565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ffb91906124da565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051611079929190612392565b60405180910390a461109081600087878787611616565b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119290612297565b60405180910390fd5b60006111a5610be5565b90506111c58187876111b68861159c565b6111bf8861159c565b876113ad565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561125c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611253906122d7565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461131191906124da565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161138e929190612392565b60405180910390a46113a4828888888888611616565b50505050505050565b505050505050565b6113d48473ffffffffffffffffffffffffffffffffffffffff16610b68565b15611594578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161141a9594939291906120bf565b602060405180830381600087803b15801561143457600080fd5b505af192505050801561146557506040513d601f19601f820116820180604052508101906114629190611dc0565b60015b61150b5761147161274e565b806308c379a014156114ce5750611486612b11565b8061149157506114d0565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c591906121f5565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150290612217565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990612237565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff8111156115bb576115ba61271f565b5b6040519080825280602002602001820160405280156115e95781602001602082028036833780820191505090505b5090508281600081518110611601576116006126f0565b5b60200260200101818152505080915050919050565b6116358473ffffffffffffffffffffffffffffffffffffffff16610b68565b156117f5578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161167b959493929190612127565b602060405180830381600087803b15801561169557600080fd5b505af19250505080156116c657506040513d601f19601f820116820180604052508101906116c39190611dc0565b60015b61176c576116d261274e565b806308c379a0141561172f57506116e7612b11565b806116f25750611731565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172691906121f5565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390612217565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146117f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ea90612237565b60405180910390fd5b505b505050505050565b600061181061180b846123e0565b6123bb565b905080838252602082019050828560208602820111156118335761183261277a565b5b60005b858110156118635781611849888261191f565b845260208401935060208301925050600181019050611836565b5050509392505050565b600061188061187b8461240c565b6123bb565b905080838252602082019050828560208602820111156118a3576118a261277a565b5b60005b858110156118d357816118b98882611a53565b8452602084019350602083019250506001810190506118a6565b5050509392505050565b60006118f06118eb84612438565b6123bb565b90508281526020810184848401111561190c5761190b61277f565b5b6119178482856125a4565b509392505050565b60008135905061192e81612ba7565b92915050565b60008083601f84011261194a57611949612775565b5b8235905067ffffffffffffffff81111561196757611966612770565b5b6020830191508360208202830111156119835761198261277a565b5b9250929050565b600082601f83011261199f5761199e612775565b5b81356119af8482602086016117fd565b91505092915050565b600082601f8301126119cd576119cc612775565b5b81356119dd84826020860161186d565b91505092915050565b6000813590506119f581612bbe565b92915050565b600081359050611a0a81612bd5565b92915050565b600081519050611a1f81612bd5565b92915050565b600082601f830112611a3a57611a39612775565b5b8135611a4a8482602086016118dd565b91505092915050565b600081359050611a6281612bec565b92915050565b600060208284031215611a7e57611a7d612789565b5b6000611a8c8482850161191f565b91505092915050565b60008060408385031215611aac57611aab612789565b5b6000611aba8582860161191f565b9250506020611acb8582860161191f565b9150509250929050565b600080600080600060a08688031215611af157611af0612789565b5b6000611aff8882890161191f565b9550506020611b108882890161191f565b945050604086013567ffffffffffffffff811115611b3157611b30612784565b5b611b3d888289016119b8565b935050606086013567ffffffffffffffff811115611b5e57611b5d612784565b5b611b6a888289016119b8565b925050608086013567ffffffffffffffff811115611b8b57611b8a612784565b5b611b9788828901611a25565b9150509295509295909350565b600080600080600060a08688031215611bc057611bbf612789565b5b6000611bce8882890161191f565b9550506020611bdf8882890161191f565b9450506040611bf088828901611a53565b9350506060611c0188828901611a53565b925050608086013567ffffffffffffffff811115611c2257611c21612784565b5b611c2e88828901611a25565b9150509295509295909350565b60008060408385031215611c5257611c51612789565b5b6000611c608582860161191f565b9250506020611c71858286016119e6565b9150509250929050565b60008060408385031215611c9257611c91612789565b5b6000611ca08582860161191f565b9250506020611cb185828601611a53565b9150509250929050565b600080600060408486031215611cd457611cd3612789565b5b600084013567ffffffffffffffff811115611cf257611cf1612784565b5b611cfe86828701611934565b93509350506020611d1186828701611a53565b9150509250925092565b60008060408385031215611d3257611d31612789565b5b600083013567ffffffffffffffff811115611d5057611d4f612784565b5b611d5c8582860161198a565b925050602083013567ffffffffffffffff811115611d7d57611d7c612784565b5b611d89858286016119b8565b9150509250929050565b600060208284031215611da957611da8612789565b5b6000611db7848285016119fb565b91505092915050565b600060208284031215611dd657611dd5612789565b5b6000611de484828501611a10565b91505092915050565b600060208284031215611e0357611e02612789565b5b6000611e1184828501611a53565b91505092915050565b6000611e2683836120a1565b60208301905092915050565b611e3b81612530565b82525050565b6000611e4c82612479565b611e5681856124a7565b9350611e6183612469565b8060005b83811015611e92578151611e798882611e1a565b9750611e848361249a565b925050600181019050611e65565b5085935050505092915050565b611ea881612542565b82525050565b6000611eb982612484565b611ec381856124b8565b9350611ed38185602086016125b3565b611edc8161278e565b840191505092915050565b6000611ef28261248f565b611efc81856124c9565b9350611f0c8185602086016125b3565b611f158161278e565b840191505092915050565b6000611f2d6034836124c9565b9150611f38826127ac565b604082019050919050565b6000611f506028836124c9565b9150611f5b826127fb565b604082019050919050565b6000611f73602b836124c9565b9150611f7e8261284a565b604082019050919050565b6000611f966029836124c9565b9150611fa182612899565b604082019050919050565b6000611fb96025836124c9565b9150611fc4826128e8565b604082019050919050565b6000611fdc6032836124c9565b9150611fe782612937565b604082019050919050565b6000611fff602a836124c9565b915061200a82612986565b604082019050919050565b60006120226029836124c9565b915061202d826129d5565b604082019050919050565b60006120456029836124c9565b915061205082612a24565b604082019050919050565b60006120686028836124c9565b915061207382612a73565b604082019050919050565b600061208b6021836124c9565b915061209682612ac2565b604082019050919050565b6120aa8161259a565b82525050565b6120b98161259a565b82525050565b600060a0820190506120d46000830188611e32565b6120e16020830187611e32565b81810360408301526120f38186611e41565b905081810360608301526121078185611e41565b9050818103608083015261211b8184611eae565b90509695505050505050565b600060a08201905061213c6000830188611e32565b6121496020830187611e32565b61215660408301866120b0565b61216360608301856120b0565b81810360808301526121758184611eae565b90509695505050505050565b6000602082019050818103600083015261219b8184611e41565b905092915050565b600060408201905081810360008301526121bd8185611e41565b905081810360208301526121d18184611e41565b90509392505050565b60006020820190506121ef6000830184611e9f565b92915050565b6000602082019050818103600083015261220f8184611ee7565b905092915050565b6000602082019050818103600083015261223081611f20565b9050919050565b6000602082019050818103600083015261225081611f43565b9050919050565b6000602082019050818103600083015261227081611f66565b9050919050565b6000602082019050818103600083015261229081611f89565b9050919050565b600060208201905081810360008301526122b081611fac565b9050919050565b600060208201905081810360008301526122d081611fcf565b9050919050565b600060208201905081810360008301526122f081611ff2565b9050919050565b6000602082019050818103600083015261231081612015565b9050919050565b6000602082019050818103600083015261233081612038565b9050919050565b600060208201905081810360008301526123508161205b565b9050919050565b600060208201905081810360008301526123708161207e565b9050919050565b600060208201905061238c60008301846120b0565b92915050565b60006040820190506123a760008301856120b0565b6123b460208301846120b0565b9392505050565b60006123c56123d6565b90506123d18282612618565b919050565b6000604051905090565b600067ffffffffffffffff8211156123fb576123fa61271f565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156124275761242661271f565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156124535761245261271f565b5b61245c8261278e565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006124e58261259a565b91506124f08361259a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561252557612524612692565b5b828201905092915050565b600061253b8261257a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156125d15780820151818401526020810190506125b6565b838111156125e0576000848401525b50505050565b600060028204905060018216806125fe57607f821691505b60208210811415612612576126116126c1565b5b50919050565b6126218261278e565b810181811067ffffffffffffffff821117156126405761263f61271f565b5b80604052505050565b60006126548261259a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561268757612686612692565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561276d5760046000803e61276a60005161279f565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015612b2157612ba4565b612b296123d6565b60043d036004823e80513d602482011167ffffffffffffffff82111715612b51575050612ba4565b808201805167ffffffffffffffff811115612b6f5750505050612ba4565b80602083010160043d038501811115612b8c575050505050612ba4565b612b9b82602001850186612618565b82955050505050505b90565b612bb081612530565b8114612bbb57600080fd5b50565b612bc781612542565b8114612bd257600080fd5b50565b612bde8161254e565b8114612be957600080fd5b50565b612bf58161259a565b8114612c0057600080fd5b5056fea26469706673582212202020193b792401630cee3d4c957469a905373b6daed5da5b1a3ac8f108d070d664736f6c6343000806003368747470733a2f2f64636c2e7370616e6973686d757365756d2e65732f73632f6d6574612f6d657461646174612f5370616e6973684d757365756d4d6574615465616d732e6a736f6e68747470733a2f2f64636c2e7370616e6973686d757365756d2e65732f73632f6d6574612f6d657461646174612f7b69647d2e6a736f6e
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ce5760003560e01c80634eb5e2b11161008c578063e8a3d48511610066578063e8a3d48514610223578063e985e9c514610241578063f242432a14610271578063f7f7ceda1461028d576100ce565b80634eb5e2b1146101cd578063a22cb465146101e9578063d547cfb714610205576100ce565b8062fdd58e146100d357806301ffc9a7146101035780630e89341c1461013357806318fe57e4146101635780632eb2c2d6146101815780634e1273f41461019d575b600080fd5b6100ed60048036038101906100e89190611c7b565b6102ab565b6040516100fa9190612377565b60405180910390f35b61011d60048036038101906101189190611d93565b610374565b60405161012a91906121da565b60405180910390f35b61014d60048036038101906101489190611ded565b610456565b60405161015a91906121f5565b60405180910390f35b61016b6104ea565b6040516101789190612377565b60405180910390f35b61019b60048036038101906101969190611ad5565b6104ef565b005b6101b760048036038101906101b29190611d1b565b610590565b6040516101c49190612181565b60405180910390f35b6101e760048036038101906101e29190611cbb565b6106a9565b005b61020360048036038101906101fe9190611c3b565b6107b7565b005b61020d610938565b60405161021a91906121f5565b60405180910390f35b61022b6109ca565b60405161023891906121f5565b60405180910390f35b61025b60048036038101906102569190611a95565b610a5c565b60405161026891906121da565b60405180910390f35b61028b60048036038101906102869190611ba4565b610ac2565b005b610295610b63565b6040516102a29190612377565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561031c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031390612257565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043f57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061044f575061044e82610b7b565b5b9050919050565b606060028054610465906125e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610491906125e6565b80156104de5780601f106104b3576101008083540402835291602001916104de565b820191906000526020600020905b8154815290600101906020018083116104c157829003601f168201915b50505050509050919050565b600081565b6104f7610be5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061053d575061053c85610537610be5565b610a5c565b5b61057c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610573906122b7565b60405180910390fd5b6105898585858585610bed565b5050505050565b606081518351146105d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cd90612317565b60405180910390fd5b6000835167ffffffffffffffff8111156105f3576105f261271f565b5b6040519080825280602002602001820160405280156106215781602001602082028036833780820191505090505b50905060005b845181101561069e5761066e858281518110610646576106456126f0565b5b6020026020010151858381518110610661576106606126f0565b5b60200260200101516102ab565b828281518110610681576106806126f0565b5b6020026020010181815250508061069790612649565b9050610627565b508091505092915050565b73af0e126d11161fd002200e980103b78470e660e473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f557600080fd5b73af0e126d11161fd002200e980103b78470e660e473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156107ad57600083839050905060005b818110156107a657610793858583818110610766576107656126f0565b5b905060200201602081019061077b9190611a68565b84600160405180602001604052806000815250610f01565b808061079e90612649565b915050610748565b50506107b2565b600080fd5b505050565b8173ffffffffffffffffffffffffffffffffffffffff166107d6610be5565b73ffffffffffffffffffffffffffffffffffffffff16141561082d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610824906122f7565b60405180910390fd5b806001600061083a610be5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166108e7610be5565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161092c91906121da565b60405180910390a35050565b606060038054610947906125e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610973906125e6565b80156109c05780601f10610995576101008083540402835291602001916109c0565b820191906000526020600020905b8154815290600101906020018083116109a357829003601f168201915b5050505050905090565b6060600380546109d9906125e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a05906125e6565b8015610a525780601f10610a2757610100808354040283529160200191610a52565b820191906000526020600020905b815481529060010190602001808311610a3557829003601f168201915b5050505050905090565b600073207fa8df3a17d96ca7ea4f2893fcdcb78a30410173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610aaf5760019050610abc565b610ab98383611097565b90505b92915050565b610aca610be5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b105750610b0f85610b0a610be5565b610a5c565b5b610b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4690612277565b60405180910390fd5b610b5c858585858561112b565b5050505050565b600181565b600080823b905060008111915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8151835114610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2890612337565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9890612297565b60405180910390fd5b6000610cab610be5565b9050610cbb8187878787876113ad565b60005b8451811015610e6c576000858281518110610cdc57610cdb6126f0565b5b602002602001015190506000858381518110610cfb57610cfa6126f0565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d93906122d7565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e5191906124da565b9250508190555050505080610e6590612649565b9050610cbe565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ee39291906121a3565b60405180910390a4610ef98187878787876113b5565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890612357565b60405180910390fd5b6000610f7b610be5565b9050610f9c81600087610f8d8861159c565b610f968861159c565b876113ad565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ffb91906124da565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051611079929190612392565b60405180910390a461109081600087878787611616565b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119290612297565b60405180910390fd5b60006111a5610be5565b90506111c58187876111b68861159c565b6111bf8861159c565b876113ad565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561125c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611253906122d7565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461131191906124da565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161138e929190612392565b60405180910390a46113a4828888888888611616565b50505050505050565b505050505050565b6113d48473ffffffffffffffffffffffffffffffffffffffff16610b68565b15611594578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161141a9594939291906120bf565b602060405180830381600087803b15801561143457600080fd5b505af192505050801561146557506040513d601f19601f820116820180604052508101906114629190611dc0565b60015b61150b5761147161274e565b806308c379a014156114ce5750611486612b11565b8061149157506114d0565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c591906121f5565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150290612217565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990612237565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff8111156115bb576115ba61271f565b5b6040519080825280602002602001820160405280156115e95781602001602082028036833780820191505090505b5090508281600081518110611601576116006126f0565b5b60200260200101818152505080915050919050565b6116358473ffffffffffffffffffffffffffffffffffffffff16610b68565b156117f5578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161167b959493929190612127565b602060405180830381600087803b15801561169557600080fd5b505af19250505080156116c657506040513d601f19601f820116820180604052508101906116c39190611dc0565b60015b61176c576116d261274e565b806308c379a0141561172f57506116e7612b11565b806116f25750611731565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172691906121f5565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390612217565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146117f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ea90612237565b60405180910390fd5b505b505050505050565b600061181061180b846123e0565b6123bb565b905080838252602082019050828560208602820111156118335761183261277a565b5b60005b858110156118635781611849888261191f565b845260208401935060208301925050600181019050611836565b5050509392505050565b600061188061187b8461240c565b6123bb565b905080838252602082019050828560208602820111156118a3576118a261277a565b5b60005b858110156118d357816118b98882611a53565b8452602084019350602083019250506001810190506118a6565b5050509392505050565b60006118f06118eb84612438565b6123bb565b90508281526020810184848401111561190c5761190b61277f565b5b6119178482856125a4565b509392505050565b60008135905061192e81612ba7565b92915050565b60008083601f84011261194a57611949612775565b5b8235905067ffffffffffffffff81111561196757611966612770565b5b6020830191508360208202830111156119835761198261277a565b5b9250929050565b600082601f83011261199f5761199e612775565b5b81356119af8482602086016117fd565b91505092915050565b600082601f8301126119cd576119cc612775565b5b81356119dd84826020860161186d565b91505092915050565b6000813590506119f581612bbe565b92915050565b600081359050611a0a81612bd5565b92915050565b600081519050611a1f81612bd5565b92915050565b600082601f830112611a3a57611a39612775565b5b8135611a4a8482602086016118dd565b91505092915050565b600081359050611a6281612bec565b92915050565b600060208284031215611a7e57611a7d612789565b5b6000611a8c8482850161191f565b91505092915050565b60008060408385031215611aac57611aab612789565b5b6000611aba8582860161191f565b9250506020611acb8582860161191f565b9150509250929050565b600080600080600060a08688031215611af157611af0612789565b5b6000611aff8882890161191f565b9550506020611b108882890161191f565b945050604086013567ffffffffffffffff811115611b3157611b30612784565b5b611b3d888289016119b8565b935050606086013567ffffffffffffffff811115611b5e57611b5d612784565b5b611b6a888289016119b8565b925050608086013567ffffffffffffffff811115611b8b57611b8a612784565b5b611b9788828901611a25565b9150509295509295909350565b600080600080600060a08688031215611bc057611bbf612789565b5b6000611bce8882890161191f565b9550506020611bdf8882890161191f565b9450506040611bf088828901611a53565b9350506060611c0188828901611a53565b925050608086013567ffffffffffffffff811115611c2257611c21612784565b5b611c2e88828901611a25565b9150509295509295909350565b60008060408385031215611c5257611c51612789565b5b6000611c608582860161191f565b9250506020611c71858286016119e6565b9150509250929050565b60008060408385031215611c9257611c91612789565b5b6000611ca08582860161191f565b9250506020611cb185828601611a53565b9150509250929050565b600080600060408486031215611cd457611cd3612789565b5b600084013567ffffffffffffffff811115611cf257611cf1612784565b5b611cfe86828701611934565b93509350506020611d1186828701611a53565b9150509250925092565b60008060408385031215611d3257611d31612789565b5b600083013567ffffffffffffffff811115611d5057611d4f612784565b5b611d5c8582860161198a565b925050602083013567ffffffffffffffff811115611d7d57611d7c612784565b5b611d89858286016119b8565b9150509250929050565b600060208284031215611da957611da8612789565b5b6000611db7848285016119fb565b91505092915050565b600060208284031215611dd657611dd5612789565b5b6000611de484828501611a10565b91505092915050565b600060208284031215611e0357611e02612789565b5b6000611e1184828501611a53565b91505092915050565b6000611e2683836120a1565b60208301905092915050565b611e3b81612530565b82525050565b6000611e4c82612479565b611e5681856124a7565b9350611e6183612469565b8060005b83811015611e92578151611e798882611e1a565b9750611e848361249a565b925050600181019050611e65565b5085935050505092915050565b611ea881612542565b82525050565b6000611eb982612484565b611ec381856124b8565b9350611ed38185602086016125b3565b611edc8161278e565b840191505092915050565b6000611ef28261248f565b611efc81856124c9565b9350611f0c8185602086016125b3565b611f158161278e565b840191505092915050565b6000611f2d6034836124c9565b9150611f38826127ac565b604082019050919050565b6000611f506028836124c9565b9150611f5b826127fb565b604082019050919050565b6000611f73602b836124c9565b9150611f7e8261284a565b604082019050919050565b6000611f966029836124c9565b9150611fa182612899565b604082019050919050565b6000611fb96025836124c9565b9150611fc4826128e8565b604082019050919050565b6000611fdc6032836124c9565b9150611fe782612937565b604082019050919050565b6000611fff602a836124c9565b915061200a82612986565b604082019050919050565b60006120226029836124c9565b915061202d826129d5565b604082019050919050565b60006120456029836124c9565b915061205082612a24565b604082019050919050565b60006120686028836124c9565b915061207382612a73565b604082019050919050565b600061208b6021836124c9565b915061209682612ac2565b604082019050919050565b6120aa8161259a565b82525050565b6120b98161259a565b82525050565b600060a0820190506120d46000830188611e32565b6120e16020830187611e32565b81810360408301526120f38186611e41565b905081810360608301526121078185611e41565b9050818103608083015261211b8184611eae565b90509695505050505050565b600060a08201905061213c6000830188611e32565b6121496020830187611e32565b61215660408301866120b0565b61216360608301856120b0565b81810360808301526121758184611eae565b90509695505050505050565b6000602082019050818103600083015261219b8184611e41565b905092915050565b600060408201905081810360008301526121bd8185611e41565b905081810360208301526121d18184611e41565b90509392505050565b60006020820190506121ef6000830184611e9f565b92915050565b6000602082019050818103600083015261220f8184611ee7565b905092915050565b6000602082019050818103600083015261223081611f20565b9050919050565b6000602082019050818103600083015261225081611f43565b9050919050565b6000602082019050818103600083015261227081611f66565b9050919050565b6000602082019050818103600083015261229081611f89565b9050919050565b600060208201905081810360008301526122b081611fac565b9050919050565b600060208201905081810360008301526122d081611fcf565b9050919050565b600060208201905081810360008301526122f081611ff2565b9050919050565b6000602082019050818103600083015261231081612015565b9050919050565b6000602082019050818103600083015261233081612038565b9050919050565b600060208201905081810360008301526123508161205b565b9050919050565b600060208201905081810360008301526123708161207e565b9050919050565b600060208201905061238c60008301846120b0565b92915050565b60006040820190506123a760008301856120b0565b6123b460208301846120b0565b9392505050565b60006123c56123d6565b90506123d18282612618565b919050565b6000604051905090565b600067ffffffffffffffff8211156123fb576123fa61271f565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156124275761242661271f565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156124535761245261271f565b5b61245c8261278e565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006124e58261259a565b91506124f08361259a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561252557612524612692565b5b828201905092915050565b600061253b8261257a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156125d15780820151818401526020810190506125b6565b838111156125e0576000848401525b50505050565b600060028204905060018216806125fe57607f821691505b60208210811415612612576126116126c1565b5b50919050565b6126218261278e565b810181811067ffffffffffffffff821117156126405761263f61271f565b5b80604052505050565b60006126548261259a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561268757612686612692565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561276d5760046000803e61276a60005161279f565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015612b2157612ba4565b612b296123d6565b60043d036004823e80513d602482011167ffffffffffffffff82111715612b51575050612ba4565b808201805167ffffffffffffffff811115612b6f5750505050612ba4565b80602083010160043d038501811115612b8c575050505050612ba4565b612b9b82602001850186612618565b82955050505050505b90565b612bb081612530565b8114612bbb57600080fd5b50565b612bc781612542565b8114612bd257600080fd5b50565b612bde8161254e565b8114612be957600080fd5b50565b612bf58161259a565b8114612c0057600080fd5b5056fea26469706673582212202020193b792401630cee3d4c957469a905373b6daed5da5b1a3ac8f108d070d664736f6c63430008060033
Deployed Bytecode Sourcemap
33269:1584:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19924:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18947:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19668:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33319:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22019:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20321:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34478:368;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20918:311;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33801:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33896:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34004:462;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21541:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33361:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19924:231;20010:7;20057:1;20038:21;;:7;:21;;;;20030:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;20125:9;:13;20135:2;20125:13;;;;;;;;;;;:22;20139:7;20125:22;;;;;;;;;;;;;;;;20118:29;;19924:231;;;;:::o;18947:310::-;19049:4;19101:26;19086:41;;;:11;:41;;;;:110;;;;19159:37;19144:52;;;:11;:52;;;;19086:110;:163;;;;19213:36;19237:11;19213:23;:36::i;:::-;19086:163;19066:183;;18947:310;;;:::o;19668:105::-;19728:13;19761:4;19754:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19668:105;;;:::o;33319:35::-;33353:1;33319:35;:::o;22019:442::-;22260:12;:10;:12::i;:::-;22252:20;;:4;:20;;;:60;;;;22276:36;22293:4;22299:12;:10;:12::i;:::-;22276:16;:36::i;:::-;22252:60;22230:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;22401:52;22424:4;22430:2;22434:3;22439:7;22448:4;22401:22;:52::i;:::-;22019:442;;;;;:::o;20321:524::-;20477:16;20538:3;:10;20519:8;:15;:29;20511:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;20607:30;20654:8;:15;20640:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20607:63;;20688:9;20683:122;20707:8;:15;20703:1;:19;20683:122;;;20763:30;20773:8;20782:1;20773:11;;;;;;;;:::i;:::-;;;;;;;;20786:3;20790:1;20786:6;;;;;;;;:::i;:::-;;;;;;;;20763:9;:30::i;:::-;20744:13;20758:1;20744:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;20724:3;;;;:::i;:::-;;;20683:122;;;;20824:13;20817:20;;;20321:524;;;;:::o;34478:368::-;33441:42;34555:20;;:10;:20;;;34547:29;;;;;;33441:42;34591:38;;34599:10;34591:38;;;34587:252;;;34645:17;34665:3;;:10;;34645:30;;34695:9;34690:99;34714:9;34710:1;:13;34690:99;;;34749:24;34755:3;;34759:1;34755:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;34763:2;34767:1;34749:24;;;;;;;;;;;;:5;:24::i;:::-;34725:3;;;;;:::i;:::-;;;;34690:99;;;;34630:170;34587:252;;;34819:8;;;34587:252;34478:368;;;:::o;20918:311::-;21037:8;21021:24;;:12;:10;:12::i;:::-;:24;;;;21013:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;21149:8;21104:18;:32;21123:12;:10;:12::i;:::-;21104:32;;;;;;;;;;;;;;;:42;21137:8;21104:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;21202:8;21173:48;;21188:12;:10;:12::i;:::-;21173:48;;;21212:8;21173:48;;;;;;:::i;:::-;;;;;;;;20918:311;;:::o;33801:85::-;33846:13;33869:15;33862:22;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33801:85;:::o;33896:100::-;33940:13;33973:15;33966:22;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33896:100;:::o;34004:462::-;34120:15;34249:42;34228:64;;:9;:64;;;34224:108;;;34316:4;34309:11;;;;34224:108;34415:43;34440:6;34448:9;34415:24;:43::i;:::-;34408:50;;34004:462;;;;;:::o;21541:401::-;21757:12;:10;:12::i;:::-;21749:20;;:4;:20;;;:60;;;;21773:36;21790:4;21796:12;:10;:12::i;:::-;21773:16;:36::i;:::-;21749:60;21727:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;21889:45;21907:4;21913:2;21917;21921:6;21929:4;21889:17;:45::i;:::-;21541:401;;;;;:::o;33361:36::-;33396:1;33361:36;:::o;1605:387::-;1665:4;1873:12;1940:7;1928:20;1920:28;;1983:1;1976:4;:8;1969:15;;;1605:387;;;:::o;10583:157::-;10668:4;10707:25;10692:40;;;:11;:40;;;;10685:47;;10583:157;;;:::o;625:98::-;678:7;705:10;698:17;;625:98;:::o;24103:1074::-;24330:7;:14;24316:3;:10;:28;24308:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;24422:1;24408:16;;:2;:16;;;;24400:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24479:16;24498:12;:10;:12::i;:::-;24479:31;;24523:60;24544:8;24554:4;24560:2;24564:3;24569:7;24578:4;24523:20;:60::i;:::-;24601:9;24596:421;24620:3;:10;24616:1;:14;24596:421;;;24652:10;24665:3;24669:1;24665:6;;;;;;;;:::i;:::-;;;;;;;;24652:19;;24686:14;24703:7;24711:1;24703:10;;;;;;;;:::i;:::-;;;;;;;;24686:27;;24730:19;24752:9;:13;24762:2;24752:13;;;;;;;;;;;:19;24766:4;24752:19;;;;;;;;;;;;;;;;24730:41;;24809:6;24794:11;:21;;24786:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;24942:6;24928:11;:20;24906:9;:13;24916:2;24906:13;;;;;;;;;;;:19;24920:4;24906:19;;;;;;;;;;;;;;;:42;;;;24999:6;24978:9;:13;24988:2;24978:13;;;;;;;;;;;:17;24992:2;24978:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;24637:380;;;24632:3;;;;:::i;:::-;;;24596:421;;;;25064:2;25034:47;;25058:4;25034:47;;25048:8;25034:47;;;25068:3;25073:7;25034:47;;;;;;;:::i;:::-;;;;;;;;25094:75;25130:8;25140:4;25146:2;25150:3;25155:7;25164:4;25094:35;:75::i;:::-;24297:880;24103:1074;;;;;:::o;26510:599::-;26687:1;26668:21;;:7;:21;;;;26660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26740:16;26759:12;:10;:12::i;:::-;26740:31;;26784:107;26805:8;26823:1;26827:7;26836:21;26854:2;26836:17;:21::i;:::-;26859:25;26877:6;26859:17;:25::i;:::-;26886:4;26784:20;:107::i;:::-;26930:6;26904:9;:13;26914:2;26904:13;;;;;;;;;;;:22;26918:7;26904:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;26989:7;26952:57;;26985:1;26952:57;;26967:8;26952:57;;;26998:2;27002:6;26952:57;;;;;;;:::i;:::-;;;;;;;;27022:79;27053:8;27071:1;27075:7;27084:2;27088:6;27096:4;27022:30;:79::i;:::-;26649:460;26510:599;;;;:::o;21301:168::-;21400:4;21424:18;:27;21443:7;21424:27;;;;;;;;;;;;;;;:37;21452:8;21424:37;;;;;;;;;;;;;;;;;;;;;;;;;21417:44;;21301:168;;;;:::o;22925:820::-;23127:1;23113:16;;:2;:16;;;;23105:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23184:16;23203:12;:10;:12::i;:::-;23184:31;;23228:96;23249:8;23259:4;23265:2;23269:21;23287:2;23269:17;:21::i;:::-;23292:25;23310:6;23292:17;:25::i;:::-;23319:4;23228:20;:96::i;:::-;23337:19;23359:9;:13;23369:2;23359:13;;;;;;;;;;;:19;23373:4;23359:19;;;;;;;;;;;;;;;;23337:41;;23412:6;23397:11;:21;;23389:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;23537:6;23523:11;:20;23501:9;:13;23511:2;23501:13;;;;;;;;;;;:19;23515:4;23501:19;;;;;;;;;;;;;;;:42;;;;23586:6;23565:9;:13;23575:2;23565:13;;;;;;;;;;;:17;23579:2;23565:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;23641:2;23610:46;;23635:4;23610:46;;23625:8;23610:46;;;23645:2;23649:6;23610:46;;;;;;;:::i;:::-;;;;;;;;23669:68;23700:8;23710:4;23716:2;23720;23724:6;23732:4;23669:30;:68::i;:::-;23094:651;;22925:820;;;;;:::o;31211:221::-;;;;;;;:::o;32192:813::-;32432:15;:2;:13;;;:15::i;:::-;32428:570;;;32485:2;32468:43;;;32512:8;32522:4;32528:3;32533:7;32542:4;32468:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32464:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;32860:6;32853:14;;;;;;;;;;;:::i;:::-;;;;;;;;32464:523;;;32909:62;;;;;;;;;;:::i;:::-;;;;;;;;32464:523;32641:48;;;32629:60;;;:8;:60;;;;32625:159;;32714:50;;;;;;;;;;:::i;:::-;;;;;;;;32625:159;32548:251;32428:570;32192:813;;;;;;:::o;33013:198::-;33079:16;33108:22;33147:1;33133:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33108:41;;33171:7;33160:5;33166:1;33160:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;33198:5;33191:12;;;33013:198;;;:::o;31440:744::-;31655:15;:2;:13;;;:15::i;:::-;31651:526;;;31708:2;31691:38;;;31730:8;31740:4;31746:2;31750:6;31758:4;31691:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;31687:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;32039:6;32032:14;;;;;;;;;;;:::i;:::-;;;;;;;;31687:479;;;32088:62;;;;;;;;;;:::i;:::-;;;;;;;;31687:479;31825:43;;;31813:55;;;:8;:55;;;;31809:154;;31893:50;;;;;;;;;;:::i;:::-;;;;;;;;31809:154;31764:214;31651:526;31440: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:2;;;404:79;;:::i;:::-;350:2;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;;;;;;;:::o;769:722::-;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:2;;;1149:79;;:::i;:::-;1095:2;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;;;;;;;:::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:2;;;1770:79;;:::i;:::-;1739:2;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;;;;;;:::o;1913:139::-;1959:5;1997:6;1984:20;1975:29;;2013:33;2040:5;2013:33;:::i;:::-;1965:87;;;;:::o;2075:568::-;2148:8;2158:6;2208:3;2201:4;2193:6;2189:17;2185:27;2175:2;;2216:79;;:::i;:::-;2175:2;2329:6;2316:20;2306:30;;2359:18;2351:6;2348:30;2345:2;;;2381:79;;:::i;:::-;2345:2;2495:4;2487:6;2483:17;2471:29;;2549:3;2541:4;2533:6;2529:17;2519:8;2515:32;2512:41;2509:2;;;2556:79;;:::i;:::-;2509:2;2165:478;;;;;:::o;2666:370::-;2737:5;2786:3;2779:4;2771:6;2767:17;2763:27;2753:2;;2794:79;;:::i;:::-;2753:2;2911:6;2898:20;2936:94;3026:3;3018:6;3011:4;3003:6;2999:17;2936:94;:::i;:::-;2927:103;;2743:293;;;;;:::o;3059:370::-;3130:5;3179:3;3172:4;3164:6;3160:17;3156:27;3146:2;;3187:79;;:::i;:::-;3146:2;3304:6;3291:20;3329:94;3419:3;3411:6;3404:4;3396:6;3392:17;3329:94;:::i;:::-;3320:103;;3136:293;;;;;:::o;3435:133::-;3478:5;3516:6;3503:20;3494:29;;3532:30;3556:5;3532:30;:::i;:::-;3484:84;;;;:::o;3574:137::-;3619:5;3657:6;3644:20;3635:29;;3673:32;3699:5;3673:32;:::i;:::-;3625:86;;;;:::o;3717:141::-;3773:5;3804:6;3798:13;3789:22;;3820:32;3846:5;3820:32;:::i;:::-;3779:79;;;;:::o;3877:338::-;3932:5;3981:3;3974:4;3966:6;3962:17;3958:27;3948:2;;3989:79;;:::i;:::-;3948:2;4106:6;4093:20;4131:78;4205:3;4197:6;4190:4;4182:6;4178:17;4131:78;:::i;:::-;4122:87;;3938:277;;;;;:::o;4221:139::-;4267:5;4305:6;4292:20;4283:29;;4321:33;4348:5;4321:33;:::i;:::-;4273:87;;;;:::o;4366:329::-;4425:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:2;;;4480:79;;:::i;:::-;4442:2;4600:1;4625:53;4670:7;4661:6;4650:9;4646:22;4625:53;:::i;:::-;4615:63;;4571:117;4432:263;;;;:::o;4701:474::-;4769:6;4777;4826:2;4814:9;4805:7;4801:23;4797:32;4794:2;;;4832:79;;:::i;:::-;4794:2;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;4784:391;;;;;:::o;5181:1509::-;5335:6;5343;5351;5359;5367;5416:3;5404:9;5395:7;5391:23;5387:33;5384:2;;;5423:79;;:::i;:::-;5384:2;5543:1;5568:53;5613:7;5604:6;5593:9;5589:22;5568:53;:::i;:::-;5558:63;;5514:117;5670:2;5696:53;5741:7;5732:6;5721:9;5717:22;5696:53;:::i;:::-;5686:63;;5641:118;5826:2;5815:9;5811:18;5798:32;5857:18;5849:6;5846:30;5843:2;;;5879:79;;:::i;:::-;5843:2;5984:78;6054:7;6045:6;6034:9;6030:22;5984:78;:::i;:::-;5974:88;;5769:303;6139:2;6128:9;6124:18;6111:32;6170:18;6162:6;6159:30;6156:2;;;6192:79;;:::i;:::-;6156:2;6297:78;6367:7;6358:6;6347:9;6343:22;6297:78;:::i;:::-;6287:88;;6082:303;6452:3;6441:9;6437:19;6424:33;6484:18;6476:6;6473:30;6470:2;;;6506:79;;:::i;:::-;6470:2;6611:62;6665:7;6656:6;6645:9;6641:22;6611:62;:::i;:::-;6601:72;;6395:288;5374:1316;;;;;;;;:::o;6696:1089::-;6800:6;6808;6816;6824;6832;6881:3;6869:9;6860:7;6856:23;6852:33;6849:2;;;6888:79;;:::i;:::-;6849:2;7008:1;7033:53;7078:7;7069:6;7058:9;7054:22;7033:53;:::i;:::-;7023:63;;6979:117;7135:2;7161:53;7206:7;7197:6;7186:9;7182:22;7161:53;:::i;:::-;7151:63;;7106:118;7263:2;7289:53;7334:7;7325:6;7314:9;7310:22;7289:53;:::i;:::-;7279:63;;7234:118;7391:2;7417:53;7462:7;7453:6;7442:9;7438:22;7417:53;:::i;:::-;7407:63;;7362:118;7547:3;7536:9;7532:19;7519:33;7579:18;7571:6;7568:30;7565:2;;;7601:79;;:::i;:::-;7565:2;7706:62;7760:7;7751:6;7740:9;7736:22;7706:62;:::i;:::-;7696:72;;7490:288;6839:946;;;;;;;;:::o;7791:468::-;7856:6;7864;7913:2;7901:9;7892:7;7888:23;7884:32;7881:2;;;7919:79;;:::i;:::-;7881:2;8039:1;8064:53;8109:7;8100:6;8089:9;8085:22;8064:53;:::i;:::-;8054:63;;8010:117;8166:2;8192:50;8234:7;8225:6;8214:9;8210:22;8192:50;:::i;:::-;8182:60;;8137:115;7871:388;;;;;:::o;8265:474::-;8333:6;8341;8390:2;8378:9;8369:7;8365:23;8361:32;8358:2;;;8396:79;;:::i;:::-;8358:2;8516:1;8541:53;8586:7;8577:6;8566:9;8562:22;8541:53;:::i;:::-;8531:63;;8487:117;8643:2;8669:53;8714:7;8705:6;8694:9;8690:22;8669:53;:::i;:::-;8659:63;;8614:118;8348:391;;;;;:::o;8745:704::-;8840:6;8848;8856;8905:2;8893:9;8884:7;8880:23;8876:32;8873:2;;;8911:79;;:::i;:::-;8873:2;9059:1;9048:9;9044:17;9031:31;9089:18;9081:6;9078:30;9075:2;;;9111:79;;:::i;:::-;9075:2;9224:80;9296:7;9287:6;9276:9;9272:22;9224:80;:::i;:::-;9206:98;;;;9002:312;9353:2;9379:53;9424:7;9415:6;9404:9;9400:22;9379:53;:::i;:::-;9369:63;;9324:118;8863:586;;;;;:::o;9455:894::-;9573:6;9581;9630:2;9618:9;9609:7;9605:23;9601:32;9598:2;;;9636:79;;:::i;:::-;9598:2;9784:1;9773:9;9769:17;9756:31;9814:18;9806:6;9803:30;9800:2;;;9836:79;;:::i;:::-;9800:2;9941:78;10011:7;10002:6;9991:9;9987:22;9941:78;:::i;:::-;9931:88;;9727:302;10096:2;10085:9;10081:18;10068:32;10127:18;10119:6;10116:30;10113:2;;;10149:79;;:::i;:::-;10113:2;10254:78;10324:7;10315:6;10304:9;10300:22;10254:78;:::i;:::-;10244:88;;10039:303;9588:761;;;;;:::o;10355:327::-;10413:6;10462:2;10450:9;10441:7;10437:23;10433:32;10430:2;;;10468:79;;:::i;:::-;10430:2;10588:1;10613:52;10657:7;10648:6;10637:9;10633:22;10613:52;:::i;:::-;10603:62;;10559:116;10420:262;;;;:::o;10688:349::-;10757:6;10806:2;10794:9;10785:7;10781:23;10777:32;10774:2;;;10812:79;;:::i;:::-;10774:2;10932:1;10957:63;11012:7;11003:6;10992:9;10988:22;10957:63;:::i;:::-;10947:73;;10903:127;10764:273;;;;:::o;11043:329::-;11102:6;11151:2;11139:9;11130:7;11126:23;11122:32;11119:2;;;11157:79;;:::i;:::-;11119:2;11277:1;11302:53;11347:7;11338:6;11327:9;11323:22;11302:53;:::i;:::-;11292:63;;11248:117;11109:263;;;;:::o;11378:179::-;11447:10;11468:46;11510:3;11502:6;11468:46;:::i;:::-;11546:4;11541:3;11537:14;11523:28;;11458:99;;;;:::o;11563:118::-;11650:24;11668:5;11650:24;:::i;:::-;11645:3;11638:37;11628:53;;:::o;11717:732::-;11836:3;11865:54;11913:5;11865:54;:::i;:::-;11935:86;12014:6;12009:3;11935:86;:::i;:::-;11928:93;;12045:56;12095:5;12045:56;:::i;:::-;12124:7;12155:1;12140:284;12165:6;12162:1;12159:13;12140:284;;;12241:6;12235:13;12268:63;12327:3;12312:13;12268:63;:::i;:::-;12261:70;;12354:60;12407:6;12354:60;:::i;:::-;12344:70;;12200:224;12187:1;12184;12180:9;12175:14;;12140:284;;;12144:14;12440:3;12433:10;;11841:608;;;;;;;:::o;12455:109::-;12536:21;12551:5;12536:21;:::i;:::-;12531:3;12524:34;12514:50;;:::o;12570:360::-;12656:3;12684:38;12716:5;12684:38;:::i;:::-;12738:70;12801:6;12796:3;12738:70;:::i;:::-;12731:77;;12817:52;12862:6;12857:3;12850:4;12843:5;12839:16;12817:52;:::i;:::-;12894:29;12916:6;12894:29;:::i;:::-;12889:3;12885:39;12878:46;;12660:270;;;;;:::o;12936:364::-;13024:3;13052:39;13085:5;13052:39;:::i;:::-;13107:71;13171:6;13166:3;13107:71;:::i;:::-;13100:78;;13187:52;13232:6;13227:3;13220:4;13213:5;13209:16;13187:52;:::i;:::-;13264:29;13286:6;13264:29;:::i;:::-;13259:3;13255:39;13248:46;;13028:272;;;;;:::o;13306:366::-;13448:3;13469:67;13533:2;13528:3;13469:67;:::i;:::-;13462:74;;13545:93;13634:3;13545:93;:::i;:::-;13663:2;13658:3;13654:12;13647:19;;13452:220;;;:::o;13678:366::-;13820:3;13841:67;13905:2;13900:3;13841:67;:::i;:::-;13834:74;;13917:93;14006:3;13917:93;:::i;:::-;14035:2;14030:3;14026:12;14019:19;;13824:220;;;:::o;14050:366::-;14192:3;14213:67;14277:2;14272:3;14213:67;:::i;:::-;14206:74;;14289:93;14378:3;14289:93;:::i;:::-;14407:2;14402:3;14398:12;14391:19;;14196:220;;;:::o;14422:366::-;14564:3;14585:67;14649:2;14644:3;14585:67;:::i;:::-;14578:74;;14661:93;14750:3;14661:93;:::i;:::-;14779:2;14774:3;14770:12;14763:19;;14568:220;;;:::o;14794:366::-;14936:3;14957:67;15021:2;15016:3;14957:67;:::i;:::-;14950:74;;15033:93;15122:3;15033:93;:::i;:::-;15151:2;15146:3;15142:12;15135:19;;14940:220;;;:::o;15166:366::-;15308:3;15329:67;15393:2;15388:3;15329:67;:::i;:::-;15322:74;;15405:93;15494:3;15405:93;:::i;:::-;15523:2;15518:3;15514:12;15507:19;;15312:220;;;:::o;15538:366::-;15680:3;15701:67;15765:2;15760:3;15701:67;:::i;:::-;15694:74;;15777:93;15866:3;15777:93;:::i;:::-;15895:2;15890:3;15886:12;15879:19;;15684:220;;;:::o;15910:366::-;16052:3;16073:67;16137:2;16132:3;16073:67;:::i;:::-;16066:74;;16149:93;16238:3;16149:93;:::i;:::-;16267:2;16262:3;16258:12;16251:19;;16056:220;;;:::o;16282:366::-;16424:3;16445:67;16509:2;16504:3;16445:67;:::i;:::-;16438:74;;16521:93;16610:3;16521:93;:::i;:::-;16639:2;16634:3;16630:12;16623:19;;16428:220;;;:::o;16654:366::-;16796:3;16817:67;16881:2;16876:3;16817:67;:::i;:::-;16810:74;;16893:93;16982:3;16893:93;:::i;:::-;17011:2;17006:3;17002:12;16995:19;;16800:220;;;:::o;17026:366::-;17168:3;17189:67;17253:2;17248:3;17189:67;:::i;:::-;17182:74;;17265:93;17354:3;17265:93;:::i;:::-;17383:2;17378:3;17374:12;17367:19;;17172:220;;;:::o;17398:108::-;17475:24;17493:5;17475:24;:::i;:::-;17470:3;17463:37;17453:53;;:::o;17512:118::-;17599:24;17617:5;17599:24;:::i;:::-;17594:3;17587:37;17577:53;;:::o;17636:1053::-;17959:4;17997:3;17986:9;17982:19;17974:27;;18011:71;18079:1;18068:9;18064:17;18055:6;18011:71;:::i;:::-;18092:72;18160:2;18149:9;18145:18;18136:6;18092:72;:::i;:::-;18211:9;18205:4;18201:20;18196:2;18185:9;18181:18;18174:48;18239:108;18342:4;18333:6;18239:108;:::i;:::-;18231:116;;18394:9;18388:4;18384:20;18379:2;18368:9;18364:18;18357:48;18422:108;18525:4;18516:6;18422:108;:::i;:::-;18414:116;;18578:9;18572:4;18568:20;18562:3;18551:9;18547:19;18540:49;18606:76;18677:4;18668:6;18606:76;:::i;:::-;18598:84;;17964:725;;;;;;;;:::o;18695:751::-;18918:4;18956:3;18945:9;18941:19;18933:27;;18970:71;19038:1;19027:9;19023:17;19014:6;18970:71;:::i;:::-;19051:72;19119:2;19108:9;19104:18;19095:6;19051:72;:::i;:::-;19133;19201:2;19190:9;19186:18;19177:6;19133:72;:::i;:::-;19215;19283:2;19272:9;19268:18;19259:6;19215:72;:::i;:::-;19335:9;19329:4;19325:20;19319:3;19308:9;19304:19;19297:49;19363:76;19434:4;19425:6;19363:76;:::i;:::-;19355:84;;18923:523;;;;;;;;:::o;19452:373::-;19595:4;19633:2;19622:9;19618:18;19610:26;;19682:9;19676:4;19672:20;19668:1;19657:9;19653:17;19646:47;19710:108;19813:4;19804:6;19710:108;:::i;:::-;19702:116;;19600:225;;;;:::o;19831:634::-;20052:4;20090:2;20079:9;20075:18;20067:26;;20139:9;20133:4;20129:20;20125:1;20114:9;20110:17;20103:47;20167:108;20270:4;20261:6;20167:108;:::i;:::-;20159:116;;20322:9;20316:4;20312:20;20307:2;20296:9;20292:18;20285:48;20350:108;20453:4;20444:6;20350:108;:::i;:::-;20342:116;;20057:408;;;;;:::o;20471:210::-;20558:4;20596:2;20585:9;20581:18;20573:26;;20609:65;20671:1;20660:9;20656:17;20647:6;20609:65;:::i;:::-;20563:118;;;;:::o;20687:313::-;20800:4;20838:2;20827:9;20823:18;20815:26;;20887:9;20881:4;20877:20;20873:1;20862:9;20858:17;20851:47;20915:78;20988:4;20979:6;20915:78;:::i;:::-;20907:86;;20805:195;;;;:::o;21006:419::-;21172:4;21210:2;21199:9;21195:18;21187:26;;21259:9;21253:4;21249:20;21245:1;21234:9;21230:17;21223:47;21287:131;21413:4;21287:131;:::i;:::-;21279:139;;21177:248;;;:::o;21431:419::-;21597:4;21635:2;21624:9;21620:18;21612:26;;21684:9;21678:4;21674:20;21670:1;21659:9;21655:17;21648:47;21712:131;21838:4;21712:131;:::i;:::-;21704:139;;21602:248;;;:::o;21856:419::-;22022:4;22060:2;22049:9;22045:18;22037:26;;22109:9;22103:4;22099:20;22095:1;22084:9;22080:17;22073:47;22137:131;22263:4;22137:131;:::i;:::-;22129:139;;22027:248;;;:::o;22281:419::-;22447:4;22485:2;22474:9;22470:18;22462:26;;22534:9;22528:4;22524:20;22520:1;22509:9;22505:17;22498:47;22562:131;22688:4;22562:131;:::i;:::-;22554:139;;22452:248;;;:::o;22706:419::-;22872:4;22910:2;22899:9;22895:18;22887:26;;22959:9;22953:4;22949:20;22945:1;22934:9;22930:17;22923:47;22987:131;23113:4;22987:131;:::i;:::-;22979:139;;22877:248;;;:::o;23131:419::-;23297:4;23335:2;23324:9;23320:18;23312:26;;23384:9;23378:4;23374:20;23370:1;23359:9;23355:17;23348:47;23412:131;23538:4;23412:131;:::i;:::-;23404:139;;23302:248;;;:::o;23556:419::-;23722:4;23760:2;23749:9;23745:18;23737:26;;23809:9;23803:4;23799:20;23795:1;23784:9;23780:17;23773:47;23837:131;23963:4;23837:131;:::i;:::-;23829:139;;23727:248;;;:::o;23981:419::-;24147:4;24185:2;24174:9;24170:18;24162:26;;24234:9;24228:4;24224:20;24220:1;24209:9;24205:17;24198:47;24262:131;24388:4;24262:131;:::i;:::-;24254:139;;24152:248;;;:::o;24406:419::-;24572:4;24610:2;24599:9;24595:18;24587:26;;24659:9;24653:4;24649:20;24645:1;24634:9;24630:17;24623:47;24687:131;24813:4;24687:131;:::i;:::-;24679:139;;24577:248;;;:::o;24831:419::-;24997:4;25035:2;25024:9;25020:18;25012:26;;25084:9;25078:4;25074:20;25070:1;25059:9;25055:17;25048:47;25112:131;25238:4;25112:131;:::i;:::-;25104:139;;25002:248;;;:::o;25256:419::-;25422:4;25460:2;25449:9;25445:18;25437:26;;25509:9;25503:4;25499:20;25495:1;25484:9;25480:17;25473:47;25537:131;25663:4;25537:131;:::i;:::-;25529:139;;25427:248;;;:::o;25681:222::-;25774:4;25812:2;25801:9;25797:18;25789:26;;25825:71;25893:1;25882:9;25878:17;25869:6;25825:71;:::i;:::-;25779:124;;;;:::o;25909:332::-;26030:4;26068:2;26057:9;26053:18;26045:26;;26081:71;26149:1;26138:9;26134:17;26125:6;26081:71;:::i;:::-;26162:72;26230:2;26219:9;26215:18;26206:6;26162:72;:::i;:::-;26035:206;;;;;:::o;26247:129::-;26281:6;26308:20;;:::i;:::-;26298:30;;26337:33;26365:4;26357:6;26337:33;:::i;:::-;26288:88;;;:::o;26382:75::-;26415:6;26448:2;26442:9;26432:19;;26422:35;:::o;26463:311::-;26540:4;26630:18;26622:6;26619:30;26616:2;;;26652:18;;:::i;:::-;26616:2;26702:4;26694:6;26690:17;26682:25;;26762:4;26756;26752:15;26744:23;;26545:229;;;:::o;26780:311::-;26857:4;26947:18;26939:6;26936:30;26933:2;;;26969:18;;:::i;:::-;26933:2;27019:4;27011:6;27007:17;26999:25;;27079:4;27073;27069:15;27061:23;;26862:229;;;:::o;27097:307::-;27158:4;27248:18;27240:6;27237:30;27234:2;;;27270:18;;:::i;:::-;27234:2;27308:29;27330:6;27308:29;:::i;:::-;27300:37;;27392:4;27386;27382:15;27374:23;;27163:241;;;:::o;27410:132::-;27477:4;27500:3;27492:11;;27530:4;27525:3;27521:14;27513:22;;27482:60;;;:::o;27548:114::-;27615:6;27649:5;27643:12;27633:22;;27622:40;;;:::o;27668:98::-;27719:6;27753:5;27747:12;27737:22;;27726:40;;;:::o;27772:99::-;27824:6;27858:5;27852:12;27842:22;;27831:40;;;:::o;27877:113::-;27947:4;27979;27974:3;27970:14;27962:22;;27952:38;;;:::o;27996:184::-;28095:11;28129:6;28124:3;28117:19;28169:4;28164:3;28160:14;28145:29;;28107:73;;;;:::o;28186:168::-;28269:11;28303:6;28298:3;28291:19;28343:4;28338:3;28334:14;28319:29;;28281:73;;;;:::o;28360:169::-;28444:11;28478:6;28473:3;28466:19;28518:4;28513:3;28509:14;28494:29;;28456:73;;;;:::o;28535:305::-;28575:3;28594:20;28612:1;28594:20;:::i;:::-;28589:25;;28628:20;28646:1;28628:20;:::i;:::-;28623:25;;28782:1;28714:66;28710:74;28707:1;28704:81;28701:2;;;28788:18;;:::i;:::-;28701:2;28832:1;28829;28825:9;28818:16;;28579:261;;;;:::o;28846:96::-;28883:7;28912:24;28930:5;28912:24;:::i;:::-;28901:35;;28891:51;;;:::o;28948:90::-;28982:7;29025:5;29018:13;29011:21;29000:32;;28990:48;;;:::o;29044:149::-;29080:7;29120:66;29113:5;29109:78;29098:89;;29088:105;;;:::o;29199:126::-;29236:7;29276:42;29269:5;29265:54;29254:65;;29244:81;;;:::o;29331:77::-;29368:7;29397:5;29386:16;;29376:32;;;:::o;29414:154::-;29498:6;29493:3;29488;29475:30;29560:1;29551:6;29546:3;29542:16;29535:27;29465:103;;;:::o;29574:307::-;29642:1;29652:113;29666:6;29663:1;29660:13;29652:113;;;29751:1;29746:3;29742:11;29736:18;29732:1;29727:3;29723:11;29716:39;29688:2;29685:1;29681:10;29676:15;;29652:113;;;29783:6;29780:1;29777:13;29774:2;;;29863:1;29854:6;29849:3;29845:16;29838:27;29774:2;29623:258;;;;:::o;29887:320::-;29931:6;29968:1;29962:4;29958:12;29948:22;;30015:1;30009:4;30005:12;30036:18;30026:2;;30092:4;30084:6;30080:17;30070:27;;30026:2;30154;30146:6;30143:14;30123:18;30120:38;30117:2;;;30173:18;;:::i;:::-;30117:2;29938:269;;;;:::o;30213:281::-;30296:27;30318:4;30296:27;:::i;:::-;30288:6;30284:40;30426:6;30414:10;30411:22;30390:18;30378:10;30375:34;30372:62;30369:2;;;30437:18;;:::i;:::-;30369:2;30477:10;30473:2;30466:22;30256:238;;;:::o;30500:233::-;30539:3;30562:24;30580:5;30562:24;:::i;:::-;30553:33;;30608:66;30601:5;30598:77;30595:2;;;30678:18;;:::i;:::-;30595:2;30725:1;30718:5;30714:13;30707:20;;30543:190;;;:::o;30739:180::-;30787:77;30784:1;30777:88;30884:4;30881:1;30874:15;30908:4;30905:1;30898:15;30925:180;30973:77;30970:1;30963:88;31070:4;31067:1;31060:15;31094:4;31091:1;31084:15;31111:180;31159:77;31156:1;31149:88;31256:4;31253:1;31246:15;31280:4;31277:1;31270:15;31297:180;31345:77;31342:1;31335:88;31442:4;31439:1;31432:15;31466:4;31463:1;31456:15;31483:183;31518:3;31556:1;31538:16;31535:23;31532:2;;;31594:1;31591;31588;31573:23;31616:34;31647:1;31641:8;31616:34;:::i;:::-;31609:41;;31532:2;31522:144;:::o;31672:117::-;31781:1;31778;31771:12;31795:117;31904:1;31901;31894:12;31918:117;32027:1;32024;32017:12;32041:117;32150:1;32147;32140:12;32164:117;32273:1;32270;32263:12;32287:117;32396:1;32393;32386:12;32410:102;32451:6;32502:2;32498:7;32493:2;32486:5;32482:14;32478:28;32468:38;;32458:54;;;:::o;32518:106::-;32562:8;32611:5;32606:3;32602:15;32581:36;;32571:53;;;:::o;32630:239::-;32770:34;32766:1;32758:6;32754:14;32747:58;32839:22;32834:2;32826:6;32822:15;32815:47;32736:133;:::o;32875:227::-;33015:34;33011:1;33003:6;32999:14;32992:58;33084:10;33079:2;33071:6;33067:15;33060:35;32981:121;:::o;33108:230::-;33248:34;33244:1;33236:6;33232:14;33225:58;33317:13;33312:2;33304:6;33300:15;33293:38;33214:124;:::o;33344:228::-;33484:34;33480:1;33472:6;33468:14;33461:58;33553:11;33548:2;33540:6;33536:15;33529:36;33450:122;:::o;33578:224::-;33718:34;33714:1;33706:6;33702:14;33695:58;33787:7;33782:2;33774:6;33770:15;33763:32;33684:118;:::o;33808:237::-;33948:34;33944:1;33936:6;33932:14;33925:58;34017:20;34012:2;34004:6;34000:15;33993:45;33914:131;:::o;34051:229::-;34191:34;34187:1;34179:6;34175:14;34168:58;34260:12;34255:2;34247:6;34243:15;34236:37;34157:123;:::o;34286:228::-;34426:34;34422:1;34414:6;34410:14;34403:58;34495:11;34490:2;34482:6;34478:15;34471:36;34392:122;:::o;34520:228::-;34660:34;34656:1;34648:6;34644:14;34637:58;34729:11;34724:2;34716:6;34712:15;34705:36;34626:122;:::o;34754:227::-;34894:34;34890:1;34882:6;34878:14;34871:58;34963:10;34958:2;34950:6;34946:15;34939:35;34860:121;:::o;34987:220::-;35127:34;35123:1;35115:6;35111:14;35104:58;35196:3;35191:2;35183:6;35179:15;35172:28;35093:114;:::o;35213:711::-;35252:3;35290:4;35272:16;35269:26;35266:2;;;35298:5;;35266:2;35327:20;;:::i;:::-;35402:1;35384:16;35380:24;35377:1;35371:4;35356:49;35435:4;35429:11;35534:16;35527:4;35519:6;35515:17;35512:39;35479:18;35471:6;35468:30;35452:113;35449:2;;;35580:5;;;;35449:2;35626:6;35620:4;35616:17;35662:3;35656:10;35689:18;35681:6;35678:30;35675:2;;;35711:5;;;;;;35675:2;35759:6;35752:4;35747:3;35743:14;35739:27;35818:1;35800:16;35796:24;35790:4;35786:35;35781:3;35778:44;35775:2;;;35825:5;;;;;;;35775:2;35842:57;35890:6;35884:4;35880:17;35872:6;35868:30;35862:4;35842:57;:::i;:::-;35915:3;35908:10;;35256:668;;;;;;;:::o;35930:122::-;36003:24;36021:5;36003:24;:::i;:::-;35996:5;35993:35;35983:2;;36042:1;36039;36032:12;35983:2;35973:79;:::o;36058:116::-;36128:21;36143:5;36128:21;:::i;:::-;36121:5;36118:32;36108:2;;36164:1;36161;36154:12;36108:2;36098:76;:::o;36180:120::-;36252:23;36269:5;36252:23;:::i;:::-;36245:5;36242:34;36232:2;;36290:1;36287;36280:12;36232:2;36222:78;:::o;36306:122::-;36379:24;36397:5;36379:24;:::i;:::-;36372:5;36369:35;36359:2;;36418:1;36415;36408:12;36359:2;36349:79;:::o
Swarm Source
ipfs://2020193b792401630cee3d4c957469a905373b6daed5da5b1a3ac8f108d070d6
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.